Antialiasing e Anisotropic Filtering

Antes de ser renderizada, a imagem 3D é uma espécie de desenho vetorial, que pode ser exibido em qualquer resolução, sem perda de qualidade. O problema é que o monitor possui uma resolução definida, de forma que a placa de vídeo precisa renderizar a imagem de acordo com a limitação de resolução do monitor, muitas vezes descartando detalhes das imagens.

A partir do ponto em que a placa de vídeo tem potência suficiente para renderizar os frames a uma resolução superior à do monitor, você pode ativar o uso de um algoritmo de antialiasing, o que permite aplicar parte dos ciclos ociosos em melhorar a qualidade das imagens exibidas.

Os algoritmos de antialiasing são chamados genericamente de “FSAA” (Full-Screen Antialiasing). A idéia básica é suavizar as imagens (sobretudo os contornos), reduzindo a granulação e tornando a imagem mais “lisa”, de forma que ela aparente uma resolução maior que a real:

m28e69854

Temos aqui um exemplo de aplicação do antialiasing. Nos dois screenshots temos exatamente a mesma cena, mas você pode perceber que a da direita ficou com os contornos mais suaves e uma qualidade geral muito melhor:

46373520
m681e305c

A primeira geração foi o SSAA (SuperSampling Antialiasing), suportado desde as primeiras versões das placas nVidia GeForce e ATI Radeon. A idéia por trás do SSAA é bastante simples: renderizar imagens 2, 4 ou 8 vezes maiores do que a resolução do monitor e em seguida reduzí-las até a resolução que será exibida, aplicando um algoritmo de antialiasing. Com isso os detalhes são suavizados e a imagem preserva a maior parte dos detalhes da imagem inicial.

O grande problema é que usar o SSAA causa uma grande redução no desempenho da placa de vídeo, já que ela passa a essencialmente renderizar as imagens em uma resolução muito mais alta. Ao usar o valor “4X”, a placa passa a renderizar imagens 4 vezes maiores que a resolução do monitor (1600×1200 ao usar 800×600, por exemplo), o que reduz o FPS a aproximadamente um quarto do valor original (com exceção de casos em que o gargalo seja o processador, e não a placa de vídeo). Isso faz com que o SSAA seja utilizável apenas ao usar uma placa muito parruda, ou ao rodar jogos mais antigos.

A segunda geração é o MSAA, suportado a partir das GeForce 3. No MSAA o cálculo de antialiasing é feito de forma muito mais inteligente, com a placa aplicando processamento apenas em pontos da imagem onde eles podem resultar em ganho de qualidade. Por exemplo, se dentro de um polígono existem 4 pixels idênticos, eles são processados como se fossem apenas um e o mesmo valor de cor é aplicado aos quatro. No SSAA eles seriam processados como 4 pixels separados, o que consumiria 4 vezes mais processamento.

Com a aplicação de sucessivas melhorias no algoritmo do MSAA, tanto por parte da nVidia, quanto por parte da ATI, chegamos ao ponto atual, onde as placas são capazes de aplicar o algoritmo de Antialiasing com uma perda de desempenho relativamente pequena, se comparada ao que tínhamos na época do SSAA.

O Anisotropic Filtering, por sua vez, é uma técnica usada para melhorar a qualidade das texturas quando aplicadas sobre objetos de formato irregular (como, por exemplo, a textura aplicada sobre o piso, em jogos de primeira pessoa), evitando que a qualidade e a nitidez da textura variem de acordo com a proximidade. Veja um exemplo:

71dbf48e
Anisotropic Filtering Ativado

14d7cc6e
Anisotropic Filtering Desativado

Tudo começou com o Bilinear Filtering, efeito usado em jogos antigos, onde a mesma textura é usada em toda a extensão do objeto, utilizando um simples algoritmo de zoom. O Bilinear Filtering é bastante leve, mas resulta em uma qualidade visual ruim, pois faz com que a parte mais próxima fique pixerizada. Em seguida veio o Trilinear Filtering, que utiliza diferentes versões da mesma textura (com diferentes tamanhos) para obter transições mais suaves. Dessa forma, uma versão maior da mesma textura pode ser utilizada na parte mais próxima e uma versão reduzida pode ser utilizada na parte mais distante, amenizando o problema. Naturalmente, o uso do Trilinear Filtering consome mais recursos da placa, sobretudo mais memória, mas a diferença não é tão grande assim.

O Anisotropic Filtering segue o mesmo princípio, mas utiliza um número muito maior de versões da mesma textura, combinado com algoritmos adicionais. Quando ativado, você pode configurar o Anisotropic Filtering com valores de 2x (duas vezes mais versões de cada textura do que no Trilinear Filtering) a 16x (16 vezes mais). Cada aumento no valor corresponde a um pequeno ganho de qualidade, mas a partir de 8x a diferença torna-se muito pequena.

Ativar o Anisotropic Filtering faz com que a placa passe a armazenar um volume muito maior de texturas, o que aumenta tanto o volume de memória de vídeo usada, quanto o volume de dados transferidos. Isso faz com que ele tenha um impacto maior sobre o desempenho em placas de baixo custo, que possuem pouca memória e utilizam barramentos de 64 ou 128 bits, do que em placas mais parrudas, que possuem mais memória e utilizam barramentos de 256 bits ou mais.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X