Z-buffer

El algoritmo del pintor es otra solución común, aunque menos eficiente, también puede manejar escenas con elementos no opacos.

El Z-buffering también se conoce como buffering de profundidad.

Cuando un objeto es dibujado por una tarjeta gráfica 3D, la profundidad del píxel generado (coordenada z) se almacena en un búfer de datos (el z-buffer).

Si algún otro objeto de la escena se tiene que renderizar en el mismo pixel, la tarjeta gráfica compara las dos profundidades y elige el más cercano al observador.

Al final, el z-buffer permitirá a la tarjeta gráfica reproducir correctamente la percepción de la profundidad normal: los objetos cercanos ocultan a los más lejanos.

Un z-buffer de 8 bits no se utiliza casi nunca ya que tiene muy poca precisión.

Normalmente esto es deseable, pero puede causar artefactos pareciendo que los objetos parezcan más distantes.

Existe una variación del z-buffer cuya precisión de los resultados están mejor distribuidos, esta se llama w-buffer (ver debajo).

Al dibujar una nueva escena, el z-buffer debe limpiarse a un valor definido, normalmente 1.0, porque este valor es el límite superior de profundidad para una escala del 0 al 1.

Esto significa que no hay objetos más alejados en ese punto en el frustum de visión.

[1]​ La invención del concepto de z-buffer se le suele asignar a Edwin Catmull.

Realmente también Wolfgang Straßer describió esta idea en su tesis doctoral de 19741.

Se han empleado varios métodos para reducir este impacto, tales como compresión sin pérdida (los recursos del ordenador para comprimir y descomprimir son más baratos que el ancho de banda) y hardware ultra-rápido z-clear que utiliza el truco obsoleto de "un frame positivo, un frame negativo" (saltando los frame intermedios utilizando números con signo para comprobar la profundidad inteligentemente).

En renderización, la Z-Culling es la eliminación temprana de un píxel basada en la profundidad, un método que provee un incremento en el rendimiento cuando la renderización de superficies ocultas es costosa.

Cuando se utiliza el z-buffer, un pixel puede ser seleccionado (descartado) tan pronto como sea conocida su profundidad, lo que hace posible saltar el proceso completo de alumbrar y calcular la textura de un pixel que no sería visible de todas formas.

Mientras el z-buffering permite que la geometría no está clasificada, los polígonos clasificados por profundidad creciente (así se utiliza un algoritmo del pintor inverso]]) permite a cada píxel de la pantalla ser renderizado sólo una vez.

en el espacio de la cámara y a veces llamado

Los valores fuera de este rango corresponden a puntos que no están en el frustum de visión y no serán pintados.

Estos valores intermedios se suelen almacenar en el z-buffer en coma flotante.

se agrupan más densamente cerca del plano cercano (

Cuanto más cerca está el plano cercano a la cámara, menor precisión hay en el resto de la escena.

, se almacenan en el buffer, generalmente en formato de coma flotante.

Sin embargo, estos valores no se pueden interpolar linealmente en el espacio de la cámara desde los vértices ya que normalmente deben invertirse, interpolarse e invertirse de nuevo.

Hay implementaciones del W-buffer que evitan la inversión.

Dependiendo de la aplicación se obtendrán mejores resultados con un z-buffer que con un w-buffer y viceversa.

"The Giloi’s School of Computer Graphics".

Representación gráfica de cómo se ve un búfer Z.