Che cos’è l’illuminazione per pixel?

“Illuminazione per pixel” è un termine utilizzato nella computer grafica per indicare che una scena tridimensionale (3D) determinerà il colore degli oggetti pixel per pixel anziché vertice per vertice. L’uso dell’illuminazione per pixel invece dell’illuminazione per vertice di solito crea un’immagine o un fotogramma finito che ha un aspetto più realistico e spesso più nitido e definito, specialmente quando si utilizza il bump mapping. In generale, l’illuminazione per pixel viene implementata attraverso l’uso di pixel shader che possono utilizzare diversi modi per calcolare come la luce in una scena colpisce una particolare area della scena e di che colore dovrebbe essere la superficie risultante. Nelle applicazioni 3D in cui la velocità di rendering è importante, come un’animazione dinamica, l’ombreggiatura per pixel potrebbe non essere pratica perché può richiedere più passaggi attraverso una scena o può semplicemente richiedere troppo tempo e rendere impossibile ottenere un framerate accettabile.

Una delle forme più comuni di applicazione della luce a una scena 3D consiste nell’utilizzare un metodo noto come illuminazione per vertice. Questa tecnica prende i vertici di un oggetto – i punti in cui le linee di un oggetto si incontrano – e determina come dovrebbe apparire la superficie di un oggetto in quella singola posizione. Quando a tutti i vertici di una scena sono collegate informazioni di illuminazione, il renderer utilizzerà l’interpolazione o altri tipi di algoritmi per stimare l’aspetto della superficie dell’oggetto tra i vertici. Ciò si traduce generalmente in aree che dipendono da un’alta densità di vertici in un oggetto per ottenere effetti di luce nitidi, come un punto culminante di phong, mentre una forma come un cubo con solo sei vertici avrà un’illuminazione ampia e graduale attraverso le superfici, indipendentemente dalla trama o dalla posizione di illuminazione.

Al contrario, un programma può implementare l’illuminazione per pixel. Ciò comporta il passaggio attraverso ciascuno dei pixel in una scena rasterizzata e la determinazione del colore e dell’illuminazione individuali per ciascun pixel, indipendentemente dalla sua vicinanza a un vertice. I risultati sono generalmente un’illuminazione nitida e accurata, specialmente con effetti speculari. Il compromesso per una migliore qualità dell’immagine è un tempo di rendering più lungo, perché ogni pixel deve essere elaborato da un pixel shader, anche se questo non è sempre un problema con la modellazione 3D, la grafica e i programmi di rendering che non devono mantenere un particolare framerate.

Gli effetti drammatici dell’illuminazione per pixel, se applicati correttamente, possono effettivamente migliorare l’aspetto di un oggetto a cui è stata applicata una complessa mappatura a rilievo e i minimi dettagli potrebbero andare persi con l’illuminazione per vertice. Anche le texture procedurali possono trarre vantaggio da un approccio di illuminazione per pixel. Inoltre, effetti speciali come i volumi delle ombre richiedono l’uso dell’illuminazione per pixel, così come complessi riflessi di luce, sistemi di particelle o persino aloni in alcuni casi.