Z-buffer

Nella computer grafica , lo Z-buffer o il depth buffer è un metodo utilizzato nella visualizzazione di una scena 3D. Lo Z-Buffer permette di gestire il problema della visibilità che consiste nel determinare quali elementi della scena devono essere renderizzati, quali sono nascosti da altri e in quale ordine deve essere fatta la visualizzazione delle primitive.

Descrizione

Viene utilizzato principalmente per l'accelerazione 3D hardware, ma viene utilizzato anche in molti motori 3D software.
L' algoritmo del pittore è un'altra soluzione per risolvere in parte il problema della visibilità.

Quando un oggetto viene disegnato da una scheda grafica 3D, la profondità di un pixel (coordinata z) viene memorizzata in un buffer (in inglese "buffer", dove Z-buffer ). Questo buffer è generalmente un array bidimensionale (X e Y), ogni elemento è un pixel sullo schermo. Se un altro elemento della scena deve essere visualizzato con le stesse coordinate (X, Y), la mappa confronta le due profondità (Z) e visualizza solo il pixel più vicino alla telecamera. Il valore Z di questo pixel viene quindi inserito nel buffer di profondità, sostituendo così quello vecchio. Infine, l'immagine disegnata riproduce la consueta e logica percezione della profondità, l'oggetto più vicino nasconde il più lontano.

La granularità del buffer di profondità gioca un ruolo importante nella qualità della scena. Un buffer con valori codificati a 16 bit può generare artefatti grafici (chiamati combattimento Z, combattimento Z-buffer) quando due oggetti sono molto vicini tra loro (sono possibili solo 65536 profondità distinte). Uno Z-buffer a 32 bit funziona più correttamente. I buffer Z a 8 bit non vengono quasi mai utilizzati a causa della loro bassa precisione.

Di solito, la precisione dello Z-buffer non è lineare a seconda del punto, vicino o lontano. I valori vicini sono più precisi (in modo da visualizzare gli oggetti vicini in modo più fine) rispetto ai valori distanti (meno importanti visivamente). Di solito questo è il comportamento previsto, ma può portare artefatti visivi in ​​fondo alla scena. Una variazione della tecnica Z-buffer risolve questo problema, si chiama W-buffer.

Quando si inizia a visualizzare una nuova scena, lo Z-buffer dovrebbe essere inizializzato con un valore predefinito che rappresenta la profondità massima, solitamente zero.

Sulle schede grafiche dal 1999 al 2005, la gestione del buffer Z utilizza una quantità significativa di larghezza di banda della memoria. Sono stati impiegati diversi metodi per ridurre questo impatto, come la compressione senza perdita di dati (la compressione e la decompressione da parte del processore è meno costosa della larghezza di banda grafica) o la cancellazione super veloce da parte dell'hardware stesso, che quindi rendono la tecnica "una volta positiva, una volta negativa "(che ha permesso di evitare la cancellazione gestendo i numeri firmati).

Matematica

La gamma di valori di profondità nello spazio della telecamera da disegnare è spesso definita tra (valore minimo) e (valore lontano). Dopo la trasformazione della proiezione, il nuovo valore di o è definito da:

Dov'è il nuovo valore di , ea volte viene indicato come o .

I valori risultanti di sono normalizzati tra -1 e 1, dove il piano è -1 e il piano è 1. I valori al di fuori di questo intervallo non sono nel volume di visione e non devono essere disegnati.

Per implementare uno z-buffer, i valori di vengono interpolati linearmente sulla superficie dello schermo tra i valori dei punti del poligono corrente.

Altri usi

Z-Buffer può essere utilizzato per altri effetti grafici come effetti di sfocatura che variano di intensità con la profondità (per simulare la profondità di campo). Conoscere la profondità di ogni pixel consente inoltre di implementare un effetto nebbia con la massima densità quando il pixel è lontano.

Note e riferimenti

Articoli Correlati

<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">