anti-aliasing é o efeito gráfico que busca corrigir imperfeições existentes em objetos tridimensionais, tais como os famosos serrilhados encontrados nas bordas de objetos e em volta de pequenas estruturas (como cercas, cabelos e folhas de árvore).

Existem, no entanto, diversas técnicas existentes de anti-aliasing (como o MLAA e o MSAA, já vistas neste espaço anteriormente), sendo que cada uma utiliza maneiras específicas para resolver o problema. O resultado, consequentemente, é variado e cada técnica possui vantagens e desvantagens.

Neste artigo iremos destrinchar o funcionamento do FXAA (Fast Approximate Anti-Aliasing, ou Anti-Aliasing de Aproximação Rápida), uma das tecnologias mais versáteis do gênero, criada pela NVIDIA.

O nascimento de uma técnica

Qualidade gráfica e alta compatibilidade

Da mesma forma que o MLAA (Morphological Anti-Aliasing, ou Anti-Aliasing Morfológico), o FXAA é uma técnica que aplica o filtro de anti-aliasing na imagem após ela ter sido ser gerada pela CPU, algo que é vantajoso por aliviar o trabalho da unidade de processamento gráfico do console ou do computador no qual o game está rodando.

O objetivo de seu criador, Timothy Lottes, no entanto, era de criar uma técnica que alcançasse resultados semelhantes aos gerados pelo MSAA (Multi-Sampling Anti-Aliasing, ou Anti-Aliasing de Múltiplas Amostras) de forma mais rápida e mais leve sem deixar de manter o compromisso com a qualidade gráfica.

(Fonte da imagem: Hard OCP)

Além disso, outro alvo visado pelo desenvolvedor era que a sua criação fosse independente de outros processos do computador. Assim, enquanto o MLAA é aplicado via DirectCompute (uma API lançada com o DirectX 11), o FXAA é apenas um shader aplicado após a geração da imagem, fazendo com que seja bastante abrangente com uma alta compatibilidade.

Movendo menos do que um pixel

De fato, Lottes conseguiu alguns méritos com o FXAA. Afinal, ela é uma técnica que exige pouco da placa de vídeo ao mesmo tempo em que apresenta progressos na redução das distorções nas bordas de objetos.

(Fonte da imagem: Hard OCP)
Isso ocorre por conta da técnica contar com uma lógica própria para lidar com espaços de um pixel ou até menos. Desse modo, é possível obter resultados de bordas ainda mais suaves e reduzir ao máximo o sub-pixel aliasing (defeito apresentado em estruturas que são renderizadas com menos de um pixel, fazendo com que fiquem serrilhadas).

Na imagem acima, fornecida pela NVIDIA, é possível notar bem esse efeito. Na primeia tela, à esquerda, não há nenhum tipo de filtro anti-aliasing. Na do centro, o FXAA já está ligado, mas sem o filtro contra o sub-pixel aliasing. Já na terceira, o filtro contra esse defeito é claramente perceptível nos detalhes das folhas.

O desenvolvedor explica o processo de funcionamento do algoritmo da FFXA em oito passos, exemplificados pela imagem abaixo (acompanhe as imagens da esquerda para a direita e de cima para baixo):  

(Fonte da imagem: NVIDIA)

  1. O FXAA analisa as cores da imagem pelo padrão RGB e os converte internamente para estimar os seus níveis de luminosidade;
  2. Em seguida, o algoritmo do FXAA confere o contraste da imagem a fim de evitar o processamento de áreas longe das bordas. As bordas detectadas pelo algoritmo foram marcadas em vermelho, enquanto as áreas em amarelo representam o sub-pixel aliasing encontrado;
  3. Os pixels que passam pela área de contraste são então classificados entre horizontais (marcados com a cor amarela) e verticais (marcados com a cor azul).
  4. Uma vez orientados em direções, os pixels que apresentam maior contraste são então selecionados;
  5. O algoritmo busca então por pontas em todas as direções das bordas. Além disso, a luminosidade média dos pixels das bordas também é verificada;
  6. Identificados os limites das bordas, o algoritmo aplica então uma mudança de posição nos pixels selecionados, os quais são movidos em 90º para uma distância menor do que um pixel. As seções em vermelho e azul representam mudanças  no plano horizontal e as em amarelo e azul claro no plano vertical;
  7. As texturas são então aplicadas novamente à imagem de forma adaptada às mudanças realizadas;
  8. Dependendo da quantidade de sub-pixel aliasing, a imagem recebe um filtro específico para as menores mudanças.

Flexibilidade

Progresso constante

Outra característica da FXAA que a difere das demais técnicas de anti-aliasing é a possibilidade que os desenvolvedores possuem de adaptá-la conforme as suas necessidades.  Assim, de acordo com o jogo que estiverem criando, os desenvolvedores podem preferir uma menor ou maior redução do efeito para alcançar o resultado que melhor se adapte a sua proposta.


Além disso, a FXAA é constantemente atualizada, sendo que existem até o momento ao menos três versões suas: a FXAA 1 (a primeira versão, presente em games como Duke Nukem ForeverAge of ConanBrink e F.E.A.R. 3), a FXAA 2 (modificação feita para o Xbox 360) e a FXAA 3 (a qual apresenta dois algoritmos distintos.

O comum — voltado para consoles de mesa — e o Quality — voltado para potencializar ainda mais os gráficos em computadores). Contudo, embora a FXAA seja uma das técnicas que menos exigem dos processadores e garanta bons resultados sem prejudicar o seu desempenho, ela não é isenta de problemas.

No caso, o seu maior contra é o fato de ela só poder ser aplicada em jogos cujos desenvolvedores a implementarem. Ainda assim, nos games em que a FFXA é utilizada, ela consegue oferecer alguns dos melhores resultados aliados a desempenhos bastante satisfatórios.

Via Baixaki Jogos

Cupons de desconto TecMundo: