PRT-Gleichungen (Direct3D 9)

Um einen Shader, der PRT implementiert, vollständig zu verstehen, ist es hilfreich, die Formel abzuleiten, die der Shader zum Berechnen der Ausgangs Strahlung verwendet.

Um zu beginnen, ist die folgende Gleichung die allgemeine Gleichung zur Berechnung der Beendigungs Strahlen, die sich aus der direkten Beleuchtung eines diffusen Objekts mit willkürlicher, entfernter Beleuchtung ergibt.

Gleichung der Beendigungs Strahlung, die sich aus der direkten Beleuchtung eines diffusen Objekts mit willkürlicher, entfernter Beleuchtung ergibt

Dabei gilt Folgendes:

Parameter BESCHREIBUNG
Neutraler Der Ausgangs Glanz bei Scheitelpunkt p. Ausgewertet an jedem Scheitelpunkt im Mesh.
pd Die Albedo der Oberfläche.
pi Eine Konstante, die als normalisierungs Faktor für die Energieeinsparung verwendet wird.
L (s) Die Beleuchtungs Umgebung (Quell Ausstrahlung).
VP ₍ s ₎ Eine binäre Sichtbarkeits Funktion für Punkt p. Der Wert ist 1, wenn der Punkt das Licht sehen kann, andernfalls 0.
HNP ₍ s ₎ Der Kosinus Begriff von Lambert-Gesetz. Gleich max ((NP = s), 0), wobei NP die Oberflächen normale an Punkt p ist.
s Die Variable, die in die Kugel integriert ist.

Durch die Verwendung von sphärischen Basisfunktionen, wie z. b. sphärischen Harmonics, gleicht die folgende Gleichung der Beleuchtungs Umgebung

Gleichung der Beleuchtungs Umgebung

Dabei gilt Folgendes:

Parameter BESCHREIBUNG
L (s) Die Beleuchtungs Umgebung (Quell Ausstrahlung).
i Eine ganze Zahl, die die Anzahl der Basisfunktionen summiert.
O Die Reihenfolge der sphärischen Harmonics.
li Ein Koeffizient.
Yi (s) Eine Basis Funktion über der Kugel.

Die Auflistung dieser Koeffizienten, L ", bietet die optimale Näherung für die Funktion l (s) mit den Basisfunktionen Y (s). Durch ersetzen und verteilen ergibt sich die folgende Gleichung.

Gleichung der Beendigungs Strahlung nach dem Ersetzen von l (s) und verteilen

Der integrale Wert von Yi (s)VP ₍ s ₎ HNP ₍ s ₎ ist ein Transfer Koeffizienten tPi , den der Simulator für jeden Scheitelpunkt im Mesh vorberechnet. Wenn Sie ersetzen, wird die folgende Gleichung erzeugt.

Gleichung der Beendigungs Glanz, nachdem der Übertragungskoeffizienten ersetzt wurde.

Wenn Sie dies in eine Vektor Notation ändern, ergibt sich die folgende nicht komprimierte Gleichung, um die Ausgangs Glanz für jeden Kanal zu berechnen

Gleichung der Beendigungs Strahlung nach dem Wechsel zur Vektor Notation

Dabei gilt Folgendes:

Parameter BESCHREIBUNG
Neutraler Der Ausgangs Glanz bei Scheitelpunkt p.
pd Die Albedo der Oberfläche.
Int Der Vektor von liund ist die Projektion der Quell Ausstrahlung in die kugelförmigen harmonischen Basisfunktionen. Dies ist ein Order ²-Vektor mit sphärischen harmonischen Koeffizient.
TP Ein "Order ²"-Übertragungs Vektor für Vertex p. Der Simulator dividiert die Übertragungskoeffizienten durch p.

Beide Vektoren sind ein Order ²-Vektor mit sphärischen harmonischen Koeffizienten. Beachten Sie, dass es sich hierbei einfach um ein Punktprodukt handelt. Abhängig von der Bestellung kann der Punkt teuer sein, sodass die Komprimierung verwendet werden kann. Mit einem Algorithmus namens "Clustered Principal Component Analysis (CPCA)" werden die Daten effizient komprimiert. Dies ermöglicht die Verwendung einer sphärischen harmonischen Näherung höherer Ordnung, was zu schärferen Schatten führt.

CPCA stellt die folgende Gleichung bereit, um den Übertragungs Vektor anzugleichen.

Gleichung des ungefäckten Übertragungs Vektors

Dabei gilt Folgendes:

Parameter BESCHREIBUNG
TP Der Übertragungs Vektor für Scheitelpunkt p.
Gegründete Der Mittelwert für Cluster k.
j Eine ganze Zahl, die die Anzahl der PCA-Vektoren summiert.
N Die Anzahl der PCA-Vektoren.
w-PJ Die Jth-PCA-Gewichtung für Punkt p.
B-kJ Der Jth PCA-Basis Vektor für Cluster k.

Ein Cluster ist einfach eine bestimmte Anzahl von Vertices, die denselben Mittel Vektor verwenden. Im folgenden wird erläutert, wie der Cluster Mittelwert, die PCA-Gewichtungen, die PCA-Basis Vektoren und die Cluster-IDs für die Scheitel Punkte erläutert werden.

Durch diese beiden Gleichungen ergibt sich Folgendes:

Gleichung der Beendigungs Glanz, nachdem der Übertragungs Vektor ersetzt wurde.

Anschließend ergibt die Verteilung des Punkt Produkts die folgende Gleichung.

Gleichung der Beendigungs Glanz nach der Verteilung des Punkt Produkts

Da beide (MK) L ') und (BkJ) L ') sind konstant pro Scheitelpunkt. das Beispiel berechnet diese Werte mit der CPU und übergibt sie als Konstanten an den Vertexshader. Da sich wPJ für jeden Scheitelpunkt ändert, speichert das Beispiel diese pro-Vertex-Daten im Scheitelpunkt Puffer.

Voraus berechnete Strahlungs Übertragung