Illuminazione Globale

L'illuminazione dell'ambiente e degli oggetti è una delle problematiche che più affliggono i creatori di videogiochi e ambienti virtuali. Simulare in modo fedele l'illuminazione (es. ombre, riflessi) richiede avanzate tecniche di programmazione e a seconda del risultato che si vuole ottenere, un dispendio di potenza di calcolo non indifferente.

La tecnica più comunemente utilizzata nelle applicazioni real-time e videogiochi è la rasterizzazione (es. mappatura delle ombre e delle luci) che permette buone performance e una qualità più che accettabile nelle scene dinamiche, ma gli effetti di riflessione e ombre sono pesantemente influenzati dalla qualità delle texture usate e dalla loro risoluzione.

Per i rendering offline (es. film in Computer Graphics ), viene utilizzata la tecnica di Ray tracing , estremamente valida dal punto di vista qualitativo ma difficilmente utilizzabile in ambito real time a causa delle ingenti risorse di sistema necessarie per riprodurre ogni singolo "raggio" di luce all'interno di una scena complessa.

Le API DX10.1 vengono in aiuto del programmatore fornendo una tecnica di Illuminazione Globale che utilizza funzionalità simili alla rasterizzazione ma permettendo un numero virtualmente illimitato di sorgenti luminose, garantendo così una migliore qualità delle ombre e dei riflessi, vero tallone di Achille di questa tecnologia.

Tutte le operazione di gestione dell'illuminazione possono essere svolte in Hardware utilizzando le numerose unità di calcolo parallelo presenti nelle GPU moderne rendendo così possibile la gestione di ambienti complessi senza gravare in modo eccessivo sulle performance finali.

API Direct X 10.1 1. Shader e Texture 1

L'immagine mostra l'uso della tecnica di Illuminazione Globale con un software dimostrativo prodotto da ATI, come si può notale la scena dove la funzionalità è attiva, produce ombre realistiche su ciascun oggetto colpito dalla luce ambientale, senza la funzionalità attiva invece, l'illuminazione è irrealistica non fornendo un effetto di profondità agli oggetti visualizzati.


Occlusione Ambientale

L'occlusione ambientale è una tecnica basata sugli shader che permette di determinare quali parti della scena debbano essere illuminate in relazione agli altri elementi presenti nell'ambiente. Se due oggetti si sovrappongono, l'ombra del primo dovrà essere disegnata sopra l'oggetto sottostante per generare senso di profondità, in assenza di quest'ultima la scena risulterebbe piatta. Le Direct X 10.1 implementano una nuova funzione Gather4 che permette di gestire 4 sample contemporaneamente contro il singolo sample normalmente utilizzato per questa operazione, questo permette di migliorare la qualità delle ombre prodotte ed effetti più sofisticati.

API Direct X 10.1 1. Shader e Texture 2

Nella immagine di sinistra, l'ombra delle palline è ben visibile su quelle che sono posizionate in posizione arretrata, il senso di profondità è quindi ottimale. Nella parte destra dell'immagine invece le palline non producono alcuna ombra sulle altre.