O Super-Sampling Anti-Aliasing — ou simplesmente SSAA — é uma técnica específica de anti-aliasing, como o Multi-Sampling (MSAA). É uma forma alternativa, portanto, de aplicar correções de bordas serrilhadas com a suavização de imagens renderizadas (desenhadas) em programas e games de diversas plataformas. O SSAA surgiu pela primeira vez nas séries 4/5 das placas de vídeo conhecidas como Voodoo (abaixo, uma 3DFX Voodoo 5 5500).
Fonte: Wikipedia
Como funciona?
No SSAA, são coletadas amostras de várias instâncias — e não necessariamente do centro, como é o padrão — do pixel manipulado. Em seguida, é calculada uma “média” entre as cores de cada amostra. Isso é obtido pela renderização interna da imagem abordada em uma resolução maior do que aquela em que a figura está sendo visualizada.
Depois disso, a imagem passa pelo processo de downsampling — literalmente um “encolhimento” — para o tamanho desejado, e os pixels extras são utilizados para os cálculos. O resultado final é uma série de transições mais suavizadas de uma linha de pixels para outra nas bordas dos objetos.
Os modos específicos de SSAA são nomeados de acordo com a resolução usada internamente. Por exemplo: 2x1 significa que a resolução interna duplicou a resolução horizontal e manteve a resolução vertical. O resultado é que cada pixel final é feito a partir da média de dois pixels. Já no modo 4x4 cada pixel final é criado a partir da média de 16 pixels.
Fontes: PantherProducts e Wikipedia
A imagem à esquerda mostra o que ocorre quando a técnica de Super-Sampling — “superamostragem” — é usada em quatro quadrados na posição central. Três dos quatro quadrados estão em ambas as áreas vermelha e branca. Sendo assim, eles serão exibidos com um matiz laranja.
Um dos quadrados está inteiramente localizado na região branca, portanto o pixel será mostrado como puramente branco. Se uma das amostras fosse retirada de uma área inteiramente vermelha, o pixel seria mostrado somente na cor rubra. É óbvio que as amostras são muito mais complexas que isso, possuindo diversas cores para o cálculo da média. No entanto, o princípio é o mesmo. Matematicamente, a cor de cada pixel é calculada.
Como de praxe, o número inicial de amostras coletadas determina a qualidade do resultado. É por isso que é muito comum, em jogos e programas para computadores, encontrar telas de configurações gráficas com diferentes opções de SSAA de acordo com esse indicador de amostragem.
O Catalyst Control Center, por exemplo, permite que os usuários das placas de vídeo AMD possam manualmente escolher o SSAA como técnica de anti-aliasing a ser utilizada em aplicativos com visuais tridimensionais.
Em games para consoles, entretanto, são as desenvolvedoras dos títulos que decidem qual o nível de SSAA a ser utilizado pela placa de vídeo da plataforma em questão. É claro que é preciso sabedoria e experiência para conciliar desempenho e qualidade visual, embora tenha sido comprovado que o SSAA é um dos métodos menos eficientes (na relação custo/benefício) para o uso em consoles.
Algoritmos de Super-Sampling
Há vários tipos de algoritmos empregados para a aplicação do SSAA. Todos eles variam de acordo com o local onde as amostras extras são coletadas dentro do pixel.
O OGSS (Ordered Grid Super-Sampling ou simplesmente Grid) é o algoritmo mais simples. O pixel é dividido em vários subpixels e uma amostra é retirada do centro de cada um deles. O Grid é fácil e rápido de ser “implementado”. Mesmo assim, devido à natureza regular da amostragem, bordas serrilhadas podem continuar ocorrendo se um baixo número de subpixels for utilizado.
Já o Random (Aleatório, também chamado de Stochastic Sampling) foge da regularidade do Grid. Contudo, a irregularidade do código faz com que as amostras acabam se tornando desnecessárias em certas áreas do pixel e estejam em falta em outras.
Fonte: Wikipedia
O Poisson Disc também coleta as amostras aleatoriamente, mas marca as duas que não estão tão próximas da área principal. A distribuição das amostras, portanto, é aleatória, porém o resultado final fica uniforme. A desvantagem? O tempo computacional requerido para o uso do algoritmo PD é muito extenso.
O algoritmo conhecido como Jittered é uma modificação do Grid que se aproxima do PD. Aqui, um pixel é dividido em vários subpixels e a amostra não é retirada do centro de cada um, mas sim de um ponto aleatório dentro de cada subpixel. A “congregação” ainda pode ocorrer, mas em uma escala menor.
Por fim, o Rotated Grid — RGSS — emprega um layout 2x2, mas o padrão de amostragem é girado para evitar que as amostras fiquem alinhadas aos eixos horizontal ou vertical. Isso melhora consideravelmente a qualidade do anti-aliasing nos casos encontrados mais comumente no universo gráfico.
Prós e contras
Em termos de desenvolvimento, o SSAA é uma técnica computacionalmente “cara”, pois requer muito mais memória de vídeo e banda de memória, levando em consideração que o buffer (registro) utilizado é bem maior que o “normal”.
Uma possível solução para esse problema é o Adaptive Super-Sampling, uma técnica que reconhece que são bem poucos os pixels presentes em um limite de objeto e, por causa disso, apenas esses pontos devem passar pelo Super-Sampling.
Com esse método, apenas algumas amostras são retiradas de um pixel. Se os valores dessas amostras forem muito similares, apenas elas serão utilizadas para a determinação da cor final. Caso contrário, mais samples são usadas. Sendo assim, um número elevado de amostras é calculado apenas quando necessário, o que melhora o desempenho da aplicação.
De forma geral, o SSAA apresenta uma excelente qualidade na imagem final, suaviza corretamente até mesmo as bordas localizadas dentro de texturas alpha-blended — processo de combinação entre cores frontais translúcidas e cores de fundo — e também reduz o Texture Shimmering (efeito no qual o jogador tem a impressão de que as texturas de certos objetos estão “caminhando” junto com a câmera).
Por outro lado, o desempenho é afetado consideravelmente com o uso do SSAA. Enquanto o modo 2x1 faz o processador gráfico “se esforçar” duas vezes mais, o 2x2 demanda quatro vezes o poder de processamento e o 4x4 leva a máquina a trabalhar 16 vezes mais.
Além disso, há limitações na resolução-alvo. A resolução interna máxima é 4096 pixels em ambos os eixos (vertical e horizontal). Portanto, o modo 4x4 pode ser usado apenas em 1024x768 ou menos. O limite para placas de vídeo NVIDIA GeForce 8, por exemplo, é 2048x1536. Outro aspecto negativo é que certos modos SSAA só ficam disponíveis com o uso do Direct3D e não aparecem em programas com base na tecnologia OpenGL.
É importante considerar que, para boa parte dos jogos eletrônicos, a queda no desempenho gerada pelo SSAA não é aceitável se a resolução utilizada for 1280x1024 ou mais. No entanto, usar certos modos de SSAA durante a experiência com um game mais antigo — com o auxílio de um potente chip gráfico, obviamente — pode gerar uma melhoria incrível na qualidade visual sem diminuir drasticamente as taxas de quadro por segundo (fps).
Alguns títulos, como The Chronicles of Riddick: Escape From Butcher Bay, produzem um nível elevado de Texture Shimmering devido às texturas extremamente detalhadas e efeitos gráficos de peso. Nesses casos, o ideal é diminuir a resolução do jogo e aplicar, por exemplo, o modo 2x2 de SSAA para melhorar os visuais na versão do game para computadores.
O pessoal do site nHancer — clique aqui e confira — fez uma comparação interessante com alguns tipos de SSAA em imagens do jogo Half-Life 2. Aí, fica fácil perceber a diferença entre o MSAA, o SSAA e as técnicas combinadas de anti-aliasing, principalmente no que diz respeito ao número de amostras empregadas.
Veja também: