El búfer Z irregular es un algoritmo diseñado para resolver el problema de visibilidad en gráficos de computadora en 3D en tiempo real. Está relacionado con el búfer Z clásico en que mantiene un valor de profundidad para cada muestra de imagen y los usa para determinar qué elementos geométricos de una escena son visibles. Sin embargo, la diferencia clave entre el búfer Z clásico y el búfer Z irregular es que este último permite la colocación arbitraria de muestras de imagen en el plano de la imagen , mientras que el primero requiere que las muestras se coloquen en una cuadrícula regular.
Estas muestras de profundidad se almacenan explícitamente en una estructura de datos espaciales bidimensionales. Durante la rasterización , los triángulos se proyectan sobre el plano de la imagen como de costumbre y se consulta la estructura de datos para determinar qué muestras se superponen a cada triángulo proyectado. Finalmente, para cada muestra superpuesta, se realiza la comparación Z estándar y la actualización (condicional) del búfer de cuadros.
Implementación
El algoritmo de rasterización clásico proyecta cada polígono sobre el plano de la imagen y determina qué puntos de muestra de un conjunto espaciado regularmente se encuentran dentro del polígono proyectado. Dado que las ubicaciones de estas muestras (es decir, píxeles) son implícitas, esta determinación se puede realizar probando los bordes contra la cuadrícula implícita de puntos de muestra. Sin embargo, si las ubicaciones de los puntos de muestra están espaciadas irregularmente y no se pueden calcular a partir de una fórmula, entonces este enfoque no funciona. El búfer Z irregular resuelve este problema almacenando las ubicaciones de las muestras explícitamente en una estructura de datos espaciales bidimensionales y luego consultando esta estructura para determinar qué muestras se encuentran dentro de un triángulo proyectado. Este último paso se conoce como "rasterización irregular".
Aunque la estructura de datos particular utilizada puede variar de una implementación a otra, los dos enfoques estudiados son el árbol kd y una cuadrícula de listas enlazadas. Una implementación equilibrada del árbol kd tiene la ventaja de que garantiza un acceso O(log(N)). Su principal desventaja es que la construcción paralela del árbol kd puede ser difícil y el recorrido requiere instrucciones de bifurcación costosas. La cuadrícula de listas tiene la ventaja de que se puede implementar de forma más efectiva en hardware GPU , que está diseñado principalmente para el búfer Z clásico.
Con la aparición de CUDA , la programabilidad del hardware gráfico actual ha mejorado drásticamente. La tesis de maestría, "Rasterización rápida de triángulos utilizando un búfer Z irregular en CUDA" (ver enlaces externos), proporciona una descripción completa de una implementación de software de mapeo de sombras basado en un búfer Z irregular en CUDA. El sistema de renderizado se ejecuta completamente en GPU y es capaz de generar sombras sin aliasing a un rendimiento de docenas de millones de triángulos por segundo.
Aplicaciones
El búfer Z irregular se puede utilizar para cualquier aplicación que requiera cálculos de visibilidad en ubicaciones arbitrarias en el plano de la imagen. Se ha demostrado que es particularmente adecuado para el mapeo de sombras , un algoritmo de espacio de imagen para renderizar sombras duras. Además del renderizado de sombras, las posibles aplicaciones incluyen anti-aliasing adaptativo , muestreo jitter y mapeo del entorno .
Véase también
Enlaces externos
- El Z-Buffer irregular: aceleración de hardware para estructuras de datos irregulares
- El Z-Buffer irregular y su aplicación al mapeo de sombras
- Mapas de sombras sin alias
- Rasterización rápida de triángulos mediante un búfer Z irregular en CUDA