Untergrundstreuung ohne Strahlen?

7

Einige Spiele behaupten, unterirdische Streuung zu verwenden, aber mein derzeitiges Verständnis von sss wird nur mit Raytracing erreicht. Wie würden Sie Streuung unter der Oberfläche ohne Raytracing durchführen? Behaupten Sie, sss zu verwenden, aber verwenden Sie wirklich einen Approximationstrick, der keine Strahlen verwendet. Ich kann mir nicht einmal vorstellen, das Folgende in Echtzeit zu tun. Geben Sie hier die Bildbeschreibung ein

Andrew Wilson
quelle
1
Ein Ansatz kann darin bestehen, die Rückseiten eines Netzes in einen Tiefenpuffer zu rendern, um eine "optische Tiefe" zu berechnen, die für hochkonkave Netze nicht so gut funktioniert, aber anständig genug aussieht. http.developer.nvidia.com/GPUGems/gpugems_ch16.html
PaulHK

Antworten:

8

Es gibt viele Möglichkeiten, SSS mit mehr oder weniger hoher Genauigkeit zu fälschen. Einige neuere Methoden:

  • Verwischen des Bildschirmraums der Objektbeleuchtung ( hier ausführlich beschrieben )

Unschärfe des Bildschirmraums

  • Verwenden von "inneren" Umgebungsokklusionskarten, die aus einer normal gespiegelten Version der Geometrie generiert wurden, um die lokale Dicke zu approximieren, und eine einfache Möglichkeit, die Lichtdurchlässigkeit zu fälschen (weitere Informationen hier , mit einem Nachtrag hier )

lokale Dickenkarte

Es gibt auch eine Reihe von Techniken in dem GPU Gems-Artikel, mit dem PaulHK verlinkt ist. Eine Sache, die ich hinzufügen möchte, ist der zu Beginn erwähnte Light-Falloff-Textur-Ansatz, den Valve zusätzlich zu gefälschtem SSS $lightwarptexturefür einige interessante Effekte in Quellenspielen verwendet hat. Weitere Informationen hierzu finden Sie in der Dokumentation.

Illustrative Darstellung von Team Fortress 2

Noah Witherspoon
quelle
3
Ein weiteres gutes ist Pre-Integrated Skin Shading von SIGGRAPH vor einigen Jahren.
Nathan Reed