La oclusión ambiental del espacio de la pantalla (SSAO) es una técnica de gráficos por computadora para aproximar de manera eficiente el efecto de oclusión ambiental en tiempo real.
Fue desarrollado por Vladimir Kajalin mientras trabajaba en Crytek y fue utilizado por primera vez en 2007 por el videojuego Crysis, también desarrollado por Crytek.
Implementación de la oclusión ambiental
El algoritmo se implementa como un sombreador de píxeles, analizando el búfer de profundidad de la escena que se almacena en una textura.
Para cada píxel de la pantalla, el sombreador de píxeles muestrea los valores de profundidad alrededor del píxel actual e intenta calcular la cantidad de oclusión de cada uno de los puntos muestreados.
En su implementación más simple, el factor de oclusión depende solo de la diferencia de profundidad entre el punto muestreado y el punto actual.
Sin soluciones inteligentes adicionales, un método de fuerza bruta de este tipo requeriría aproximadamente 200 lecturas de textura por píxel para una buena calidad visual.
Esto no es aceptable para la renderización en tiempo real en el hardware de gráficos actual. Para obtener resultados de alta calidad con muchas menos lecturas, el muestreo se realiza utilizando un kernel rotado aleatoriamente.
La orientación del núcleo se repite cada N píxeles de la pantalla para tener solo ruido de alta frecuencia en la imagen final. Al final, este ruido de alta frecuencia se elimina en gran medida mediante un N x N.
Paso de desenfoque posterior al proceso que tiene en cuenta las discontinuidades de profundidad (utilizando métodos como la comparación de normales y profundidades adyacentes).
Tal solución permite una reducción en el número de muestras de profundidad por píxel a aproximadamente 16 o menos mientras mantiene un resultado de alta calidad, y permite el uso de SSAO en aplicaciones de software en tiempo real como juegos de computadora.
En comparación con otras soluciones de oclusión ambiental, SSAO tiene las siguientes ventajas:
- Independientemente de la complejidad de la escena.
- No se necesita preprocesamiento de datos, no hay tiempo de carga ni asignaciones de memoria en la memoria del sistema.
- Funciona con escenas dinámicas.
- Funciona de la misma manera consistente para cada píxel de la pantalla.
- Sin uso de CPU: se puede ejecutar completamente en la GPU.
- Puede integrarse fácilmente en cualquier canal de gráficos modernos.
SSAO también tiene las siguientes desventajas:
- Más bien local y en muchos casos dependiente de la vista, ya que depende de las profundidades de texel adyacentes que pueden ser generadas por cualquier geometría.
- Es difícil suavizar/difuminar correctamente el ruido sin interferir con las discontinuidades de profundidad, como los bordes de los objetos (la oclusión no debe “sangrar” en los objetos).
Enlaces Externos
- Buscando la próxima generación – CryEngine 2
- Video que muestra SSAO en acción
- [Mejora de la imagen al desenfocar enmascarar el búfer de profundidad](http://graphics.uni-konstanz.de/publikationen/2006/unsharp_masking/Luft et al. — Image Enhancement by Unsharp Masking the Depth Buffer.pdf)
- Técnicas de oclusión ambiental acelerada por hardware en GPU
- Descripción general de las técnicas de oclusión ambiental del espacio de la pantalla
- Oclusión ambiental basada en búfer de profundidad en tiempo real
- Código fuente del sombreador SSAO utilizado en Crysis
- Aproximación de la iluminación global dinámica en el espacio de la imagen
- Oclusión ambiental de espacio de pantalla acumulativo
- NVIDIA ha integrado SSAO en los controladores
- Varios métodos de SSAO se describen en el libro de ShaderX7
- Shader SSAO (ruso)
- Tutorial SSAO, extensión de la técnica utilizada en Crysis
Categorías
: Gráficos de computadora / Gráficos 3D por computadora / Sombreado / Algoritmos de iluminación global
Fuente: Wikipedia