PRT-Gleichungen (Direct3D 9)
Um einen Shader, der PRT implementiert, vollständig zu verstehen, ist es hilfreich, die Formel zu leiten, die der Shader zum Berechnen der Beendigungsausdance verwendet.
Zu Beginn ist die folgende Gleichung die allgemeine Gleichung, um die Exitauslösung zu berechnen, die sich aus der direkten Beleuchtung eines diffusen Objekts mit beliebiger entfernter Beleuchtung ergibt.

Dabei gilt Folgendes:
| Parameter | Beschreibung |
|---|---|
| Rp | Die Beendigungsausdance am Scheitelpunkt p. Wird an jedem Scheitelpunkt im Gitternetz ausgewertet. |
| pd | Der Albedo der Oberfläche. |
| pi | Eine Konstante, die als Energienormalisierungsfaktor verwendet wird. |
| L(s) | Die Beleuchtungsumgebung (Quelllicht). |
| Vp₍s₎ | Eine binäre Sichtbarkeitsfunktion für Punkt p. Es ist 1, wenn der Punkt das Licht sehen kann, 0, wenn nicht. |
| Hnp₍s₎ | Der Kosinusbegriff aus lamberts Gesetz. Entspricht max((Np· s), 0, wobei Np die Normale Oberfläche an Punkt p ist. |
| s | Die Variable, die über die Kugel integriert wird. |
Mithilfe von pherischen Basisfunktionen, z. B. pherischen Kugeln, entspricht die folgende Gleichung der Beleuchtungsumgebung.

Dabei gilt Folgendes:
| Parameter | Beschreibung |
|---|---|
| L(s) | Die Beleuchtungsumgebung (Quelllicht). |
| i | Eine ganze Zahl, die die Anzahl der Basisfunktionen summiert. |
| O | Die Reihenfolge der pherischen Trophäen. |
| li | Ein Koeffizient. |
| Yi(s) | Eine Basisfunktion über der Kugel. |
Die Auflistung dieser Koeffizienten, L', stellt die optimale Näherung für Funktion L(s) mit den Basisfunktionen Y(s) zur Verfügung. Das Durchsubstituieren und Verteilen ergibt die folgende Gleichung.

Das Integral von Yi(s)Vp₍s₎Hnp₍s₎ ist ein Übertragungskoeffizient tpi, der vom Simulator für jeden Scheitelpunkt im Netz vorbesetzt wird. Durch Dies wird die folgende Gleichung ergeben.

Wenn Sie dies in Vektor notation ändern, ergibt sich die folgende unkomprimierte Gleichung, um die Beendigungsausdance für jeden Kanal zu berechnen.

Dabei gilt Folgendes:
| Parameter | Beschreibung |
|---|---|
| Rp | Die Beendigungsausdance am Scheitelpunkt p. |
| pd | Der Albedo der Oberfläche. |
| L' | Der Vektor von liund ist die Projektion der Quellauslassung in die pherischen Basisfunktionen der Tropen. Dies ist ein Order-2-Vektor aus pherischen Koeffizienten. |
| Tp | Ein Order 2-Übertragungsvektor für Scheitelpunkt p. Der Simulator dividiert die Übertragungskoeffizienten durch p. |
Beide Vektoren sind ein Order-2-Vektor aus pherischen Koeffizienten. Beachten Sie daher, dass es sich hierbei einfach um ein Punktprodukt handelt. Je nach Reihenfolge kann der Punkt teuer sein, sodass die Komprimierung verwendet werden kann. Ein Algorithmus namens Clustered Principal Component Analysis (CPCA) komprimiert die Daten effizient. Dies ermöglicht die Verwendung einer pherischen näherungsförmigen Näherung höherer Ordnung, was zu schärferen Schatten führt.
CPCA stellt die folgende Gleichung zur Ungefährung des Übertragungsvektors zur Folge.

Dabei gilt Folgendes:
| Parameter | Beschreibung |
|---|---|
| Tp | Der Übertragungsvektor für Scheitelpunkt p. |
| Mk | Der Mittelwert für Cluster k. |
| j | Eine ganze Zahl, die die Anzahl der PCA-Vektoren summiert. |
| N | Die Anzahl der PCA-Vektoren. |
| wpj | Die jth PCA-Gewichtung für Punkt p. |
| Bkj | Der jth PCA-Basisvektor für Cluster k. |
Ein Cluster ist einfach eine Reihe von Scheitelzeichen, die denselben mittleren Vektor verwenden. Im Folgenden wird erläutert, wie Sie den Mittelwert des Clusters, die PCA-Gewichtungen, die PCA-Basisvektoren und die Cluster-IDs für die Scheitelungen erhalten.
Durch die Ersetzung dieser beiden Gleichungen ergibt sich Folgendes:

Anschließend ergibt die Verteilung des Punktprodukts die folgende Gleichung.

Da beides (Mk· L') und (Bkj· L') sind konstant pro Scheitelpunkt. Im Beispiel werden diese Werte mit der CPU berechnet und als Konstanten an den Vertex-Shader übergibt. Da sichw pj für jeden Scheitelpunkt ändert, speichert das Beispiel diese Pro-Scheitelpunkt-Daten im Scheitelpunktpuffer.