Lo Z-Buffer in CG 3D
In Computer Grafica 3D, con il termine z-buffer ci si riferisce alla gestione (il buffer è un'area di memoria) delle coordinate di profondità (la coordinata z) di un oggetto, ossia -nel caso di geometrie- dei vertici che lo compongono, in uno spazio virtuale 3D.
Conoscere tale valore è importante per diversi motivi, primo tra tutti determinare l'occultamento di un oggetto da parte di un altro: dati due oggetti posti lungo lo stesso vettore-direzione rispetto all'osservatore, il renderer dovrà decidere quale dei due è "più vicino" alla telecamera, e quindi quale renderizzare e quale no, perchè "coperto" (z-culling).
La coordinata z entra in scena anche quando bisogna decidere quali oggetti renderizzare e quali no in base al viewing frustum, che è la porzione di spazio compresa tra front clip plane e back clip plane, ossia la porzione di spazio da renderizzare (gli oggetti, o le loro parti, posti al di fuori del viewing frustum non verranno renderizzati).
Con lo z-buffer è possibile anche creare un "ponte" tra elementi video 2D e scene 3D per realizzare effetti speciali, come ad esempio il noto effetto del fantasma che passa attraverso un muro o un oggetto.
A livello hardware, l'area di memoria (buffer) per la coordinata z può avere dimensioni differenti, tuttavia un buffer di 8 bit produrrà risultati scadenti (ed infatti non viene utilizzato mai), mentre le cose migliorano con buffer a 16 o 32 bit, tuttavia anche in questi casi può sorgere ancora il problema di oggetti così vicini (in tutte e tre le coordinate) da non poter determinare quale dei due sta dietro l'altro e viceversa, anche con buffer di dimensione 32 bit.
|