Digital Foundry: O Futuro do Anti-Aliasing
Linhas retas.
O FXAA já está a reunir bastante suporte com versões iniciais da técnica a serem implementadas em Crysis 2 e Duke Nukem Forever, no PC. O criador independente Keith Judge, que anteriormente trabalhou em jogos como os títulos Burnout Revend e Paradise, e os títulos Fable na Xbox 360, está atualmente a implementar o FXAA no seu ainda não anunciado título de estreia para PC. Ele está realmente impressionando com o impacto da técnica no seu jogo.
”A principal razão para a preferir sobre o MSAA é que torna a renderização diferida mais simples, apesar do MSAA poder alcançar melhor qualidade com amostras suficientes, especialmente em longas arestas quase horizontais/verticais,” diz ele.
”Estou a usar DX11 que – em teoria – resolveu esses problemas pois podes reunir amostras MSAA de cor/profundidade individuais dentro do shadder ao iluminar, mas eu quero ter suporte para um maior leque de equipamento possível, usando o sistema de nivelação de funcionalidades do DX11 (por exemplo, a minha DX10 GeForce 8800, que não pode fazer isso) portanto o MSAA está fora. Posso ter usado o MLAA, mas a qualidade não é tão boa – existe muito aliasing nas funcionalidades sub-pixel, especialmente em movimento como notaram em algumas das vossas análises PS3.”
O que o MLAA e o FXAA tem em comum é que são filtros pós-processamento. Apenas olham para a imagem a ser processada como um framebuffer 2D achatado – a imagem final que vês na tua HDTV (falando no geral, a ser processada antes do HUD ser adicionado é uma boa ideia). É a chave para as vantagens na velocidade e recursos de luzes em ambas as técnicas – e bom para nós, porque podemos simplesmente aplicar filtros a pré-existentes capturas de vídeo que temos para mostrar comparações antes e depois. No entanto, in-game, também pode causar artefactos, e na verdade dá ênfase a arestas sub-pixel pelas razões que Alex Fry mencionou anteriormente. As paisagens citadinas em Killzone 3 e Shift 2, e a introdução de MotorStorm Apocalypse são bons exemplos dos problemas que simplesmente não irias ter com uma abordagem tradicional multi-sampling.
”Comum a todos os filtros anti-aliasing que existem, se estás a trabalhar com a resolução de apresentação final (1x) pixel-popping vai surgir mais cedo ou mais tarde,” explica a Team Jimenez.
”Podes tentar atenuar ou eliminar pixeis ‘espúrios’ mas acreditamos que esta não é a melhor solução pois não ataca a raiz do problema: sub-sampling. Como dissemos antes, somos mesmo conservadores com a imagem, portanto evitamos introduzir passos adicionais que nem sempre funcionam, portanto podem afetar negativamente a coerência temporal.”
Como vão ver nas nossas sequências de teste, a diferença entre o FXAA e o Jimenez MLAA é bem impressionante. Ambas suavização os jaggies, mas o Jimenez MLAA parece aplicar um pouco mais leve à qualidade geral da imagem do que vimos em outras implementações. Se queres reter qualidade apuradíssima, mas beneficiar de soberba suavização de arestas, a solução MLAA pode mesmo parecer fantástica. Pelo que vale, o FXAA pode fazer maravilhas com imagens “ruidosas” de alta frequência. Need for Speed: Hot Pursuit e Enslaved em particular estão mesmo muito bem, dando aquele aspeto de “filme” de toda a cena, que Timothy Lottes descreve.
O que temos neste caso são duas soluções muito diferentes, talvez adequadas a diferentes aspetos estéticos. No entanto, como diz Lottes, o FXAA consola é consideravelmente menos intensivo em recursos, operando a cerca de 1ms na Xbox 360, enquanto o Jimenez MLAA está atualmente nos 2.4ms (estimativas iniciais nos 1.3ms provaram estar incorretas) apesar da equipa reconhecer que isto pode ser reduzido com mais esforços de otimização.
No entanto, o facto de os filtros de pós-processamento estarem simplesmente a abordar uma imagem final renderizada vai sempre apresentar algumas desvantagens. Isto é talvez demonstrado mais dramaticamente ao verificar este vídeo de Far Cry 2 a correr no PC. Aqui corremos o Jimenez MLAA e o FXAA consola, pelo vídeo base “sem AA”, depois fazemos novamente os testes com níveis de MSAA cada vez maiores. Notem a quantidade de vegetação na cena: um detalhe sub-pixel massivo que progressivamente se torna melhor filtrado, o nível maior de multi-sampled anti-aliasing. Este tipo de processamento não pode simplesmente ser igualado por qualquer filtro pós-processamento em tempo real. O teste em si pode ser considerado bem extremo, mas demonstra como o multi-sampling faz uma grande diferença.
”Pensamos que o próximo passo envolve uma abordagem híbrida combinando MSAA (com baixas contagens de amostras) com técnicas anti-aliasing baseadas em filtragens,” diz a equipa Jimenez MLAA.
”Isto iria permitir uma boa troca entre funcionalidades sub-pixel, gradientes de suavização e tempo de processamento baixo.”
Timothy Lottes tem feito alguns testes, envolvendo o trabalho de super-sampling em sintonia com o FXAA. Super-sampling é basicamente a melhor forma de anti-aliasing que podes ter: renderizar uma imagem internamente numa resolução muito maior, e depois fazer o downscale para o framebuffer de saída: quanto maior a resolução interna, melhor o resultado no downscale. Segundo Lottes, a resolução não precisa de ser assim tão alta se o FXAA for introduzida na equação.
”Aplicar o FXAA antes do downscale e equilibrar as amostras aumenta a qualidade do super-sampling, e com o FXAA, e o super-sampling fracional funciona muito bem: mesmo quando renderiza apenas 1.7 vezes o número de pixeis,” ele explica.
”Isto permite ao comum shading diferido, baseado no motor de jogo, escalar com transparência a qualidade do pixel juntamente com a performance do GPU, sem passar pela complexidade de adicionar o shading de rácio variável, necessário com multi-sampling por equipamento para manter a performance. Uma aplicação entusiasmante do mundo real seria um jogo limitar-se a 60Hz no PC mas usar o poder de processamento do GPU que sobra para aumentar a qualidade do pixel usando super-sampling dinamicamente fracional com FXAA.”