La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Ombre e riflessioni in tempo reale Daniele Marini Parzialmente tratte de: Haines-Möller Corso di Programmazione Grafica per il Tempo Reale.

Presentazioni simili


Presentazione sul tema: "Ombre e riflessioni in tempo reale Daniele Marini Parzialmente tratte de: Haines-Möller Corso di Programmazione Grafica per il Tempo Reale."— Transcript della presentazione:

1 Ombre e riflessioni in tempo reale Daniele Marini Parzialmente tratte de: Haines-Möller Corso di Programmazione Grafica per il Tempo Reale

2 2 Perchè Dare maggiore realismo Creare unatmosfera Neverwinter Nights Blade of Darkness

3 3 Cosa si ottiene Più indizi per comprendere la profondità e la forma Più facile lorientamento

4 4 Ricevitore Sorgenti di luce Creatori dombra, ricevitori dombra Sorgente Creatore Creatore e ricevitore Definizioni

5 5 Tipi di sorgenti Point light ombra area light ombrapenombra Tipologie

6 6 Ombre nette, ombre sfumate (penombre)

7 7 Come considerare le ombre Come oggetti separati (lombra 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 8 Ombre piane Un oggetto proietta unombra su una superficie piana Il meccanismo è simile a una proiezione prospettica: si tratta di individuare la matrice di proiezione

9 9 Proiezione dellombra l v ombra y=0 y p Matrice di proiezione:

10 10 Proiezione su un piano qualsiasi v p n l Equazione del piano: Equazione del punto proiettato Matrice di proiezione

11 11 Memorizzare ombre pre- computate in texture

12 12 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 renderman della Pixar Calcola il rendering a partire dalla sorgente (il bianco indica punti più lontani, il nero più vicini)

13 13 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 loggetto è in ombra. shadow depth map Per ogni pixel compara distanza da luce di con Profondità di memorizzata In shadow map

14 14 Risultato

15 15 Shadow volumes Crea porzioni di volume in ombra da ciasun poligono illuminato (triangolo) Ciascun traingolo crea 3 quadrilateri semi- infiniti proiettati Quelli rivolti verso lossrvatore sono frontfacing, gli altri backfacing

16 16 Come funziona Per testare un punto incrementa un contatore ogni volta che attraversi un lato frontafcing della piramide ombra e decrementa quando atraversi un backfacing Se il contatore è maggiore di zero allora il pixel è in ombra frontfacing backfacing

17 17 Shadow volume usa stencil buffer È un altro buffer di OGL in genere 8 bit per pixel Quando si calcola rendering con stencil buffer si possono eseguire somme, sottrazioni etc. Limmagine ottenuta si può usare come maschera per le fasi successive di rendering Stencil Buffer Mask result Rendered image

18 18 Come si implementa shadow volumes con stencil buffer 4 passi [Heidmann91]: – 1st Passo: rendi la scena con solo la luce ambiente – Inibisci laggiornamento dello Z-buffer e la scrittura nel color buffer (disegna solo nello stencil). – 2nd passo: rendi nello stencil buffer i poligoni frontfacing rispetto allo shadow volume, incrementa il contatore. – 3rd passo: rendi nello stencil buffer i poligoni backfacing rispetto allo shadow volume, decrementa il contatore. – 4th passo: rendi le luci diffusive e speculari con lo stencil buffer a 0.

19 19 Esempio Image courtesy of NVIDIA Inc.

20 20 Unire più volumi ombra Uno spigolo condiviso da due poligoni che ostacolano la luce crea quadrilateri che sono simultaneamente front e backfacing Questo spigolo interno genera 2 quadrilateri che si annullano

21 21 Cercare gli spigoli di bordo (silhouette) Dalla sorgente le ombre proiettate da spigoli interni non contribuiscono allo shadow volume. Trovare gli spigoli della silhouette elimina molti quadrilateri di shadow volume inutili.

22 Screen space Con la disponibilità di pixel shader sono nati algoritmi che operano sul piano immagine. Screen space ambient occlusion (SSAO) può essere eseguito nella GPU. Per ogni pixel si valuta il livello di occlusione interrogando il buffer di profondità 22

23 Screen space Ambient Occlusion Il grado di occlusione viene valutato calcolando la differenza di profondità del pixel con un pixel scelto casualmente Si usa un kernel ruotato in modo casuale per scegliere il pixel di comparazione Gli artefatti vengono eliminati con un antialiasing 23

24 Screen space Ambient Occlusion E molto efficace per generare self shadows La complessità dipende solo dalla dimensione dellimmagine generata 24

25 Z-buffer Ambient Occlusion Una copia dello z-buffer viene clampata, sfumata e sottratta dallo z- buffer Si genera così una mappa di differenze La mappa di differenze può esser ulteriormente clampata e e scalata per controllare la intensità dellombra 25

26 Z-buffer Ambient Occlusion Nellultimo passo si sottrae la mappa così generata dalla immagine E indipendente dal numero di poligoni, molto veloce Adatto per self shadows 26

27 27 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: –Langolo di incidenza è uguale allangolo di riflessione

28 28 Riflessioni piane Poniamo il piano in z=0 Applichiamo la trasformazione glScalef(1,1,-1); Il risultato: z

29 29 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:

30 30 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

31 31 Esempio Invece del trucco della trasformazione di scala si puà riflettere la posizione di camera e la direzione del piano Quindi rendere limmagine riflessa da quella camera


Scaricare ppt "Ombre e riflessioni in tempo reale Daniele Marini Parzialmente tratte de: Haines-Möller Corso di Programmazione Grafica per il Tempo Reale."

Presentazioni simili


Annunci Google