El anti-aliasing multimuestra ( MSAA ) es un tipo de anti-aliasing espacial , una técnica utilizada en gráficos por computadora para eliminar las irregularidades .
Definición
El término generalmente se refiere a un caso especial de supermuestreo . Las implementaciones iniciales de anti-aliasing de escena completa ( FSAA ) funcionaron conceptualmente simplemente renderizando una escena a una resolución más alta y luego reduciendo la resolución a una salida de menor resolución. La mayoría de las GPU modernas son capaces de esta forma de suavizado, pero grava en gran medida los recursos como la textura, el ancho de banda y la velocidad de relleno . (Si un programa está muy vinculado a TCL o CPU , el supermuestreo se puede utilizar sin que el rendimiento se vea afectado).
Según la especificación OpenGL GL_ARB_multisample, [1] "multimuestreo" se refiere a una optimización específica del supermuestreo. La especificación dicta que el renderizador evalúe el programa de fragmentos una vez por píxel, y solo muestree "verdaderamente" los valores de profundidad y plantilla . (Esto no es lo mismo que supermuestreo pero, según la especificación OpenGL 1.5, [2] la definición se ha actualizado para incluir también implementaciones de supermuestreo completo).
En la literatura gráfica en general, "multimuestreo" se refiere a cualquier caso especial de supermuestreo en el que algunos componentes de la imagen final no están completamente supermuestreados. Las listas siguientes se refieren específicamente a la definición de ARB_multisample.
Descripción
En el anti-aliasing de supermuestras, se muestrean múltiples ubicaciones dentro de cada píxel, y cada una de esas muestras [3] se renderiza completamente y se combina con las demás para producir el píxel que finalmente se muestra. Esto es computacionalmente costoso, porque todo el proceso de renderizado debe repetirse para cada ubicación de muestra. También es ineficiente, ya que el aliasing generalmente solo se nota en algunas partes de la imagen, como los bordes, mientras que el supermuestreo se realiza para cada píxel.
En el suavizado de múltiples muestras, si cualquiera de las ubicaciones de múltiples muestras en un píxel está cubierta por el triángulo que se está renderizando, se debe realizar un cálculo de sombreado para ese triángulo. Sin embargo, este cálculo solo debe realizarse una vez para todo el píxel, independientemente de cuántas posiciones de muestra se cubran; el resultado del cálculo de sombreado se aplica simplemente a todas las ubicaciones de muestras múltiples relevantes.
En el caso de que solo un triángulo cubra cada ubicación de muestra múltiple dentro del píxel, solo se realiza un cálculo de sombreado, y estos píxeles son un poco más costosos (y el resultado no es diferente) que en la imagen sin suavizado. Esto es cierto en el medio de los triángulos, donde el alias no es un problema. ( La detección de bordes puede reducir esto aún más al limitar explícitamente el cálculo de MSAA a píxeles cuyas muestras involucran múltiples triángulos, o triángulos a múltiples profundidades). En el caso extremo donde cada una de las ubicaciones de múltiples muestras está cubierta por un triángulo diferente, un cálculo de sombreado diferente se realizará para cada ubicación y los resultados luego se combinarán para dar el píxel final, y el resultado y el gasto computacional son los mismos que en la imagen de supermuestreo equivalente.
El cálculo de sombreado no es la única operación que debe realizarse en un píxel dado; Las implementaciones de muestreo múltiple pueden muestrear de forma diversa otras operaciones, como la visibilidad en diferentes niveles de muestreo.
Ventajas
- Por lo general, el sombreador de píxeles solo debe evaluarse una vez por píxel.
- Los bordes de los polígonos (la fuente más obvia de aliasing en gráficos 3D) están suavizados .
- Dado que se muestrean varios subpíxeles por píxel, los detalles poligonales menores de un píxel que podrían haberse perdido sin MSAA se pueden capturar y formar parte de la imagen renderizada final si se toman suficientes muestras.
Desventajas
Prueba alfa
La prueba alfa es una técnica común en los videojuegos más antiguos que se utiliza para renderizar objetos translúcidos al rechazar la escritura de píxeles en el búfer de cuadros. [4] Si el valor alfa de un fragmento translúcido no está dentro de un rango especificado, se descartará después de la prueba alfa. Debido a que esto se realiza píxel por píxel, la imagen no recibe los beneficios del muestreo múltiple (todas las muestras múltiples en un píxel se descartan según la prueba alfa) para estos píxeles. La imagen resultante puede contener alias a lo largo de los bordes de objetos transparentes o bordes dentro de texturas, aunque la calidad de la imagen no será peor de lo que sería sin ningún anti-aliasing. [5] Los objetos translúcidos que se modelan utilizando texturas de prueba alfa también tendrán un alias debido a las pruebas alfa. Este efecto se puede minimizar renderizando objetos con texturas transparentes varias veces, aunque esto daría como resultado una reducción de alto rendimiento para escenas que contienen muchos objetos transparentes. [6]
Aliasing
Debido a que el muestreo múltiple calcula los fragmentos de polígono interior solo una vez por píxel, el alias y otros artefactos seguirán siendo visibles dentro de los polígonos renderizados donde la salida del sombreador de fragmentos contiene componentes de alta frecuencia.
Actuación
Si bien es menos intensivo en rendimiento que SSAA (supermuestreo), es posible en ciertos escenarios (escenas pesadas en fragmentos complejos) que MSAA sea varias veces más intensivo para un fotograma dado que las técnicas de postprocesamiento anti-aliasing como FXAA , SMAA y MLAA . Las primeras técnicas de esta categoría tienden a tener un menor impacto en el rendimiento, pero adolecen de problemas de precisión. [7] Las técnicas de anti-aliasing basadas en postprocesamiento más recientes, como el anti-aliasing temporal (TAA), que reduce el aliasing al combinar datos de fotogramas renderizados previamente, han visto la inversión de esta tendencia, ya que el postprocesamiento AA se vuelve más versátil y más caro que MSAA, que no puede suavizar un marco completo solo.
Métodos de muestreo
Muestreo puntual
En una máscara de muestreo de puntos, el bit de cobertura para cada multimuestra solo se establece si la multimuestra se encuentra dentro de la primitiva renderizada. Las muestras nunca se toman desde fuera de una primitiva renderizada, por lo que las imágenes producidas mediante muestreo de puntos serán geométricamente correctas, pero la calidad del filtrado puede ser baja porque la proporción de bits establecida en la máscara de cobertura del píxel puede no ser igual a la proporción del píxel que está cubierto por el fragmento en cuestión.
Muestreo de área
La calidad del filtrado se puede mejorar mediante el uso de máscaras de área muestreada. En este método, el número de bits establecidos en una máscara de cobertura para un píxel debe ser proporcional a la cobertura del área real del fragmento. Esto dará como resultado que se establezcan algunos bits de cobertura para multimuestras que en realidad no se encuentran dentro de la primitiva renderizada y pueden causar aliasing y otros artefactos.
Patrones de muestra
Cuadrícula regular
Un patrón de muestra de cuadrícula regular, donde las ubicaciones de múltiples muestras forman una cuadrícula espaciada uniformemente a lo largo del píxel, es fácil de implementar y simplifica la evaluación de atributos (es decir, establecer máscaras de subpíxeles, color de muestreo y profundidad). Este método es computacionalmente costoso debido a la gran cantidad de muestras. La optimización de los bordes es deficiente para los bordes alineados con la pantalla, pero la calidad de la imagen es buena cuando la cantidad de multimuestras es grande.
Cuadrícula regular dispersa
Un patrón de muestra de cuadrícula regular disperso es un subconjunto de muestras que se eligen del patrón de muestra de cuadrícula regular. Como ocurre con la cuadrícula regular, la evaluación de atributos se simplifica debido al espaciado regular. El método es menos costoso computacionalmente debido a que tiene menos muestras. La optimización de bordes es buena para los bordes alineados de la pantalla y la calidad de imagen es buena para un número moderado de multimuestras.
Patrones de muestra estocásticos
Un patrón de muestra estocástico es una distribución aleatoria de multimuestras en todo el píxel. El espaciado irregular de las muestras hace que la evaluación de atributos sea complicada. El método es rentable debido al bajo recuento de muestras (en comparación con los patrones de cuadrícula regulares). Optimización de bordes con este método, aunque subóptimo para bordes alineados con pantalla. La calidad de imagen es excelente para un número moderado de muestras.
Calidad
En comparación con el supermuestreo, el anti-aliasing multimuestra puede proporcionar una calidad similar con un rendimiento superior o mejor calidad para el mismo rendimiento. Se pueden lograr resultados mejorados adicionales utilizando máscaras de subpíxeles de cuadrícula rotadas. El ancho de banda adicional requerido por el muestreo múltiple es razonablemente bajo si Z y compresión de color están disponibles. [8]
La mayoría de las GPU modernas admiten muestras de 2 ×, 4 × y 8 × MSAA. Los valores más altos dan como resultado una mejor calidad, pero son más lentos.
Ver también
Referencias
- ^ "Adiciones al capítulo 3 de la especificación 1.2.1" .
- ^ "Especificación OpenGL 1.5" (PDF) .
- ^ "El significado del suavizado: ¿para qué se utiliza?" . ARVI VR. 2018-09-14 . Consultado el 14 de septiembre de 2018 .
- ^ "Sintaxis de ShaderLab: pruebas alfa" . Unity3d.com. 2008-04-27 . Consultado el 31 de julio de 2012 .
- ^ "Anti-Aliasing de muestreo múltiple: una vista de cerca" . Alt.3dcenter.org . Consultado el 31 de julio de 2012 .
- ^ "Comparación visual de los distintos modos Anti-Aliasing" . Nhancer.com. Archivado desde el original el 28 de enero de 2013.
- ^ Matt Pettineo (25 de octubre de 2012). "Una descripción general rápida de MSAA" . Consultado el 24 de noviembre de 2016 .
- ^ "Anti-Aliasing de muestreo múltiple: una vista de cerca" . Alt.3dcenter.org . Consultado el 31 de julio de 2012 .