Búfer Z

En gráficos por computadora , el búfer Z o búfer de profundidad es un método utilizado en la visualización de una escena 3D. El Z-Buffer permite gestionar el problema de la visibilidad que consiste en determinar qué elementos de la escena deben ser renderizados, cuáles están ocultos por otros y en qué orden se debe realizar la visualización de las primitivas.

Descripción

Se utiliza principalmente para la aceleración 3D de hardware, pero también se utiliza en muchos motores 3D de software.
El algoritmo del pintor es otra solución para resolver parcialmente el problema de visibilidad.

Cuando un objeto es dibujado por una tarjeta gráfica 3D, la profundidad de un píxel (coordenada z) se almacena en un búfer (en inglés 'búfer', donde Z-búfer ). Este búfer es generalmente una matriz bidimensional (X e Y), cada elemento es un píxel en la pantalla. Si otro elemento de la escena debe mostrarse en las mismas coordenadas (X, Y), el mapa compara las dos profundidades (Z) y solo muestra el píxel más cercano a la cámara. El valor Z de este píxel se coloca en el búfer de profundidad, reemplazando así al anterior. Finalmente, la imagen dibujada reproduce la percepción habitual y lógica de la profundidad, el objeto más cercano esconde el más lejano.

La granularidad del búfer de profundidad juega un papel importante en la calidad de la escena. Un búfer con valores codificados de 16 bits puede generar artefactos gráficos (llamados combate Z, combate Z-búfer) cuando dos objetos están muy cerca el uno del otro (solo son posibles 65536 profundidades distintas). Un búfer Z de 32 bits funciona más correctamente. Los búferes Z de 8 bits casi nunca se utilizan debido a su baja precisión.

Por lo general, la precisión del búfer Z no es lineal según el punto, cercano o lejano. Los valores cercanos son más precisos (para mostrar los objetos cercanos con mayor precisión) que los valores distantes (menos importantes visualmente). Por lo general, este es el comportamiento previsto, pero puede traer artefactos visuales al fondo de la escena. Una variación de la técnica del búfer Z soluciona este problema, se llama búfer W.

Al comenzar a mostrar una nueva escena, el búfer Z debe inicializarse con un valor predefinido que represente la profundidad máxima, generalmente cero.

En las tarjetas gráficas de 1999-2005, la gestión del búfer Z utiliza una cantidad significativa de ancho de banda de memoria. Se han empleado varios métodos para reducir este impacto, como la compresión sin pérdidas (la compresión y descompresión por parte del procesador es menos costosa que el ancho de banda de los gráficos) o el borrado superrápido por parte del propio hardware, lo que hace que la técnica de "una vez positiva, una vez negativa "(que hizo posible evitar el borrado mediante la gestión de números firmados).

Matemáticas

El rango de valores de profundidad en el espacio de la cámara que se dibujará a menudo se define entre (valor mínimo) y (valor lejano). Después de la transformación de proyección, el nuevo valor de , o , se define por:

Donde es el nuevo valor de y, a veces, se denomina o .

Los valores resultantes de se normalizan entre -1 y 1, donde el plano es -1 y el plano es 1. Los valores fuera de este rango no están en el volumen de visión y no deben dibujarse.

Para implementar un z-buffer, los valores de se interpolan linealmente en la superficie de la pantalla entre los valores de los puntos del polígono actual.

Otros usos

El Z-Buffer se puede utilizar para otros efectos gráficos, como efectos de desenfoque que varían en intensidad con la profundidad (para simular la profundidad de campo). Conocer la profundidad de cada píxel también permite implementar un efecto de niebla con máxima densidad cuando el píxel está lejos.

Notas y referencias

Artículos relacionados

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