Emilio Spatola

Rendering e modelli di illuminazione

Il mondo, così come lo vediamo, dipende dall'interazione luce e dalla materia. Tale interazione ci consente di distinguere i colori degli oggetti e le caratteristiche di una superficie (matta, trasparente, etc..). I fenomeni che più comunemente influenzano o impediscono la trasmissione della luce attraverso la materia sono: l'assorbimento, la diffusione (scattering), la riflessione speculare o diffusa, la rifrazione e la diffrazione, tutti fenomeni comunque che si fondano sulla fisica. Di conseguenza se si vuole generare immagini fotorealistiche con l'ausilio di un computer bisogna necessariamente confrontarsi con dei modelli di illuminazione sviluppati a partire da principi fisici.

Da quando è stata inventata la computer grafica, il problema di simulare la luce è diventato un aspetto fondamentale e fonte di numerosi dibattiti all'interno del campo della ricerca scientifica. L'arduo compito di generare un'immagine 2D a partire da una scena 3D spetta ai cosiddetti algoritmi di rendering.

Nel corso degli anni, all'interno della computer grafica si sono sviluppate due aree di ricerca: rendering real-time e rendering off-line.

Nel rendering real-time la caratteristica principale è l'interazione con l'utente, per questo motivo vengono fatte delle approssimazioni a discapito della qualità finale dell'immagine per raggiungere un compromesso tra realismo e fluidità. Le tipiche applicazioni real-time sono i videogiochi.

Il rendering off-line ha invece come obiettivo finale la produzione di immagini quanto più fotorealistiche possibili. Poiché non c'è interazione con l'utente finale, i tempi di calcolo non sono un aspetto critico. Un film con effetti visivi speciali è un esempio di questo tipo di applicazioni.

La maggior parte delle applicazioni real-time adotta un modello di illuminazione locale (local illumination).

Con il modello locale, le superfici degli oggetti della scena non interagiscono in alcun modo tra loro (gli oggetti sono indipendenti) e nella simulazione della luce viene presa in considerazione solamente l'illuminazione diretta, ossia la luce che parte dalla sorgente luminosa e arriva direttamente sulla superficie dell'oggetto.

Il modello di illuminazione globale (global illumination), invece, si discosta da quello locale perché oltre a considerare l'illuminazione diretta, tiene conto anche della luce che si riflette da una superficie e rimbalza sugli altri oggetti della scena (illuminazione indiretta). La complessità aumenta perché molte superfici si illuminano le une con le altre ed inoltre sorge il problema di determinare le occlusioni, in quanto una superficie può essere nascosta da un'altra. Sostanzialmente l'illuminazione di ogni punto dipende dalla geometria della scena, dalla posizione delle sorgenti luminose e dal punto di vista dell'osservatore.

La global illumination consente di generare immagini fotorealistiche, ma allo stato attuale ha dei costi computazionali molto elevati per essere adoperata all'interno di videogiochi o qualunque altra applicazione real-time.

Ad ogni modo, nel corso degli ultimi anni sono state fatte delle ricerche per lo sviluppo di metodi che rendano possibile l'adozione del modello di illuminazione globale in real-time. Tale modello prende il nome di interactive global illumination [12].

Ambient Occlusion

L'Ambient Occlusion (AO) [10][16] è una tecnica di illuminazione globale che approssima efficientemente l'illuminazione indiretta prendendo in considerazione l'occlusione di un punto, cioè la visibilità di un punto rispetto al resto della scena. L'idea è stata introdotta da Zhukov [17] e poi implementata da Landis [6].

Con l'Ambient Occlusion, l'illuminazione di un punto viene calcolata con la seguente equazione: Lighting = AO * ambient + diffuse + specular, dove la componente ambient, diffuse e specular sono calcolate con il famoso modello di Phong. Un qualunque algoritmo per il calcolo dell'Ambient Occlusion restituisce in output una occlusion map, cioè una texture che contiene i valori di occlusione per ogni pixel dell'immagine. Questi valori rappresentano il termine AO nell'equazione precedente e sono usati per il calcolo dell'illuminazione finale (colore di ogni pixel che compone l'immagine).

L'Ambient Occlusion è sia un algoritmo di rendering off-line che di rendering real-time. Nacque principalmente per le produzioni cinematografiche ma con il passare degli anni mediante l'implementazione di metodi sempre più efficienti, è stata usata sempre di più per le produzioni videoludiche di alto livello.

Per calcolare l'Ambient Occlusion nel real-time si usano due approcci:

  • Geometry-Based Ambient Occlusion [1][10][11][13][14]
  • Screen-Space Ambient Occlusion [3][4][7][8][9][13]

La differenza tra i due approcci sta nel tipo di oggetto che viene considerato un'occlusore e dove viene eseguito l'algoritmo. Nei GBAO l'occlusore è una geometria 3D definita nell'Object-Space (sistema di coordinate 3D che fa riferimento alla posizione dell'oggetto), nei metodi SSAO l'occlusore è un pixel che appartiene allo Screen-Space (sistema di coordinate 2D che si usa per accedere ai pixel che compongono l'immagine) e l'algoritmo è eseguito in post-processing, direttamente sull'immagine già renderizzata.

I metodi GBAO non hanno ancora dato risultati soddisfacenti a causa dell'elevato costo computazionale, non scalabile con il rendering real-time. I metodi SSAO sono più velocie rappresentano lo stato dell'arte della real-time Ambient Occlusion e per questo sono più interessanti da studiare. Offrono prestazioni elevate, sono più facili da integrare in un sistema di rendering pre-esistente ma in compenso offrono una scarsa qualità dell'occlusion map a causa dell'eccessive approssimazioni che vengono fatte sui calcoli.

Obiettivo della tesi

L'obiettivo del progetto di tesi è attaccare la scarsa qualità dei risultati offerti dai metodi SSAO per apportare un effettivo miglioramento all'occlusion map, in modo che sia più simile a quella generata dall'Ambient Occlusion calcolata però in un contesto di rendering off-line. La qualità dovrà essere raggiunta senza dover rinunciare alle prestazioni da real-time, necessarie a garantire la buona riuscita dell'esperienza cercata dall'utente finale.

Algoritmo

L'algoritmo sviluppato, la Disk-Based Screen Space Ambient Occlusion (DSSAO), offre qualità dei risultati con tempi da real-time, che gli consentono di essere integrato in un graphic engine, apportando notevoli miglioramenti alla resa grafica di un videogioco o di una qualunque altra applicazione di rendering real-time. Gli ottimi risultati sono stati raggiunti per due motivi:

  • Utilizzo di un metodo geometrico per il calcolo dell'Ambient Occlusion,

    che ha consentito di migliorare la precisione

  • Esecuzione dei calcoli necessari nel dominio 2D dell'immagine, per

    mantenere le prestazioni elevate.

L'algoritmo proposto risulta essere adeguato per calcolare l'Ambient Occlusion in real-time su scene complesse con una qualità che si avvicina molto a quella offerta in un contesto di rendering off-line.

Video

Un video che mostra le caratteristiche ed i risultati dell'algoritmo è presente qui http://www.youtube.com/watch?v=EaHrmCjtFAQ

Software Utilizzato

Visual Studio 2010 Express Edition

openGL, API grafica.

GLUT, libreria di openGL

GLEW, libreria di openGL

Open Asset Import Library, libreria per importare modelli 3D in openGL

gDEBugger, debugger per openGL

CG runtime, compilatore per il linguaggio di Shading CG (Nvidia)

Seminari

  • Venerdì 24 febbraio 2012: "Ambient occlusion nel real-time rendering".

    Abstract:
    La realtà, così come lo percepiamo, dipende dall'interazione tra luce e materia. Tale interazione ci consente di distinguere i colori degli oggetti e le caratteristiche di una superficie (matta, trasparente, etc..). Da quando è stata inventata la computer grafica, il problema di simulare la luce è diventato un aspetto fondamentale e fonte di numerosi dibattiti all'interno del campo della ricerca scientifica. L'arduo compito di generare un'immagine 2D a partire da una scena 3D spetta agli algoritmi di rendering. Nel seminario verranno discusse le problematiche generali legate al rendering e quali sono i modelli di calcolo che tentano di approssimare e risolvere il problema del trasporto della luce. In particolare ci soffermeremo sull'Ambient Occlusion, una tecnica che è stata ampiamente utilizzata nelle produzioni cinematografiche (Pearl Harbor, Jurassic Park 3, Surf Up) ed è recentemente arrivata nel mondo dei videogiochi di ultima generazione (Battlefield 3, L.A. Noire, Crysis 2 e altri), grazie all'invenzione di implementazioni efficienti e all'aumento della potenza di elaborazione dei dati delle gpu.

  • Venerdì 29 giugno 2012: "Disk-Based Screen Space Ambient Occlusion".

    Abstract:
    Gli algoritmi di rendering hanno il compito di generare un'immagine a partire da un modello matematico tridimensionale. Una delle problematiche del rendering è la simulazione della luce che si diffonde nella scena. L'Ambient Occlusion è una tecnica di illuminazione in grado di migliorare la percezione dei volumi ed il realismo delle immagini generate al computer. Sebbene sia nata come algoritmo per le produzioni cinematografiche, negli ultimi anni è stata affiancata alle produzioni videoludiche grazie allo sviluppo di diverse tecniche che consentono di ridurre i tempi di calcolo e che sono note complessivamente con il nome di Screen Space Ambient Occlusion. La Disk-Based Screen Space Ambient Occlusion, sviluppata in ISISLab, appartiene a questa categoria. Nel seminario presenteremo l'idea generale su cui si basa l'algoritmo, il suo funzionamento ed infine un confronto con altre tecniche note per metterne in evidenza pregi e difetti.

Riferimenti

  1. Bunnell: Dynamic ambient occlusion and indirect lighting. In: GPU Gems 2, pp. 223-233. Addison-Wesley Professional (2005).
  2. Christensen: Point-Based Approximate Color Bleeding. In: Pixar Technical Memo #08-01 (2008).
  3. Filion, McNaughton: Effects & techniques. In: Siggraph 2008 (2008).
  4. Hoang, Low: Multi-Resolution Screen-Space Ambient Occlusion. In: Proceedings of the 2011 Computer Graphics International Conference (2011).
  5. Laine, Saransaari, Kontkanen, Lehtinen, Aila: Incremental Instant Radiosity for Real-Time Indirect Illumination. In: Proceedings of Eurographics Symposium on Rendering 2007 (2007).
  6. Landis: Production-ready global illumination. In: Proceedings of the conference on SIGGRAPH 2002 (2002).
  7. Mattausch, Scherzer, Wimmer: High-Quality Screen-Space Ambient Occlusion using Temporal Coherence. In: Computer Graphics Forum (2010).
  8. Méndez: A Simple and Practical Approach to SSAO. In: gamedev.net, gamedev (2010).
  9. Mittring: Finding next gen: Cryengine 2. In: Siggraph 2007 (2007).
  10. Pharr, Green: Ambient Occlusion. In: GPU GEMS 2, nvidia (2004)
  11. Reinbothe, Boubekeur, Marc Alexa: Hybrid Ambient Occlusion. In: EUROGRAPHICS 2009 Areas Papers (2009).
  12. Ritschel, Grosch, Dachsbacher, Kautz: State of the Art in Interactive Global Illumination. In: Computer Graphics Forum (2012).
  13. Sattler, Sarlette, Zachmann, Klein: Hardware-accelerated ambient occlusion computation. In: Proceedings of Vision, Modeling, and Visualization 2004, pages 331-338 (2004).
  14. Shanmugan, Arikan: Hardware accelerated ambient occlusion techniques on gpus. In: Proceedings of the 2009 Symposium on Interactive 3D Graphics and Games (2009).
  15. Tabellion, Lamorlette: An Approximate Global Illumination System for Computer Generated Films. In: Siggraph 2004 (2004).
  16. Wikipedia: Ambient Occlusion. wiki.
  17. Zhukov, Iones, Kronin : An ambient light illumination model. In: Rendering Techniques (1998).