Anti-aliasing, o que é?

Anti-aliasing



Traduzido por Marcus Sarmanho Hermes Marques
Grupo PC Facts (pcfactspara.blogspot.com.br)
Matéria original de pcgamer.com


Se você desenhar uma linha diagonal com pixels quadrados, as bordas deles criarão um efeito de serrilhamento como se a curva fosse formada por várias retas parecendo uma escada cheia de degraus. Essa feiura (dentre outros artefatos) é chamada Aliasing. Se as resoluções forem bem mais altas, isso não seria um problema, mas enquanto as tecnologias dos displays vão melhorando, temos que compensar isso com o Anti Aliasing.
Há várias técnicas para anti-aliasing, mas o supersampling (SSAA) é bem útil para explicar o processo. Funciona renderizando frames a resolução mais alta que a da tela, e espremendo-os depois para um tamanho menor. 
HL2 ssaa

SSAA in a zoomed in screen from Half-Life 2: Lost Coast.

Considere um pixel em um telhado. É laranja e próximo a ele, há um pixel representando um céu bonito, azul e cheio de luz. Entre um e outro, criou-se uma transição muito serrilhada entre o telhado e o céu azul. Mas se você renderizar a cena em 4 vezes a resolução, esse único pixel laranja, se torna 4 pixels. Alguns desses pixels serão coloridos com a cor do céu e outros com a cor do telhado. Se pegarmos o valor médio de cada um dos 4 valores novos, chegaremos em um valor entre o teto e o céu. Aplique isso em toda a cena e teremos transições muito mais limpas e sem serrilhado.
Em compensação, por mais lindo que possa ficar, SSAA é extremamente exigente computacionalmente. Você está renderizando um frame à resolução duas ou quatro vezes maior do que a que você está jogando  - mesmo com 4 GTX TITAN, tentar rodar com SSAA em 2560x1440 é impraticável. Por isso temos inúmeras alternativas mais eficientes:
Multisampling (MSAA): Alcança bom resultados, não tão bons quanto o SSAA, mas é mais eficiente. Esse é o AA padrão, está quase em todas as configurações dos games e pode ser explicados facilmente pelo vídeo abaixo:

Coverage Sampling (CSAA): versão mais eficiente do MSAA da NVIDIA
Custom-filter (CFAA): versão mais eficiente do MSAA da AMD.
Fast Approximate (FXAA): Em vez de analisar os modelos de 3D (MSAA procura pixels nas bordas dos poligonos), FXAA é um filtro de pós processamento, ou seja, se aplica a cena inteira ja renderizada e é muito eficiente. E ainda busca bordas dentro das texturas, coisa que o MSAA não faz.
Morphological (MLAA): Disponível em placas AMD, MLAA também renderiza o frame  procurando o aliasing e deixando-o mais suave. Como explica Nicholas Vining: "MLAA procura a morfologia (leia-se: os padrões) de serrilhado em bordas; para cada punhado de serrilhado, o MLAA computa uma forma de remover o aliasing. Pode ser habilitado no Painel de Controle Catalyst
Enhanced Subpixel Morphological (SMAA): Outro método via pós processamento, descrito como uma mescla entre MLAA com MSAA e SSAA. Pode ser aplicado com SweetFX.
Temporal (TXAA): Com suporte à GPUs Kepler da NVIDIA, o TXAA combina MSAA com outros filtros e pode reduzir o movimento das bordas serrilhadas, que parecem umas formiguinhas andando nas bordas. 
Multi-Frame (MFAA): Última novidade da Nvidia, exclusivas à Maxwell. Onde MSAA estuda padrões, MFAA permite estudo de padrões programados. NVIDIA explica bem no vídeo
O que os números significam?
As configurações anti aliasing quase sempre incluem uma série de valores: 2x, 4x, 8x e por aí vai. Os números se referem à quantidade de samples de cores sendo considerados e, de maneira geral, quanto maior o número, mais acertado (e computacionalmente pesado) o antialiasing será.
E aí, tem o caso especial dos Q: CSAA tenta alcançar uma qualidade melhor ou igual ao MSAA com menos samples de cores, então 8xCSAA na verdade são 4 samples de cores. 8QxCSAA, entretanto, volta o número para oito para ter mais correição. 

AA comparison1
A close-up on Left 4 Dead 2 with and without CSAA anti-aliasing.
AA detail
More zoom to show the effect on hard diagonal lines.

Performance

Foi usado o benchmark de Batman Arkham City para testar um pouco dos métodos de antialiasing. Os resultados mostram, como esperado, que FXAA é a ferramenta menos punitiva de performance e já o MSAA e TXAA causam significantes quedas na média de framerate.
Batman: Arkham City AA benchmarks (2x Nvidia GTX Titan SLI)

Media FPSMax FPSMin FPS
Sem AA16122457
MSAA 8x8416644
FXAA (alto)15420460 
TXAA (alto)9811867

Qual AA devo usar?

Origins FXAA compare
Pergunta complicada. Depende da sua GPU e preferência. em escala de pior para melhor: FXAA, MLAA, MSAA, CFAA, CSAA e TXAA. Em certos games, você pode achar FXAA ou MLAA melhores que MSAA (você terá que testar). Mas se o seu framerate é um problema a resposta óbvia é FXAA. Neste artigo, não testamos o MFAA da NVIDIA.

Overriding nas configurações de AA

Teoricamente, as configurações ingame não importam. Você pode entrar no painel de controle da NVIDIA ou AMD e fazer um override (passar por cima) de AA - use 32x CSAA se quiser. Infelizmente, este não é o caso. Tivemos poucos sucesso em fazer esse método funcionar. Em Sombras de Mordor e Defense Grid 2 nem é possível colocar. Isso se dá por conta dos métodos dos jogos de AA, o que faz com que o override cause bugs e portanto, a opção é desabilitada.
MLAA vs no aa