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
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
- Encontrando a próxima geração - CryEngine 2
- Vídeo mostrando SSAO em ação
- Aprimoramento de imagem por Unsharp mascarando o buffer de profundidade
- Técnicas de oclusão de ambiente aceleradas por hardware em GPUs
- Visão geral das técnicas de oclusão do ambiente do espaço da tela
- Oclusão de ambiente baseada em buffer de profundidade em tempo real
- Código-fonte do shader SSAO usado no Crysis
- Aproximando a iluminação global dinâmica no espaço da imagem
- Oclusão acumulativa do ambiente do espaço da tela
- NVIDIA integrou SSAO aos drivers
- Vários métodos de SSAO são descritos no livro ShaderX7
- SSAO Shader (russo)
- Tutorial SSAO, extensão da técnica usada no Crysis