Strato di memoria che memorizza valori di profondità per pixel nel rendering 3D — determina quali geometrie si occludono. Base del compositing basato su profondità.
Sei nel compositing e ti chiedi perché i tuoi rendering 3D sembrano improvvisamente disordinati — gli oggetti si sovrappongono in modo errato, ciò che dovrebbe essere dietro appare davanti. Lo Z-buffer è il tuo strumento per contrastare questo. Memorizza per ogni pixel la coordinata di profondità — la distanza dalla telecamera — e decide in tempo reale quale geometria rimane visibile e quale viene nascosta. Senza quest'area di memoria, il motore 3D non saprebbe se un cubo si trova davanti o dietro un altro.
In pratica funziona così: mentre la GPU renderizza la tua scena, parallelamente a ogni pixel memorizza non solo il colore, ma anche il suo valore Z — la profondità. Se un nuovo pixel colpisce la stessa posizione, il motore confronta la sua profondità Z con il valore memorizzato. Solo se il nuovo pixel è più vicino alla telecamera, viene scritto. Questo è il Depth-Test, e si ripete milioni di volte per frame. Non te ne accorgi perché è dannatamente veloce — ma senza lo Z-buffer dovresti ogni volta ordinare manualmente quali livelli stanno sopra. Un incubo.
Sul set della produzione VFX, hai bisogno dello Z-buffer come Depth-Pass o Z-Depth-Pass. Questo è un layer di rendering separato che visualizza i valori di profondità invece dei colori — chiaro per vicino, scuro per lontano. Nel compositing puoi usarlo per realizzare la profondità di campo, integrare realisticamente i volumetrici o rendere più preciso il keying. Molti renderer ormai memorizzano lo Z-buffer come canale a 32 o 16 bit — più alto è, più sottili sono le sfumature, meno banding nel tuo bokeh.
Un punto critico: lo Z-Fighting si verifica quando due geometrie hanno esattamente la stessa profondità. Allora lo Z-buffer sfarfalla avanti e indietro tra i due oggetti — un glitch fastidioso. Evitabile con piccoli valori di offset o un corretto arrangiamento dei poligoni. Se lavori con volumetrici o oggetti trasparenti, devi anche sapere che lo Z-buffer funziona solo con il classico Depth-Test — alcuni effetti richiedono Order-Independent Transparency (OIT), un altro algoritmo che risolve i problemi di trasparenza in modo più elegante.