Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoSansone Leoni Modificato 10 anni fa
1
Ombre e riflessioni in tempo reale Daniele Marini Parzialmente tratte de: Haines-M ö ller Corso di Programmazione Grafica aa2005/2006
2
Programmazione Grafica aa2005/20062 Perchè Dare maggiore realismo Creare ”un’atmosfera” Neverwinter Nights Blade of Darkness
3
Programmazione Grafica aa2005/20063 Cosa si ottiene Più indizi per comprendere la profondità e la forma Più facile l’orientamento
4
Programmazione Grafica aa2005/20064 Ricevitore Sorgenti di luce Creatori d’ombra, ricevitori d’ombra Sorgente Creatore Creatore e ricevitore Definizioni
5
Programmazione Grafica aa2005/20065 Tipi di sorgenti Point light ombra area light ombrapenombra Tipologie
6
Programmazione Grafica aa2005/20066 Ombre nette, ombre sfumate (penombre)
7
Programmazione Grafica aa2005/20067 Come considerare le ombre Come oggetti separati (l’ombra di Peter Pan) Come volumi di spazio buio Come posizioni da cui la luce di una sorgente non è visibile Notare che sono in ombra facce rivolte in senso opposto alla sorgente
8
Programmazione Grafica aa2005/20068 Memorizzare ombre pre- computate in texture
9
Programmazione Grafica aa2005/20069 Due algoritmi principali per geometrie qualsiasi Shadow mapping e shadow volumes –Considera un volume buio, è il più diffuso e implementato hardware Lavora in tempo reale… Shadow mapping è usato dal software rendering della Pixar Calcola il rendering a partire dalla sorgente (il bianco indica punti più lontani, il nero più vicini)
10
Programmazione Grafica aa2005/200610 Shadow Map Quando si calcola il rendering, controlla il punto osservato rispetto allo shadow buffer – Se la profondità del punto è maggiore (epsilon) del valore di shadow buffer l’oggetto è in ombra. shadow depth map Per ogni pixel compara distanza da luce di con Profondità di memorizzata In shadow map
11
Programmazione Grafica aa2005/200611 Risultato
12
Programmazione Grafica aa2005/200612 Shadow volumes Crea porzioni di volume in ombra da ciasun poligono illuminato (triangolo) Ciascun traingolo crea 3 quadrilateri proiettati
13
Programmazione Grafica aa2005/200613 Come funziona Per testare un punto conta il numero di poligoni tra esso e il punto di vista Se ci sono più poligoni frontfacing che backfacing allora è in ombra frontfacing backfacing
14
Programmazione Grafica aa2005/200614 Shadow volume usa stencil buffer È un altro buffere di OGL in genee 8 bits per pixel Quando si calcola rendering con stencil buffer si possono eseguire somme, sottrazioni etc. L’immagine ottenuta si può usare come maschera per le fasi successive di rendering Stencil Buffer Mask result Rendered image
15
Programmazione Grafica aa2005/200615 Come si implementa shadow volumes con stencil buffer 4 passi [Heidmann91]: – 1st Passo: rendi la scena con solo la luce ambiente – Inibisci l’aggiornamento dello Z-buffer e la scrittura nel color buffer (disegna solo nello stencil). – 2nd pass: rendi nello stencil buffer i poligoni frontfacing rispetto allo shadow volume, incrementa il conteggio. – 3rd pass: rendi nello stencil buffer i poligoni backfacing rispetto allo shadow volume, decrementa il conteggio. – 4th pass: rendi le luci diffusive e speculari con lo stencil buffer a 0.
16
Programmazione Grafica aa2005/200616 Esempio Image courtesy of NVIDIA Inc.
17
Programmazione Grafica aa2005/200617 Unire più volumi ombra Uno spigolo condiviso da due poligoni che ostacolano la luce creano quadrilateri che sono simultaneamente front e backfacing Questo spigolo interno genera 2 quadrilateri che si annullano
18
Programmazione Grafica aa2005/200618 Cercare gli spigoli di bordo (silhouette) Dalla sorgente le ombre proiettate da spigoli interno non contribuiscono allo shadow volume. Trovare gli spigoli della silhouette elimina molti qaudrilateri di shadow volume inutili.
19
Programmazione Grafica aa2005/200619 Riflessioni piane Le riflessioni si possono simulare con environment mapping Non è adatto per superfici piane Anche la riflessione piana (specchio piano) aiuta a capire la scena e le forme, accresce il realismo Basato sulla legge della riflessione speculare: –L’angolo di incidenza è uguale all’angolo di riflessione
20
Programmazione Grafica aa2005/200620 Riflessioni piane Poniamo il piano in z=0 Applichiamo la trasformazione glScalef(1,1,-1); Il risultato: z
21
Programmazione Grafica aa2005/200621 Riflessioni piane Nel calcolo delle ombre il backfacing diventa frontfacing! Anche le luci devoono venire riflesse È necessario applicare il clipping (si usa lo stencil buffer) Esempio di clipping:
22
Programmazione Grafica aa2005/200622 Planar reflections Come funziona il rendering? 1) metti nello stencil buffer i poligoni del piano di base 2) calcola il modello scalato con (1,1,-1), ma mascheralo con lo stencil buffer 3) rendi il piano di base (semi-trasparente) 4) rendi il modello non trasformato con la scala
23
Programmazione Grafica aa2005/200623 Esempio Invece del trucco della trasformazione di scala si puà riflettere la posizione di camera e la direzione del piano Quindi rendere l’immagine riflessa da quella camera
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.