Implementación de una iluminación de oclusión ambiental en gráficos de computadora
La oclusión ambiental del espacio de pantalla (SSAO) es una técnica de gráficos por computadora que permite aproximar eficientemente el efecto de oclusión ambiental en tiempo real. Fue desarrollada por Vladimir Kajalin mientras trabajaba en Crytek y se utilizó por primera vez en 2007 en el videojuego Crysis, también desarrollado por Crytek.
Aplicación
Componente SSAO de una escena típica del juegoEl algoritmo se implementa como un sombreador de píxeles, que analiza el búfer de profundidad de la escena, almacenado 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 oclusión de cada punto muestreado. En su implementación más simple, el factor de oclusión depende únicamente de la diferencia de profundidad entre el punto muestreado y el punto actual.Sin soluciones inteligentes adicionales, este método de fuerza bruta requeriría unas 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 gráfico actual. Para obtener resultados de alta calidad con muchas menos lecturas, el muestreo se realiza mediante un kernel rotado aleatoriamente. La orientación del kernel se repite cada N píxeles de pantalla para obtener únicamente ruido de alta frecuencia en la imagen final. Finalmente, este ruido de alta frecuencia se elimina en gran medida mediante un paso de desenfoque de posprocesamiento de NxN, que tiene en cuenta las discontinuidades de profundidad (utilizando métodos como la comparación de normales y profundidades adyacentes). Esta solución permite reducir el número de muestras de profundidad por píxel a aproximadamente 16 o menos, manteniendo un resultado de alta calidad, y permite el uso de SSAO en aplicaciones de tiempo real flexibles, como los videojuegos.En comparación con otras soluciones de oclusión ambiental, la SSAO ofrece las siguientes ventajas:
Independiente de la complejidad de la escena.
No se necesitan datos previos al procesamiento, ni 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 en la pantalla.
No uso de CPU – se puede ejecutar completamente en la GPU.
Puede integrarse fácilmente en cualquier tubería gráfica moderna.
SSAO también presenta las siguientes desventajas:
Más bien local y en muchos casos mira-dependiente, ya que depende de profundidades de texel adyacentes que puedan ser generadas por cualquier geometría.
Difícil a lisa/azul correctamente el ruido sin interferir con las discontinuidades profundas, como los bordes de objetos (la oclusión no debe "sangrarse" sobre los objetos).
Véase también
Oclusión direccional del espacio de pantalla (SSDO)
Referencias
^"¿Qué es la Oclusión Ambient? ¿Importa en los Juegos?". 31 diciembre 2021.
^Tobias Ritschel; Thorsten Grosch; Hans-Peter Seidel (2009). "Aproximando la Iluminación Global Dinámica en el Espacio de Imagen". Proceedings ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games. Retrieved 25 de noviembre 2015.
Enlaces externos
Encontrar Next Gen – CryEngine 2
Video mostrando SSAO en acción
Mejora de imagen por Unsharp Masking el Buffer de profundidad
Hardware Acelerated Ambient Occlusion Techniques on GPUs
Vista general sobre las técnicas de aislamiento del espacio de pantalla
Oclusión Ambiente Basada en Tiempo Real
Código fuente del sombreador SSAO utilizado en Crysis
Iluminación dinámica global aproximada en el espacio de imagen
Accumulative Screen Space Ambient Occlusion
NVIDIA ha integrado SSAO en los conductores
Varios métodos de SSAO se describen en el libro ShaderX7
SSAO Shader (ruso)
SSAO Tutorial, extensión de la técnica utilizada en Crysis