Photon Mapping Daniele Marini Global Illumination • Necessità di simulare effetti di illuminazione globali per ottenere un maggior grado di realismo • Principali approcci: – Elementi finiti (es. radiosity) – Campionamento puntiforme (es. ray tracing) Photon Mapping • Ideato da Henrik Wann Jensen • Sviluppato sui modelli statistici Montecarlo • Algoritmo in due passi – Emissione fotoni dalle sorgenti – Rendering Algoritmo • Passo 1: – Emissione di fotoni dalle sorgenti di luce e tracciamento all’interno della scena – Creazione della mappa 3D di fotoni • Passo 2: – Rendering della scena utilizzando le informazioni contenute nella mappa di fotoni per la stima della radianza riflessa sulle superfici Algoritmo • Passo 1: photon tracing • Passo 2: rendering Algoritmo: Passo 1 • Emissione – Emissione dei fotoni dalla sorgenti di luce – Solitamente bisogna emettere più di 10.000 fotoni • Scattering – Determinare come i fotoni vengono dispersi, all’interno della scena • Storing – Salvataggio delle informazioni sui fotoni assorbiti dalle superfici diffusive Passo 1: Emissione • L’energia associata alla sorgente viene divisa sui fotoni emessi • Possono essere simulate diverse tipologie di luci Puntiforme Sferica Quadrata Forma generica Passo 1: Scattering • Quando un fotone colpisce una superficie può essere: – Riflesso – Trasmesso – Assorbito Passo 1: Scattering • Il tipo di scattering può essere deciso tramite il metodo della Roulette russa: [0,1] variabil e casuale p d [0,1] probabiltà di riflession e diffusa p s [0,1] probabiltà di riflession e speculare pd p s 1 Scelgo secondola regola : [0, p d ] riflession e diffusa [ p d , p d p s ] riflession e speculare [ p d p s ,1] assorbimento Passo 1: Storage • I fotoni assorbiti vengono salvati nella Photon map – Energia – Posizione – Direzione incidente • Serve una struttura dati adeguata Passo 1: Storage • Per memorizzare la mappa dei fotoni si utilizza un kd-tree (suddivisione spaziale 3D della scena) • A ogni nodo corrisponde un piano di suddivisione ortogonale agli assi • il sottoalbero sinistro contiene fotoni nel semispazio negativo rispetto al piano, il destro conteine fotoni nel ssemispazio positivo • Il kd-tree può essere bilanciato, considerata la coerenza della luce nella scena • Il kd-tree può essere esplorato in O(logN) Passo 1: Storage • Vengono utilizzate diverse mappe – Global map • Riflessioni diffuse – Caustics map • Generate lanciando fotoni direttamente su superfici lucide e riflettenti • Molti campioni in una piccola area – Mezzi partecipanti Caustiche Caustiche • Inviluppo di una famiglia di raggi di luce QuickTime™ e un decompressore sono necessari per visualizzare quest'immagine. Passo 1: Storage Scena Photon Map Passo 2: Rendering • L’informazione contenuta nella mappa viene usata per stimare la radianza riflessa • Un numero N di fotoni viene considerato per la stima nel punto x Passo 2: Rendering • L’integrale dell’equazione del rendering viene diviso in 4 componenti – – – – Illuminazione diretta Speculare Indiretta Caustiche Photon Mapping • Equazione del rendering Lr ( x, w) Le ( x, w) f r ( x, w , w) Li ( x, w)( w n )dw w’ w x Equazione del rendering • Suddivido le componenti speculare e diffusiva della BRDF f r ( x, w, w) f r , S ( x, w, w) f r , D ( x, w, w) • Suddivido il termine di radianza incidente tenendo conto dei contributi di: – Luce diretta – Caustiche – Luce indiretta Li ( x, w) Li ,l ( x, w) Li ,c ( x, w) Li ,d ( x, w) Equazione del rendering Lr ( x, w) Le ( x, w) f r ( x, w , w) Li ( x, w )( w n )dw Illuminazione diretta Riflessioni speculari Le ( x, w) f r ( x, w , w) Li ,l ( x, w )( w n )dw f r ,S ( x, w , w)( Li ,c ( x, w ) Li ,d ( x, w ))( w n )dw f r , D ( x, w , w) Li ,c ( x, w )( w n )dw f r , D ( x, w , w) Li ,d ( x, w )( w n )dw Caustiche Illuminazione indiretta Calcolo della radianza Illuminazione diretta Riflessioni speculari Ray tracing Monte Carlo Ray tracing con importance sampling basato su fr,S Caustiche Caustics Photon Map Illuminazione indiretta Global Photon Map Stima della radianza • Ad ogni fotone viene associato un flusso p ( wp ) • La stima della radianza in un punto avviene considerando N campioni selezionati nell’intorno di raggio r del punto x 1 Lr ( x, w) r2 N f ( x, w , w) (x, w ) r p 1 p p p Stima della radianza Esempi Rendering Ray tracing Esempi Rendering Ray tracing + ombre sfumate Esempi Rendering + caustiche Esempi Rendering + global illumination