Slide

Transcript

Slide
Cenni al rendering di ombre
Davide Gadia
Corso di Programmazione Grafica per il Tempo Reale
Laurea Magistrale in Informatica per la Comunicazione
a.a. 2012/2013
Ombre
• Componenti fondamentali per aumentare il realismo del
rendering
• Forniscono indizi visuali sul posizionamento degli
oggetti, sulla profondità ecc.
Ombre
• Modelli di shading per il tempo reale sono locali
• Ombre calcolate da modelli di illuminazione globali

Ray tracing, radiosity ecc
• Ombre sono introdotte in tempo reale tramite tecniche
apposite:



Tecniche basate su proiezione
Shadow map
Shadow volume
Ombre: terminologia
• Occlusori bloccano la luce dalla sorgente alla superficie
ricevitore
Ombre: terminologia
• Luci puntiformi creano hard shadows
• Area light creano soft shadows
Ombre basate su proiezione
• Ombre sono oggetti separati



Poligono ombra creato calcolando proiezioni dei vertici della
primitiva sulla superficie ricevente
Point light + superfici piane
Hard shadows

Si possono usare tecniche per “sfumare” le ombre
Shadow map
• Primo passo di rendering dal punto di vista della luce


Mantengo informazioni su oggetti + vicini nella shadow map
Quelli visibili dalla luce = illuminati
• Secondo passo di rendering da camera



Nel rendering di un punto, controllo se è in shadow map
Se presente = punto è illuminato
Altrimenti = punto è in ombra
Shadow map
Shadow map
• Vantaggi:


costo computazionale creazione mappa + lineare rispetto
numero primitive
Tempo di accesso alla mappa è costante
• Svantaggi

Qualità ombra dipende da risoluzione in pixel della shadow map



Aliasing in punti contatto superfici
Erronea introduzione di self-shadows
Sono state proposte numerose tecniche per ovviare ad artefatti e
per migliorare la risoluzione delle ombre
Percentage Closer Filtering
• Approccio: campiono + volte la shadow map e applico
blending
da: http://www.gamedev.net/page/resources/_/technical/graphics-programming-and-theory/softedged-shadows-r2193
Shadow volume
• Vertice è sorgente di luce
• Triangolo è occlusore
• Tronco di piramide è il volume d'ombra
Shadow volume
• Considero un raggio dalla camera al punto che devo
renderizzare
• Mantengo un contatore:


Incremento ogni volta in cui il raggio incontra una front-face del
volume d'ombra
Decremento quando incontra una back-face
• Se alla fine il contatore è > di 0 → pixel è in ombra
da: http://en.wikipedia.org/wiki/Shadow_volume
Shadow volume
Stencil buffer
• La gestione del contatore è ottimizzata usando lo stencil
buffer



un altro buffer a disposizione della pipeline
Di solito i valori vengono scritti tramite operazioni di
addizione,sottrazione ecc in modo da creare una “maschera”
Durante il rendering finale, la “maschera” viene utilizzata per
mascherare regioni del framebuffer, renderizzando solo nei pixel
selezionati
Shadow map e Stencil buffer
• Passo 1:



Renderizzo con solo luce ambiente
Disabilito Z-buffer
Abilito scrittura solo in Stencil buffer
• Passo 2:


Renderizzo front face del volume d'ombra nello stencil buffer
Incremento contatore
• Passo 3:


Renderizzo back face del volume d'ombra nello stencil buffer
Decremento contatore
• Passo 4:


Riattivo scrittura nel frame buffer
Renderizzo componenti diffusive e speculari in pixel dove valore
nello stencil è 0
Global illumination in tempo reale?
• Tecniche di global illumination non sono ancora
praticabili in tempo reale

È possibile in configurazioni molto semplificate e controllate
• Esempi di tecniche di ray tracing in WebGl:


http://people.mozilla.com/~sicking/webgl/ray.html
http://madebyevan.com/webgl-path-tracing/
References
•
“Real time rendering – 3rd edition” : Cap 9
•
Slide e immagini da www.realtimerendering.com
•
Slide CS 563 “Advanced Topics in Computer Graphics” (Worcester Polytechnic
Institute)

http://web.cs.wpi.edu/~emmanuel/courses/cs563/S12/