Davide Gadia Davide Selmo Photon Mapping Davide Gadia Davide Selmo
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: Passo 2: 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 Scattering Storing 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:
Passo 1: Storage I fotoni assorbiti vengono salvati nella Photon map Potenza 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 al di sotto del piano, il destro al di sopra 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
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 w’ w x
Equazione del rendering Suddivido le componenti speculare e diffusiva della BRDF Suddivido il termine di radianza incidente tenendo conto dei contributi di: Luce diretta Caustiche Luce indiretta
Equazione del rendering Illuminazione diretta Riflessioni speculari Caustiche Illuminazione indiretta
Calcolo della radianza Illuminazione diretta Ray tracing Monte Carlo Ray tracing con importance sampling basato su fr,S Riflessioni speculari Caustiche Caustics Photon Map Illuminazione indiretta Global Photon Map
Stima della radianza Ad ogni fotone viene associato un flusso La stima della radianza in un punto avviene considerando N campioni selezionati nell’intorno di raggio r del punto x
Stima della radianza
Esempi Rendering Ray tracing
Ray tracing + ombre sfumate Esempi Rendering Ray tracing + ombre sfumate
Esempi Rendering + caustiche
Esempi Rendering + global illumination