Equazioni PRT (Direct3D 9)

Per comprendere completamente un shader che implementa LAT, è utile derivare la formula usata dal shader per calcolare la luminosità di uscita.

Per iniziare, l'equazione seguente è l'equazione generale per calcolare la radiazione di uscita risultante dall'illuminazione diretta su un oggetto diffuso con illuminazione distante arbitraria.

equation of the exit radiance resulting from direct lighting on a diffuse object with arbitrary distant lighting

dove:

Parametro Descrizione
Rp Radianza di uscita al vertice p. Valutata in ogni vertice della mesh.
pd Albedo della superficie.
pi Costante, utilizzata come fattore di normalizzazione della normalizzazione della conservazione dell'energia.
L(s) Ambiente di illuminazione (radianza di origine).
Vp₍s₎ Funzione di visibilità binaria per il punto p. È 1 se il punto può vedere la luce, 0 se non.
Hnp₍s₎ Il termine cosno dalla legge di Lambert. Uguale a max(Np· s), 0) dove Np è la superficie normale al punto p.
s Variabile che si integra sulla sfera.

 

Usando funzioni di base sferica, ad esempio armonica sferica, l'equazione seguente approssima l'ambiente di illuminazione.

equation of the lighting environment

dove:

Parametro Descrizione
L(s) Ambiente di illuminazione (radianza di origine).
i Intero che somma il numero di funzioni di base.
O Ordine di armonica sferica.
li Coefficiente.
Yi(s) Alcune funzioni di base sulla sfera.

 

La raccolta di questi coefficienti, L', fornisce l'approssimazione ottimale per le funzioni L(s) con le funzioni di base Y(s). La sostituzione e la distribuzione restituisce l'equazione seguente.

equation of the exit radiance after substituting l(s) and distributing

L'integrale di Yi(s)Vp₍s₎Hnp₍s₎ è un coefficiente di trasferimento tpi che il simulatore precompute per ogni vertice sulla mesh. La sostituzione di questo restituisce l'equazione seguente.

equation of the exit radiance after substituting the transfer coefficient

La modifica di questa opzione in notazione vettoriale restituisce l'equazione non compressa seguente per calcolare la radiazione di uscita per ogni canale.

equation of the exit radiance after changing to vector notation

dove:

Parametro Descrizione
Rp Radianza di uscita al vertice p.
pd Albedo della superficie.
L' Il vettore di li ed è la proiezione della radiazione di origine nelle funzioni di base armonica sferica. Si tratta di un vettore order² di coefficienti armonici sferici.
Tp Vettore di trasferimento order² per vertex p. Il simulatore divide i coefficienti di trasferimento per p.

 

Entrambi questi vettori sono un vettore order² di coefficienti armonici sferici, quindi si noti che questo è semplicemente un prodotto punto. A seconda dell'ordine, il punto può essere costoso in modo che la compressione possa essere usata. Un algoritmo denominato Clustered Principal Component Analysis (CPCA) comprime in modo efficiente i dati. Ciò consente l'uso di un'approssimazione armonica a ordine superiore che comporta ombreggiature più nitide.

CPCA fornisce l'equazione seguente per approssimare il vettore di trasferimento.

equation of the approximated transfer vector

dove:

Parametro Descrizione
Tp Vettore di trasferimento per vertex p.
Mk Media per cluster k.
j Intero che somma il numero di vettori PCA.
N Numero di vettori PCA.
wpj Peso jth PCA per punto p.
Bkj Vettore di base jth PCA per cluster k.

 

Un cluster è semplicemente un numero di vertici che condividono lo stesso vettore medio. Come ottenere la media del cluster, i pesi PCA, i vettori di base PCA e gli ID cluster per i vertici sono illustrati di seguito.

Sostituendo queste due equazioni, si ottengono:

equation of the exit radiance after substituting the transfer vector

Quindi la distribuzione del prodotto dot restituisce l'equazione seguente.

equation of the exit radiance after distributing the dot product

Poiché entrambi (Mk· L') e (Bkj· L') sono costanti per vertice, l'esempio calcola questi valori con la CPU e li passa come costanti nel vertex shader; poiché wpj cambia per ogni vertice, l'esempio archivia questi dati per vertice nel buffer dei vertici.

Trasferimento di radianza precompilate