fbpx
Wikipedia

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 19741.

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).

Z-Culling

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. Es una consecuencia directa del Z-buffering, donde la profundidad de cada píxel candidato es comparada con la profundidad de la geometría existente detrás de la cual puede estar oculto.

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. También, se reducirá el consumo de tiempo del shader que generalmente no se ejecutará para los píxeles descartados. Esto hace que el z-culling sea un buen candidato a optimización en situaciones donde la tasa de frames, la luz, el cálculo de texturas o el sombreador de píxeles son el principal cuello de botella.

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. Esto puede aumentar el rendimiento en escenas con tasa de frames limitada con grandes sumas de descubiertos.

Modelo matemático

El rango de los valores de profundidad en el espacio de referencias de la cámara (Proyección 3D) a ser renderizado está normalmente definido entre un valor cercano,   y otro lejano   de  . Después de una transformación de perspectiva, el nuevo valor de  , o  , está definido por:

 

Donde   es el valor antiguo de   en el espacio de la cámara y a veces llamado   o  .

Los valores resultantes de   están normalizados entre los valores -1 y 1, donde el plano cercano ( ) está en -1 y el lejano ( ) en 1. Los valores fuera de este rango corresponden a puntos que no están en el frustum de visión y no serán pintados.

Para implementar un z-buffer, los valores de   son interpolados linealmente en:Linear_interpolation a lo largo del espacio de la pantalla entre los vértices de los polígonos. Estos valores intermedios se suelen almacenar en el z-buffer en coma flotante. Los valores de   se agrupan más densamente cerca del plano cercano ( ) y más esparcidos en el resto de la escena, resultando una precisión mayor cerca de la cámara. Cuanto más cerca está el plano cercano a la cámara, menor precisión hay en el resto de la escena.

W-buffer

Para implementar un w-buffer, los valores antiguos de   en el espacio de la cámara, o  , 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. Los valores resultantes de   son los opuestos de   que están equiespaciados entre   y  . 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.

Véase también

Referencias

  1. en:Viewing_frustum

Notas

Nota 1: ver W.K. Giloi, J.L. Encarnação, W. Straßer. "The Giloi’s School of Computer Graphics". Computer Graphics 35 4:12–16.

Enlaces externos

  • Learning to Love your Z-buffer
  •   Datos: Q135743
  •   Multimedia: Z-buffering

buffer, gráficos, computadora, buffering, parte, memoria, adaptador, video, encargada, gestionar, coordenadas, profundidad, imágenes, gráficos, tres, dimensiones, normalmente, calculados, hardware, algunas, veces, software, soluciones, problema, visibilidad, p. En los graficos 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 imagenes en los graficos 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 que elementos de una escena renderizada son visibles y cuales ocultos El algoritmo del pintor es otra solucion comun aunque menos eficiente tambien puede manejar escenas con elementos no opacos El Z buffering tambien se conoce como buffering de profundidad Cuando un objeto es dibujado por una tarjeta grafica 3D la profundidad del pixel generado coordenada z se almacena en un bufer de datos el z buffer Este bufer se suele distribuir como un array de 2 dimensiones x y con un elemento por cada pixel de la pantalla Si algun otro objeto de la escena se tiene que renderizar en el mismo pixel la tarjeta grafica compara las dos profundidades y elige el mas cercano al observador La profundidad elegida es entonces salvada en el z buffer reemplazando a la antigua Al final el z buffer permitira a la tarjeta grafica reproducir correctamente la percepcion de la profundidad normal los objetos cercanos ocultan a los mas 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 estan muy proximos 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 precision Indice 1 Desarrollos 2 Z Culling 3 Modelo matematico 3 1 W buffer 4 Vease tambien 5 Referencias 6 Notas 7 Enlaces externosDesarrollos EditarIncluso con suficiente granularidad los problemas de calidad pueden aparecer cuando la precision en los valores de distancia del z buffer no se distribuye por igual Los valores mas cercanos son mas precisos y asi pueden mostrar objetos proximos mejor que los mas lejanos Normalmente esto es deseable pero puede causar artefactos pareciendo que los objetos parezcan mas distantes Existe una variacion del z buffer cuya precision de los resultados estan 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 limite superior de profundidad para una escala del 0 al 1 Esto significa que no hay objetos mas alejados en ese punto en el frustum de vision 1 La invencion del concepto de z buffer se le suele asignar a Edwin Catmull Realmente tambien Wolfgang Strasser describio esta idea en su tesis doctoral de 19741 En las tarjetas graficas de los PC recientes 1999 2005 la gestion del z buffer utiliza una porcion significativa del ancho de banda de la memoria disponible del sistema Se han empleado varios metodos para reducir este impacto tales como compresion sin perdida los recursos del ordenador para comprimir y descomprimir son mas baratos que el ancho de banda y hardware ultra rapido z clear que utiliza el truco obsoleto de un frame positivo un frame negativo saltando los frame intermedios utilizando numeros con signo para comprobar la profundidad inteligentemente Z Culling EditarEn renderizacion la Z Culling es la eliminacion temprana de un pixel basada en la profundidad un metodo que provee un incremento en el rendimiento cuando la renderizacion de superficies ocultas es costosa Es una consecuencia directa del Z buffering donde la profundidad de cada pixel candidato es comparada con la profundidad de la geometria existente detras de la cual puede estar oculto 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 seria visible de todas formas Tambien se reducira el consumo de tiempo del shader que generalmente no se ejecutara para los pixeles descartados Esto hace que el z culling sea un buen candidato a optimizacion en situaciones donde la tasa de frames la luz el calculo de texturas o el sombreador de pixeles son el principal cuello de botella Mientras el z buffering permite que la geometria no esta clasificada los poligonos clasificados por profundidad creciente asi se utiliza un algoritmo del pintor inverso permite a cada pixel de la pantalla ser renderizado solo una vez Esto puede aumentar el rendimiento en escenas con tasa de frames limitada con grandes sumas de descubiertos Modelo matematico EditarEl rango de los valores de profundidad en el espacio de referencias de la camara Proyeccion 3D a ser renderizado esta normalmente definido entre un valor cercano n e a r displaystyle mathit near y otro lejano f a r displaystyle mathit far de z displaystyle z Despues de una transformacion de perspectiva el nuevo valor de z displaystyle z o z displaystyle z esta definido por z f a r n e a r f a r n e a r 1 z 2 f a r n e a r f a r n e a r displaystyle z frac mathit far mathit near mathit far mathit near frac 1 z left frac 2 cdot mathit far cdot mathit near mathit far mathit near right Donde z displaystyle z es el valor antiguo de z displaystyle z en el espacio de la camara y a veces llamado w displaystyle w o w displaystyle w Los valores resultantes de z displaystyle z estan normalizados entre los valores 1 y 1 donde el plano cercano n e a r displaystyle near esta en 1 y el lejano f a r displaystyle far en 1 Los valores fuera de este rango corresponden a puntos que no estan en el frustum de vision y no seran pintados Para implementar un z buffer los valores de z displaystyle z son interpolados linealmente en Linear interpolation a lo largo del espacio de la pantalla entre los vertices de los poligonos Estos valores intermedios se suelen almacenar en el z buffer en coma flotante Los valores de z displaystyle z se agrupan mas densamente cerca del plano cercano n e a r displaystyle near y mas esparcidos en el resto de la escena resultando una precision mayor cerca de la camara Cuanto mas cerca esta el plano cercano a la camara menor precision hay en el resto de la escena W buffer Editar Para implementar un w buffer los valores antiguos de z displaystyle z en el espacio de la camara o w displaystyle w 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 camara desde los vertices ya que normalmente deben invertirse interpolarse e invertirse de nuevo Los valores resultantes de w displaystyle w son los opuestos de z displaystyle z que estan equiespaciados entre n e a r displaystyle near y f a r displaystyle far Hay implementaciones del W buffer que evitan la inversion Dependiendo de la aplicacion se obtendran mejores resultados con un z buffer que con un w buffer y viceversa Vease tambien EditarEdwin Catmull inventor del concepto de z buffer Graficos 3D por computadora z fighting Z buffer irregular Z orderReferencias Editar en Viewing frustumNotas EditarNota 1 ver W K Giloi J L Encarnacao W Strasser The Giloi s School of Computer Graphics Computer Graphics 35 4 12 16 Enlaces externos EditarLearning to Love your Z buffer Datos Q135743 Multimedia Z bufferingObtenido de https es wikipedia org w index php title Z buffer amp oldid 134177174, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos