Filtragens de textura, o que é?


Traduzido por Marcus Sarmanho Hermes Marques
Grupo PC Facts (pcfactspara.blogspot.com.br)
Matéria original de PCGamer.com
O filtro bilinear lida com o modo com que a textura - uma imagem 2D (e outros dados) - é demonstrada em um modelo 3D. Um pixel em um modelo 3D não necessariamente corresponde diretamente ao pixel em sua textura (chamado de texel para facilitar), porque assim você vai poder ver esse modelo a qualquer distância e ângulo.Logo, quando nós queremos saber a cor de um pixel, encontramos o ponto na textura a que ele corresponde, pegamos alguns samples de texels próximos, e tiramos uma média. O método mais simples é o da filtragem de textura bilinear e é isso que ele faz: quando um pixel está entre texels, ele verifica as quatro texels mais próximas e encontra sua cor.


Ethancarter
Em filtragem bilinear de The Vanishing of Ethan Carter, é bem óbvio de perceber onde um mipmap começa e outro termina(explicado abaixo).

Introduza o mipmapping, e você terá um novo problema. Digamos que o chão no qual você está em pé é feito de concreto rachado. Se você olhar direto para baixo, você verá uma uma grande e detalhada textura de concreto. Mas quando você olhar para longe, onde essa estrada de concreto encontra o horizonte, não faria sentido um sample de textura de alta resolução enquanto estamos vendo poucos pixels da estrada. Para dar ganhos de performance, sem perder muita ou nenhuma qualidade, o game usa uma textura de resolução mais baixa - chamada de mipmap - para objetos distantes.
Quando olhar a rua de concreto, não queremos perceber onde um mipmap termina e o outro começa, porque deve haver uma grande queda de qualidade. Flitragem bilinear não interpola entre mipmaps, portanto a queda é visível. Isso é resolvido pela filtragem trilinear, que suaviza a transição entre mipmaps, pegando samples de ambos.

Filtragem Anisotrópica

Fallout New Vegas Aniso
A filtragem Trilinear ajuda, mas o chão continua todo borrado. Por isso, usamos a filtragem anisotrópica, que aprimora significativamente a qualidade da textura em ângulos oblíquos. 
Para entender porque, imagine uma janela quadrada - um modelo de pixel 3D -  com uma parede de tijolos bem atrás dela como nossa textura. A luz está brilhando através da janela, criando uma parede de tijolos de formato quadrado. Essa é nossa área de samples para este pixel e é igual em todas as direções.Com filltragem bilinear e trilinear, é assim que as texturas são sempre calculadas.
Se o modelo está diretamente na frente da gente, perpendicular à nossa visão, beleza, mas e se estiver inclinado em relação à nós? Se ainda estivermos calculando um quadrado, estamos fazendo errado e tudo parecerá borrado. O certo seria que a parede de tijolos agora esteja inclinada em relação à janela. O feixe de luz a transformaria em um longo trapézio cobrindo mais de textura na vertical que na horizontal. Isso é a área que deveríamos estar calculando, em uma comparação grosseira, é o que leva em consideração a filtragem anisotrópica. Escalona os mipmaps em uma direção (da forma que inclinamos nossa parede) de acordo com o ângulo que estamos vendo o objeto 3D.
É um conceito difícil de entender e admitimos que a analogia é pouco para explicar a implementação do jeito que realmente é. 

O que os números significam?

Filtragem Anisotrópica vem comumente em 2x, 4x, 8x e 16x.Nvidia descreve essas taxas de amostragem como a quantidade de inclinações de ângulos a filtragem irá se aplicar.
"AF pode funcionar com níveis entre 1 (sem escala) e 16, definindo o grau máximo ao qual um mipmap pode ser escalonado, mas a filtragem anisotrópica é normalmente oferecida ao usuário de dois em dois: 2x, 4x, 8x, and 16x. A diferença é o máximo de ângulos entre estas configurações. Exemplo: 4x vai filtrar texturas com duas vezes mais ângulos que as inclinções em 2x, mas ainda aplicará padrão 2x às texturas com a taxa de 2x para otimizar a performance. Há cada vez menor retorno para cada aumento de configurações de filtragem anisotrópica porque quanto maior, mais raros os ângulos a serem aplicados se tornam."

Performance

Filtragem anisotrópica vai cobrar de seu sistema mais que a bilinear e a trilinear, mas não chega nem perco que uma porrada dada por um antialiasing. No benchmark de BioShock Infinite, foram apenas 6fps a menos por sair da filtragem bilinear para a anisotrópica em 16x. Não é muita diferença considerando o aumento de qualidade imenso.Qualidade alta de textura não faz sentido sem uma filtragem decente.
Bioshock Anisotropic