Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Per comprendere appieno uno shader che implementa il token di aggiornamento primario, è utile derivare la formula usata dallo shader per calcolare la luminosità di uscita.
Per iniziare, l'equazione seguente è l'equazione generale per calcolare la raggianza di uscita risultante dall'illuminazione diretta su un oggetto diffuso con illuminazione distante arbitraria.
dove:
Parametro | Descrizione |
---|---|
Rp | Raggi di uscita al vertice p. Valutato in ogni vertice della mesh. |
pd | Albedo della superficie. |
pi greco | Costante, utilizzata come fattore di normalizzazione della conservazione dell'energia. |
L(s) | Ambiente di illuminazione (raggi di origine). |
Vp₍s₎ | Funzione di visibilità binaria per il punto p. È 1 se il punto può vedere la luce, 0 in caso contrario. |
Hnp₍s₎ | Il termine coseno dalla legge di Lambert. Uguale a max(Np· s), 0) dove Np è la normale superficie in corrispondenza del 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.
dove:
Parametro | Descrizione |
---|---|
L(s) | Ambiente di illuminazione (raggi di origine). |
io | Intero che somma il numero di funzioni di base. |
O | L'ordine delle armoniche sferiche. |
li | Coefficiente. |
Y | Alcune funzioni di base sulla sfera. |
La raccolta di questi coefficienti, L', fornisce l'approssimazione ottimale per la funzione L(s) con le funzioni di base Y(s). La sostituzione e la distribuzione producono l'equazione seguente.
L'integrale di Yi(i)Vp₍s₎Hnp₍s₎ è un coefficiente di trasferimento tpi che il simulatore precomputa per ogni vertice della mesh. La sostituzione di questo risultato produce l'equazione seguente.
Se si modifica questa proprietà in notazione vettoriale, viene restituita l'equazione non compressa seguente per calcolare laradianza di uscita per ogni canale.
dove:
Parametro | Descrizione |
---|---|
Rp | Raggi di uscita al vertice p. |
pd | Albedo della superficie. |
L' | Il vettore di lied è la proiezione della radiazione di origine nelle funzioni armonica sferiche. Si tratta di un vettore order² di coefficienti armonici sferici. |
Carta igienica | Vettore di trasferimento order² per il vertice 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 da poter usare la compressione. Un algoritmo denominato Clustered Principal Component Analysis (CPCA) comprime in modo efficiente i dati. Ciò consente l'uso di un'approssimazione armonica di ordine superiore che comporta ombre più nitide.
CPCA fornisce l'equazione seguente per approssimare il vettore di trasferimento.
dove:
Parametro | Descrizione |
---|---|
Carta igienica | Vettore di trasferimento per il vertice 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 il punto p. |
B | Vettore di base JTH PCA per il cluster k. |
Un cluster è semplicemente un numero di vertici che condividono lo stesso vettore medio. Di seguito viene descritto come ottenere la media del cluster, i pesi PCA, i vettori di base PCA e gli ID cluster per i vertici.
La sostituzione di queste due equazioni produce:
Quindi la distribuzione del prodotto punto produce l'equazione seguente.
Perché entrambi (Mk· L') e (Bkj· L') sono costanti per vertice, il campione calcola questi valori con la CPU e li passa come costanti nel vertex shader; poiché wpj modifiche per ogni vertice, l'esempio archivia questi dati per vertice nel buffer dei vertici.
Argomenti correlati