Domanda

Attualmente ho una configurazione del sistema di rendering differito e posso eseguire il rendering di luci puntiformi e direzionali. La mia domanda è quali sono le mie opzioni per le diverse forme di ombreggiatura che possono creare ombre basate su luci puntiformi e luci direzionali che possono forse utilizzare una configurazione di ombreggiatura differita?

È stato utile?

Soluzione

Non c'è davvero nulla di speciale nel rendering differito che richiede tecniche di shadowing uniche. La maggior parte degli approcci standard per la produzione di ombre funzionano perfettamente con schemi di rendering differiti.

Shadow mapping è l'algoritmo di shadowing più comune oggi in uso in applicazioni in tempo reale come i giochi. Le ombre dello stencil erano popolari alcuni anni fa ma sono cadute in disgrazia un po 'a causa di vari limiti. La mappatura dell'ombra funziona bene con l'ombreggiatura differita. L'algoritmo di base per la mappatura delle ombre è ragionevolmente semplice:

  1. Rendering della profondità su una trama di destinazione del rendering dal punto di vista della luce (per una luce puntiforme è necessario eseguire il rendering di 6 facce di una mappa cubica).
  2. Quando esegui il passaggio di illuminazione per la luce, per ogni pixel trasforma la posizione dello spazio mondiale nello spazio di vista della luce e confronta la profondità con la profondità memorizzata nella mappa dell'ombra. Se è maggiore della profondità della mappa ombra, il punto è in ombra, altrimenti illuminalo normalmente.

Come al solito con il rendering, il diavolo è nei dettagli. Per ottenere ombre di buona qualità è necessario impostare attentamente la proiezione della mappa ombra per sfruttare al meglio i pixel disponibili nella mappa ombra (cercare mappe ombra prospettiche, mappe ombra in cascata). A causa di problemi di precisione otterrai vari artefatti con superfici auto-ombreggianti ("ombra acne" è la più comune) e ci sono varie strategie per ridurre l'incidenza di questi artefatti (distorsione di profondità, modifiche alla matrice di proiezione). Al fine di ridurre l'aspetto a blocchi e pixel delle mappe d'ombra con una risoluzione insufficiente, ti consigliamo di eseguire alcuni filtri delle mappe d'ombra. Il filtro più vicino percentuale è l'approccio standard e ci sono vari modi per eseguire PCF.

Affronti anche il compromesso standard di qualità / prestazioni con le ombre e l'ombreggiatura dinamica tende ad essere uno degli aspetti più costosi del rendering delle scene. Esistono numerosi trucchi e tecniche per tentare di massimizzare le prestazioni della mappatura dell'ombra.

Di recente ci sono state diverse varianti dell'algoritmo di base per la mappatura dell'ombra che tentano di fornire risultati migliori per una data risoluzione della mappa dell'ombra affrontando il problema del filtro in modo diverso. Le mappe ombra varianza e le mappe ombra esponenziali sono due tecniche recenti che presentano alcuni vantaggi, ma alcuni problemi unici.

Il sito di sviluppo di Nvidia è una buona risorsa per la programmazione grafica in generale e ha molte articoli sull'ombra. Dai un'occhiata anche alle versioni HTML dei libri GPU Gems disponibili sul sito, hanno vari articoli su shadowing, incluso l'articolo definitivo su Variance Shadow Maps in GPU Gems 3.

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