Domanda

Come lo capisco, la mappatura dell'ombra viene eseguita rendendo la scena dal punto di vista della luce per creare una mappa di profondità. Quindi render rendono la scena dal POV della fotocamera, e per ogni punto (frammento in GLSL) nella scena calcola la distanza da lì alla sorgente luminosa; Se corrisponde a quello che hai nella tua mappa dell'ombra, allora è alla luce, altrimenti è nell'ombra.

Stavo solo leggendo attraverso questo tutorial per avere un'idea di come fare come fare la mappatura dell'ombra con Una luce point / omnidirezionale.

sotto Sezione 12.2.2 Dice:

.

Utilizziamo una singola mappa dell'ombra per tutte le fonti di luce

E poi sotto i 12.3.6 Dice:

.

1) Calcola la distanza quadrata dal pixel corrente alla sorgente luminosa.
...
. 4) Confronta il valore di distanza calcolato con il valore della mappa dell'ombra recuperato per determinare se siamo in ombra.

che è approssimativamente quello che ho dichiarato sopra.

Quello che non capisco è se abbiamo cotto tutte le nostre luci in una mappa dell'ombra, allora quale luce abbiamo bisogno di confrontare la distanza? La distanza cotta nella mappa non dovrebbe corrispondere a nulla, perché è una miscela di tutte le luci, non è?

Sono sicuro che mi manca qualcosa, ma spero che qualcuno possa spiegarmelo.


.

Inoltre, se stiamo utilizzando una singola mappa dell'ombra, come ci fiancheggiamo per tutte le fonti di luce?

Per una singola sorgente luminosa La mappa dell'ombra memorizza la distanza dell'oggetto più vicino alla luce (I.e., una mappa di profondità), ma per più fonti di luce, cosa contenerebbe?

È stato utile?

Soluzione

Hai tagliato la frase breve prematuramente:

.

Utilizziamo una singola mappa dell'ombra per tutte le fonti di luce, creando un'immagine con rendering multipass e eseguire un passaggio per ogni luce Fonte.

Quindi la mappa dell'ombra contiene i dati per una singola sorgente luminosa alla volta, ma usano solo una mappa perché rendono solo una luce alla volta.

Penso che questo folga nella tua seconda domanda - la luce è additiva in modo da combinare i risultati da più luci semplicemente aggiungendole insieme. Nel caso GPU Gems, si aggiungono insieme direttamente nel buffer del fotogramma, senza dubbio a causa del numero relativamente limitato di campionatori di consistenza di archiviazione disponibili sulle GPU al momento. Al giorno d'oggi probabilmente vuoi fare una combinazione di combinazione nel buffer del fotogramma e direttamente nel frammento shader.

Generalmente si applicano il test di "Pixel è acceso se è inferiore o uguale alla distanza nel buffer dell'ombra più un po '" piuttosto che esattamente uguale, a causa dell'accumulo di errore di arrotondamento del punto flottante.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top