Espaço na tela oclusão ambiente - Screen space ambient occlusion

Oclusão de ambiente de espaço de tela ( SSAO ) é uma técnica de computação gráfica para aproximar com eficiência o efeito de oclusão de ambiente em tempo real. Foi desenvolvido por Vladimir Kajalin enquanto trabalhava na Crytek e foi usado pela primeira vez em 2007 pelo videogame Crysis , também desenvolvido pela Crytek.

Implementação

Componente SSAO de uma cena de jogo típica

O algoritmo é implementado como um sombreador de pixel , analisando o buffer de profundidade da cena que é armazenado em uma textura. Para cada pixel na tela, o sombreador de pixel amostra os valores de profundidade em torno do pixel atual e tenta calcular a quantidade de oclusão de cada um dos pontos amostrados. Em sua implementação mais simples, o fator de oclusão depende apenas da diferença de profundidade entre o ponto amostrado e o ponto atual.

Sem soluções inteligentes adicionais, tal método de força bruta exigiria cerca de 200 leituras de textura por pixel para uma boa qualidade visual. Isso não é aceitável para renderização em tempo real no hardware gráfico atual. Para obter resultados de alta qualidade com muito menos leituras, a amostragem é realizada usando um kernel girado aleatoriamente . A orientação do kernel é repetida a cada N pixels da tela para ter apenas ruído de alta frequência na imagem final. No final, esse ruído de alta frequência é amplamente removido por uma etapa de desfoque pós-processo N x N, levando em consideração descontinuidades de profundidade (usando métodos como comparação de normais e profundidades adjacentes). Tal solução permite uma redução no número de amostras de profundidade por pixel para cerca de 16 ou menos, mantendo um resultado de alta qualidade e permite o uso de SSAO em aplicativos de tempo real soft como jogos de computador.

Em comparação com outras soluções de oclusão de ambiente , SSAO tem as seguintes vantagens:

  • Independente da complexidade da cena.
  • Nenhum pré-processamento de dados necessário, nenhum tempo de carregamento e nenhuma alocação de memória na memória do sistema.
  • Funciona com cenas dinâmicas.
  • Funciona da mesma maneira consistente para cada pixel na tela.
  • Sem uso de CPU - pode ser executado completamente na GPU .
  • Pode ser facilmente integrado em qualquer pipeline gráfico moderno .

O SSAO também tem as seguintes desvantagens:

  • Bastante local e, em muitos casos, dependente da vista, uma vez que depende das profundidades de texel adjacentes que podem ser geradas por qualquer geometria.
  • É difícil suavizar / desfocar corretamente o ruído sem interferir nas descontinuidades de profundidade, como bordas de objetos (a oclusão não deve "sangrar" nos objetos).

Veja também

Referências

links externos