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
Scarica

27_PhotonMapping