L’illuminazione OpenGL® è uno degli aspetti più complessi, e talvolta meno compresi, della programmazione di computer grafica tridimensionale (3D). Può essere utilizzato per aggiungere i ritocchi finali necessari e realistici a una scena renderizzata, ma può anche essere impegnativo dal punto di vista computazionale e, in definitiva, creare confusione quando gli effetti non sono facilmente ottenibili. Alcuni elementi, come la definizione delle normali alla superficie, possono essere facilmente compresi mentre altre parti del modello di illuminazione, come la divisione dei diversi tipi di luce, potrebbero richiedere più studio per essere pienamente compresi. Di solito sono presenti due problemi quando si lavora con l’illuminazione OpenGL®: velocità di rendering e qualità. Ci sono alcuni suggerimenti che possono aiutare a raggiungere una proporzione accettabile di entrambi, ma alla fine sarà necessario trovare un compromesso tra qualità e velocità.
Un problema che si incontra comunemente, specialmente per chi non conosce l’illuminazione OpenGL®, è che ogni vertice in una scena deve avere la sua normale di superficie definita. Senza le normali, il renderer utilizzerà invece una singola costante, facendo sì che tutto in una scena appaia piatto e non ombreggiato. Un trucco quando si definiscono le normali consiste nell’utilizzare valori che non sono perpendicolari alla superficie, ma rivolti invece in una direzione diversa. Ciò cambierà il modo in cui la luce viene renderizzata sulla superficie e può essere utilizzata per creare facilmente rumore o trame rocciose, un processo noto come bump mapping.
Per ottenere effetti buoni, e potenzialmente unici, in una scena utilizzando l’illuminazione OpenGL®, è necessario comprendere appieno cosa comportano le fonti di luce ambientale, speculare, diffusa ed emettitrice. Una scena piena di nebbia può essere resa più realistica con un valore ambientale alto e grigio. Allo stesso modo, effetti speciali come il fuoco o le luci esposte possono essere realizzati con materiali e sorgenti luminose. La stratificazione e la combinazione dei quattro modelli di base sono ciò che può far sembrare una scena più realistica.
È importante capire che l’illuminazione OpenGL® richiede una grande quantità di potenza del processore per ogni fotogramma renderizzato. Ciò significa che l’ottimizzazione di una scena può aiutare a ottenere un frame rate migliore. Alcune cose che possono ridurre il tempo di rendering sono utilizzare il minor numero possibile di sorgenti luminose, ridurre al minimo la quantità di superfici illuminate ed evitare algoritmi o estensioni che elaborano il framebuffer finale più volte. Anche lo spostamento dell’illuminazione in una scena può avere effetti negativi sulle prestazioni e dovrebbe essere evitato quando la velocità di rendering diventa problematica.
Un ultimo consiglio sull’utilizzo dell’illuminazione OpenGL® è sapere quando non utilizzare l’illuminazione OpenGL®. Può essere facile pensare di posizionare oggetti e luci che emettono in una scena in ogni punto in cui ci si trova nella realtà, ma questo può diventare rapidamente poco pratico. Invece, molti trucchi di illuminazione possono essere fatti attraverso le illusioni usando immagini di texture ben fatte che hanno l’illuminazione già disegnata sulla superficie. Allo stesso modo, organizzare la geometria di una scena a volte può eliminare la necessità di più fonti di luce nascondendo alcune aree problematiche o consentendo a una singola fonte all’interno di un oggetto composto cavo di risplendere attraverso più aperture pianificate.