Z-buffer

En los gráficos por computadora, el z-buffering es la parte de la memoria de un adaptador de video encargada de gestionar las coordenadas de profundidad de las imágenes en los gráficos en tres dimensiones (3-D), normalmente calculados por hardware y algunas veces por software. Es una de las soluciones al problema de visibilidad, que es el problema de decidir qué elementos de una escena renderizada son visibles y cuáles ocultos. 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). Este búfer se suele distribuir como un array de 2 dimensiones (x-y) con un elemento por cada pixel de la pantalla. 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. La profundidad elegida es entonces salvada en el z-buffer, reemplazando a la antigua. 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. Este efecto se denomina Z-Culling.

La granuralidad de un z-buffer tiene una gran influencia en la calidad de la escena: un z-buffer de 16 bits puede producir un Artefacto (llamado " Z-fighting") cuando dos objetos están muy próximos. Un z-buffer de 24 bits o 32 bits se comporta mucho mejor. Un z-buffer de 8 bits no se utiliza casi nunca ya que tiene muy poca precisión.

Desarrollos

Incluso con suficiente granularidad, los problemas de calidad pueden aparecer cuando la precisión en los valores de distancia del z-buffer no se distribuye por igual. Los valores más cercanos son más precisos (y así pueden mostrar objetos próximos mejor) que los más lejanos. 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 1974 1.

En las tarjetas gráficas de los PC recientes (1999-2005), la gestión del z-buffer utiliza una porción significativa del ancho de banda de la memoria disponible del sistema. 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).

Other Languages
العربية: صوان عمق
Deutsch: Z-Buffer
English: Z-buffering
فارسی: زد بافر
français: Z-buffer
italiano: Z-buffer
日本語: Zバッファ
ქართული: Z-ბუფერი
한국어: Z 버퍼링
Nederlands: Dieptebuffer
polski: Bufor Z
português: Z-buffer
русский: Z-буферизация
slovenčina: Algoritmus z-buffer
svenska: Z-buffer
українська: Z-буферизація
中文: 深度缓冲