Anti-aliasing multisample - Multisample anti-aliasing

O anti-aliasing multisample ( MSAA ) é um tipo de anti-aliasing espacial , uma técnica usada em computação gráfica para remover jaggies .

Definição

O termo geralmente se refere a um caso especial de superamostragem . As implementações iniciais de anti-aliasing de cena completa ( FSAA ) funcionaram conceitualmente simplesmente renderizando uma cena em uma resolução mais alta e, em seguida, reduzindo a resolução para uma saída de resolução mais baixa. A maioria das GPUs modernas são capazes dessa forma de anti-aliasing, mas isso sobrecarrega recursos como textura, largura de banda e taxa de preenchimento . (Se um programa é altamente limitado por TCL ou CPU , a superamostragem pode ser usada sem muito impacto no desempenho.)

De acordo com a especificação OpenGL GL_ARB_multisample, "multisampling" refere-se a uma otimização específica de supersampling. A especificação determina que o renderizador avalie o programa de fragmento uma vez por pixel e apenas "verdadeiramente" supere os valores de profundidade e estêncil . (Isso não é o mesmo que superamostragem, mas, pela especificação OpenGL 1.5, a definição foi atualizada para incluir implementações de superamostragem também.)

Na literatura gráfica em geral, "multisampling" refere-se a qualquer caso especial de supersampling onde alguns componentes da imagem final não são totalmente supersampling. As listas abaixo referem-se especificamente à definição ARB_multisample.

Descrição

No anti-aliasing de superamostra, vários locais são amostrados dentro de cada pixel, e cada uma dessas amostras é totalmente renderizada e combinada com as outras para produzir o pixel que é finalmente exibido. Isso é caro do ponto de vista computacional, porque todo o processo de renderização deve ser repetido para cada local de amostra. Também é ineficiente, pois o aliasing normalmente só é percebido em algumas partes da imagem, como as bordas, enquanto a superamostragem é realizada para cada pixel.

No anti-aliasing de multisample, se qualquer um dos locais de multisample em um pixel for coberto pelo triângulo sendo renderizado, um cálculo de sombreamento deve ser executado para esse triângulo. No entanto, esse cálculo só precisa ser executado uma vez para todo o pixel, independentemente de quantas posições de amostra são cobertas; o resultado do cálculo de sombreamento é simplesmente aplicado a todos os locais relevantes de várias amostras.

No caso em que apenas um triângulo cobre cada localização de múltiplas amostras dentro do pixel, apenas um cálculo de sombreamento é realizado e esses pixels são um pouco mais caros (e o resultado não é diferente) do que na imagem sem suavização de serrilhado. Isso é verdade para o meio dos triângulos, onde o aliasing não é um problema. (A detecção de bordas pode reduzir isso ainda mais, limitando explicitamente o cálculo MSAA a pixels cujas amostras envolvem múltiplos triângulos ou triângulos em múltiplas profundidades.) No caso extremo em que cada um dos locais de múltiplas amostras é coberto por um triângulo diferente, um cálculo de sombreamento diferente será realizada para cada local e os resultados então combinados para dar o pixel final, e o resultado e despesa computacional são os mesmos que na imagem superamostrada equivalente.

O cálculo de sombreamento não é a única operação que deve ser executada em um determinado pixel; implementações de multisampling podem amostrar de várias maneiras outras operações, como visibilidade em diferentes níveis de amostragem.

Vantagens

  • O sombreador de pixel geralmente só precisa ser avaliado uma vez por pixel.
  • As bordas dos polígonos (a fonte mais óbvia de serrilhado em gráficos 3D) têm suavização de serrilhado.
  • Uma vez que vários subpixels por pixel são amostrados, detalhes poligonais menores que um pixel que poderiam ter sido perdidos sem o MSAA podem ser capturados e tornados parte da imagem final renderizada se amostras suficientes forem obtidas.

Desvantagens

Teste alfa

O teste alfa é uma técnica comum a videogames mais antigos, usada para renderizar objetos translúcidos, rejeitando os pixels de serem gravados no framebuffer. Se o valor alfa de um fragmento translúcido não estiver dentro de um intervalo especificado, ele será descartado após o teste alfa. Como isso é realizado pixel a pixel, a imagem não recebe os benefícios da multiamostragem (todas as multisamples em um pixel são descartadas com base no teste alfa) para esses pixels. A imagem resultante pode conter aliasing ao longo das bordas de objetos transparentes ou bordas dentro de texturas, embora a qualidade da imagem não seja pior do que seria sem qualquer anti-aliasing. Objetos translúcidos que são modelados usando texturas de teste alfa também receberão alias devido ao teste alfa. Esse efeito pode ser minimizado renderizando objetos com texturas transparentes várias vezes, embora isso resulte em uma redução de alto desempenho para cenas contendo muitos objetos transparentes.

Aliasing

Como a multiamostragem calcula fragmentos de polígonos internos apenas uma vez por pixel, o aliasing e outros artefatos ainda serão visíveis dentro dos polígonos renderizados, onde a saída do sombreador de fragmento contém componentes de alta frequência.

Desempenho

Embora menos intensivo em desempenho do que SSAA (superamostragem), é possível em certos cenários (cenas pesadas em fragmentos complexos) para MSAA ser várias vezes mais intensivo para um determinado quadro do que técnicas de anti-aliasing de pós-processamento, como FXAA , SMAA e MLAA . As primeiras técnicas nesta categoria tendem a ter um impacto de desempenho menor, mas apresentam problemas de precisão. Técnicas de anti-aliasing baseadas em pós-processamento mais recentes, como anti-aliasing temporal (TAA), que reduz o aliasing combinando dados de frames renderizados anteriormente, viram a reversão dessa tendência, pois o AA pós-processamento se tornou mais versátil e mais mais caro do que o MSAA, que não consegue suavizar um quadro inteiro sozinho.

Métodos de amostragem

Amostragem pontual

Em uma máscara de amostra de ponto, o bit de cobertura para cada multisample é definido apenas se o multisample estiver localizado dentro da primitiva renderizada. As amostras nunca são tiradas de fora de um primitivo renderizado, então as imagens produzidas usando amostragem de ponto serão geometricamente corretas, mas a qualidade da filtragem pode ser baixa porque a proporção de bits definida na máscara de cobertura do pixel pode não ser igual à proporção do pixel que está realmente coberto pelo fragmento em questão.

Amostragem de área

A qualidade da filtragem pode ser melhorada usando máscaras de amostra de área. Nesse método, o número de bits definido em uma máscara de cobertura para um pixel deve ser proporcional à cobertura de área real do fragmento. Isso resultará em alguns bits de cobertura sendo configurados para multisamples que não estão realmente localizados dentro da primitiva renderizada e podem causar aliasing e outros artefatos.

Padrões de amostra

Grade regular

Um padrão de amostra de grade regular, onde locais de várias amostras formam uma grade uniformemente espaçada em todo o pixel, é fácil de implementar e simplifica a avaliação de atributos (ou seja, definir máscaras de subpixel, cor de amostragem e profundidade). Este método é computacionalmente caro devido ao grande número de amostras. A otimização de bordas é ruim para bordas alinhadas com a tela, mas a qualidade da imagem é boa quando o número de amostras múltiplas é grande.

Grade regular esparsa

Um padrão de amostra de grade regular esparso é um subconjunto de amostras que são escolhidas a partir do padrão de amostra de grade regular. Tal como acontece com a grade regular, a avaliação de atributos é simplificada devido ao espaçamento regular. O método é menos caro computacionalmente devido a ter menos amostras. A otimização de bordas é boa para bordas alinhadas da tela e a qualidade de imagem é boa para um número moderado de amostras múltiplas.

Padrões de amostra estocásticos

Um padrão de amostra estocástico é uma distribuição aleatória de amostras múltiplas em todo o pixel. O espaçamento irregular das amostras torna a avaliação dos atributos complicada. O método é econômico devido à baixa contagem de amostra (em comparação com os padrões de grade regulares). Otimização de bordas com este método, embora abaixo do ideal para bordas alinhadas da tela. A qualidade da imagem é excelente para um número moderado de amostras.

Qualidade

Comparado com a superamostragem, o anti-aliasing multisample pode fornecer qualidade semelhante com desempenho superior ou melhor qualidade para o mesmo desempenho. Resultados aprimorados adicionais podem ser alcançados usando máscaras de subpixel de grade girada. A largura de banda adicional exigida pela multi-amostragem é razoavelmente baixa se Z e compactação de cor estiverem disponíveis.

A maioria das GPUs modernas suporta amostras MSAA de 2 ×, 4 × e 8 ×. Valores mais altos resultam em melhor qualidade, mas são mais lentos.

Veja também

Referências