112 votos

¿Cuáles son las diferencias entre las diferentes configuraciones de antialiasing/multimuestreo?

Estoy ajustando la configuración de DiRT 2 y se me presentan estas opciones (en orden) para el multimuestreo:

  • 2x MSAA
  • 4x MSAA
  • 8x MSAA
  • 8x CSAA
  • 16x CSAA
  • 8x QCSAA

Usando el panel de control de nVidia se me presenta

  • 2x
  • 4x
  • 8x CSAA
  • 8x
  • 16x CSAA
  • 16xQ CSAA
  • 32x CSAA

Supongo que los que no tienen texto en el panel de nVidia son probablemente MSAA.

La ingenua suposición sería que los números más grandes son visualmente mejores. Pero entonces la MSAA, la CSAA y la QCSAA entran en juego (presumiblemente diferentes métodos de realizar la AA) y confunden las cosas al no estar en el orden correcto.

Por ejemplo, ¿es 8x / 8x MSAA "mejor" que 8x CSAA de alguna manera? De lo contrario, ¿por qué estaría más abajo en la lista del panel de nVidia? ¿Y es 8x QCSAA "mejor" que 16xCSAA según el orden en DiRT2?

En términos de calidad de la imagen , rendimiento y cualquier otras rarezas , ¿cuáles son las diferencias entre los distintos tipos de AA?
No estoy preguntando por las diferencias algorítmicas/de implementación; eso es probablemente fuera de tema de todos modos.

76voto

penti Puntos 93

Esta es una gran pregunta porque aparte de "¿está el AA activado o desactivado?" No había considerado las implicaciones de rendimiento de todos los diversos modos de antialiasing.

Hay una buena descripción básica de los tres modos "principales" de AA en Tantas técnicas de AA, tan poco tiempo pero casi todo el AA de hoy en día es MSAA o alguna versión optimizada de éste:

  1. Antialiasing supermuestral (SSAA). El truco más antiguo del libro - lo incluyo en la lista de universales porque puedes usarlo prácticamente en cualquier lugar: renderizado directo o diferido, también antialiasing de recortes alfa, y también te da un mejor muestreo de texturas en alta anisotropía. Básicamente, se renderiza la imagen a una resolución más alta y se reduce el muestreo con un filtro al terminar. Los bordes afilados se convierten en anti-aliasing cuando se reducen de tamaño. Por supuesto, hay una razón por la que la gente no utiliza SSAA: cuesta una fortuna . Cualquiera que sea su factura de tasa de llenado, es 4x para incluso un mínimo de SSAA.

  2. Anti-Aliasing Múltiple (MSAA). Esto es lo que suele tener el hardware de una tarjeta gráfica moderna. La tarjeta gráfica renderiza en una superficie que es más grande que la imagen final, pero al sombrear cada "grupo" de muestras (que acabarán en un solo píxel en la pantalla final) el sombreador de píxeles se ejecuta sólo una vez. Nos ahorramos una tonelada de tasa de relleno, pero seguimos quemando ancho de banda de memoria. Esta técnica no hace antialias de los efectos que salen del shader, porque el shader se ejecuta a 1x, por lo que los recortes alfa son irregulares. Esta es la forma más común de ejecutar un juego de renderizado frontal. La MSAA no funciona en un renderizador diferido porque las decisiones de iluminación se toman después de que la MSAA se "resuelva" (reduzca el tamaño) a su tamaño de imagen final.

  3. Anti-Aliasing de la muestra de cobertura (CSAA). Una optimización más en MSAA de NVidia [ed: ATI tiene un equivalente]. Además de ejecutar el shader a 1x y el framebuffer a 4x, el rasterizador de la GPU se ejecuta a 16x. Así, mientras el buffer de profundidad produce un mejor antialiasing, los tonos intermedios de mezcla producidos son aún mejores.

Este artículo de Anandtech tiene una buena comparación de los modos AA en relativamente tarjetas de vídeo recientes que muestran el coste de rendimiento de cada modo para ATI y NVIDIA (esto es a 1920x1200):

                       ---MSAA---   --AMSAA---    ---SSAA---
                 none  2x  4x  8x   2x  4x  8x    2x  4x  8x
                 ----  ----------   ----------    ----------
ATI 5870           53  45  43  34   44  41  37    38  28  16
NVIDIA GTX 280     35  30  27  22   29  28  25

Así que, básicamente, puedes esperar un rendimiento pérdida de..

  • sin AA → 2x AA

    ~15% más lento

  • sin AA → 4x AA

    ~25% más lento

Efectivamente, hay una diferencia de calidad visible entre el antialiasing cero, 2x, 4x y 8x . Y las variantes de MSAA retocadas, también conocidas como "adaptativas" o de "muestra de cobertura", ofrecen mejor calidad con más o menos el mismo nivel de rendimiento. Muestras adicionales por píxel = antialiasing de mayor calidad .

Graphic comparing AA and MSAA sampling of a pixel

Comparación de los diferentes modos de cada tarjeta, donde "modo" es el número de muestras utilizadas para generar cada píxel.

Mode   NVIDIA   AMD
--------------------
2+0    2x       2x
2+2    N/A      2xEQ
4+0    4x       4x
4+4    8x       4xEQ
4+12   16x      N/A
8+0    8xQ      8x
8+8    16xQ     8xEQ
8+24   32x      N/A

En mi opinión, más allá de 8x AA, tendrías que tener los ojos de un águila en el crack para ver la diferencia. Definitivamente hay alguna ventaja en tener modos "baratos" de 2x y 4x AA que pueden razonablemente aproximado 8x sin el golpe de rendimiento, sin embargo. Ese es el punto óptimo para el rendimiento y un aumento de la calidad visual que se notaría.

0 votos

Por ejemplo, tanto 8x CSAA como 16x CSAA son notablemente más irregulares que 8x MSAA en el panel de control de nVidia (área de vista previa de la configuración 3D).

74voto

benjaminperdomo Puntos 11

Si se poda a través de este artículo probablemente podrá reunir la mayor parte de la información que busca, pero intentaré resumir lo más relevante.

En primer lugar, debe entender que la MSAA es un tipo de Supermuestreo antialiasing (SSAA). El SSAA, también conocido como FSAA, elimina los "jags" de una imagen al renderizarla a una mayor resolución:

El antialiasing de toda la escena por supermuestreo suele significar que cada cuadro completo se renderiza al doble (2x) o al cuádruple (4x) de la resolución de la pantalla resolución de la pantalla, y luego se reduce la muestra para que coincida con la resolución de la pantalla. Así, en un FSAA de 2 veces, se renderizan 4 píxeles de supermuestreo por cada píxel de cada fotograma. Aunque el renderizado a mayores resoluciones produce mejores resultados resultados, se necesita más potencia del procesador, lo que puede degradar el rendimiento y la velocidad de fotogramas.

MSAA es una forma más eficiente de FSAA, pero el multiplicador sigue teniendo el mismo significado, a grandes rasgos. Esto significa (como probablemente sepas), que un multiplicador más alto da mejores resultados, pero exige más potencia de procesamiento.

La CSAA es una forma aún más eficiente de la SSAA, que utiliza algo de magia avanzada en 3D (sólo hay que leer el documento si realmente se quiere saber) para ofrecer mejores resultados:

En resumen, la CSAA produce imágenes con antialiasing que rivalizan con la calidad de 8x o 16x MSAA, mientras que introduce sólo un mínimo golpe de rendimiento sobre sobre el MSAA estándar (normalmente 4x).

En esencia, si se equiparan los multiplicadores, el MSAA producirá mejores resultados que el CSAA (aunque se da a entender que los resultados no serán significativamente mejor), pero exigirá mucho más en el departamento de potencia de procesamiento.

QCSAA es simplemente CSAA con el doble de puntos de muestra utilizados para realizar el antialiasing, por lo que obviamente QCSAA es mejor que CSAA.

El artículo de Wikipedia sobre el supermuestreo ofrece una gran imagen que muestra por qué un mayor número de muestras supone una mayor precisión:

Multiple samples

Dicho esto, el orden en el que DiRT2 enumera sus opciones de antialiasing resulta, como mínimo, desconcertante. Dado que dudo que puedas notar la diferencia una vez que el multiplicador llega a 8x y más, yo me quedaría con CSAA/QCSAA por la ganancia de rendimiento.

Por último, aquí hay una bonita foto comparativa de las distintas técnicas en una imagen concreta y sencilla (del artículo del primer enlace):

Anti-aliasing results

0 votos

¡Excelente respuesta! Si eres un desarrollador, @Aubergine, asegúrate de revisar el intercambio de pilas de desarrollo de juegos también :)

0 votos

¡Gracias, @BlueRaja-DannyPflughoeft! Aprecio la apreciación ;)

0 votos

¿El uso de CSAA requiere soporte de hardware? ¿O cualquier tarjeta que soporte MSAA en general debería poder utilizar la configuración?

14voto

COPILOT User Puntos 136

NVIDIA ha creado otro algoritmo, FXAA (Fast Approximate Anti-Aliasing) . A diferencia de los actuales MSAA, CSAA y sus variaciones, funciona a nivel de píxel, sin tocar nunca la geometría. Encuentra los bordes irregulares y los suaviza. Es más rápido que el resto. Al igual que FSAA, no tiene problemas con los canales alfa, los sombreadores, etc. Sin embargo, los resultados son más borrosos.

Veo dos usos para FXAA: primero, si quieres AA, pero la penalización de MSAA/CSAA es demasiado alta para tu hardware; segundo, si un juego depende mucho de alfa y shaders y tu hardware no es lo suficientemente divino para FSAA.

Aliased, 4xMSAA, FXAA:

FXAA Comparison

4voto

Joachim Puntos 367

Además de las excelentes respuestas que ya están aquí, me gustaría mencionar la relativamente nueva SMAA o " Antialiasing morfológico de subpíxeles " que es, al igual que el FXAA, un método de antialiasing post-proceso. En muchos casos supera a otros métodos AA en cuanto a la relación calidad/coste de la imagen.


¿QUÉ ES EL SMAA?

En palabras de los desarrolladores Jorge Jiménez, José I. Echevarría y Diego Gutiérrez del Universidad de Zaragoza y Tiago Sousa de Crytek ,

SMAA es una implementación de MLAA muy eficiente basada en la GPU, capaz de manejar las características de los subpíxeles sin problemas, y cuenta con un mecanismo avanzado de mecanismo de detección y manejo de patrones. ( fuente )

O, más extensamente (con mis énfasis):

Presentamos un nuevo basado en la imagen , técnica de antialiasing de posprocesamiento , que ofrece soluciones prácticas a los problemas comunes y abiertos de algoritmos de antialiasing en tiempo real basados en filtros. Algunas de las nuevas características incluyen análisis de contraste para una detección de bordes más fiable detección de bordes y una forma sencilla y eficaz de tratar los rasgos geométricos y las líneas diagonales. . Esto, junto con nuestra acelerado y clasificación precisa de patrones permite una mejor reconstrucción de siluetas. Nuestro método muestra por primera vez cómo combinar antialiasing morfológico (MLAA) con estrategias adicionales de multi/supermuestreo (MSAA, SSAA) para la características precisas de los subpíxeles y cómo acoplarlo con reproyección temporal ; conservando siempre la nitidez de la imagen . Todas estas soluciones combinan sinergias que hacen que la técnica sea muy técnica muy robusta, que produce resultados de mejor calidad general que que los enfoques anteriores, convergiendo más estrechamente a las referencias MSAA/SSAA pero manteniendo tiempos de ejecución extremadamente rápidos. Además, proponemos diferentes preajustes para adaptarnos mejor a los recursos disponibles o a las necesidades particulares de cada escenario. recursos disponibles o a las necesidades particulares de cada escenario. ( fuente )


¿CÓMO FUNCIONA?

SMAA se basa en MLAA y FXAA:

MLAA (Morphological AA) y FXAA (Fast Aproximate AA) son modos post AA que utilizan filtros de desenfoque. Primero, detectan los contrastes ("bordes") en el cuadro y luego lo desenfocan a lo largo del gradiente.

Esto resulta en "jaggies" visibles muy reducidos que también cubren texturas alfa, pero también difumina todo, incluidas las texturas. Es también la forma más barata de AA y a menudo se utiliza en la versión de consola de juegos.

Sin embargo, la detección de bordes de SMAA es comparable a la de SSAA:

La "detección" de alisado se ha mejorado y está más cerca de la detección utilizada en MSAA que a la detección utilizada en MLAA y FXAA. El resultado es que el SMAA sigue siendo muy barato, sigue suavizando las texturas alfa y reduce en gran medida los "jaggies" visibles, pero no difumina la imagen pero no difumina tanto la imagen. ( fuente )

Este puesto por AlguienSimple en los foros de Anandtech explica brevemente lo que hace SMAA, y cómo puede funcionar junto con MSAA:

El inyector SMAA en su valor por defecto 'SMAA_PRESET_HIGH' es un poco más de la GPU que el FXAA simple, por lo que la pérdida de rendimiento es bastante insignificante en la mayoría de los casos.

Sin embargo, la SMAA no se puede comparar con la MSAA. MSAA realmente añade (subpixel-)detalle para suavizar los bordes de los polígonos, SMAA sólo trata de ocultar los bordes de los polígonos, mientras que SMAA sólo trata de ocultar las irregularidades (pero hace un buen trabajo). Lo más notable es que todavía el pixel-crawling/flickering con SMAA.

Sin embargo, el SMAA admite ser utilizado en combinación con el MSAA. Esa es la parte de "subpixel" de su nombre, a diferencia de cualquier otro filtro de post-proceso AA de post-proceso (que yo conozca), puede detectar correctamente los gradientes, por lo que puede ser puede utilizarse junto con otras formas de AA no PP, como MSAA y SSAA.

Dicho esto, actualmente estoy usando 1.2x OGSSAA (resolución personalizada NV ) con SMAA inyectado, en juegos que no se llevan bien con MSAA. SMAA se encarga del anti-aliasing, y SSAA disminuye en gran medida la cantidad de pixel-crawling. Se ve muy bien, mucho mejor que sólo 1.2x OGSSAA o SMAA por sí solo.

No voy a entrar en más detalles aquí, ya que las otras respuestas ya han proporcionado información de fondo sobre el mecanismo de las diferentes técnicas de AA. Puede leer más sobre este método específico en su papel (PDF); o bien hojeando su presentación de diapositivas (enlace directo); o bien, busque en el código en GitHub .


COMPARACIÓN CON OTRAS TÉCNICAS DE AA

Algunas capturas de pantalla que comparan el SMAA con otras técnicas de antialiasing:

                  Call of Duty comparison

                  Elite: Dangerous comparison

                  Far Cry 4 comparison
(fuente)

                  Watch_Dogs 2 comparison
( fuente )

Guild Wars 2 (?) comparison
( fuente )

Un video comparativo usando Crysis 2/CryEngine 3, que lo implementó por primera vez (Youtube):

                  IMAGE ALT TEXT HERE

Aquí es un enlace directo al vídeo original, no contaminado por la compresión.

Y lo siguiente es una comparación con algunos métodos MLAA, SRAA y FXAA (extraídos del documento enlazado anteriormente):

Table comparing techniques and cost of different AA methods


APLICACIÓN

Una versión de SMAA, hecha inyectable por Andrej Dudenhefner, puede descargarse aquí y inyectado en muchas aplicaciones DirectX 9/10/11 (x86) .
Este artículo describe cómo hacerlo en Fallout: New Vegas, pero este método es muy similar en la mayoría de los juegos de Bethesda. También proporciona algo más de información comparando e ilustrando las diferentes técnicas de AA.

0 votos

Por alguna razón, no puedo alcanzar iryoku.com donde se pueden encontrar la mayoría de las fuentes presentadas aquí ( parece que no se ha caído Sin embargo, no es así.) En cualquier caso, el documento también es accesible aquí . Lamentablemente, no he podido encontrar una versión sin comprimir del vídeo.

0voto

Krippled Hick Puntos 211

msaa es la más lenta y, en general, tiene mejor aspecto que su equivalente csaa. 8x msaa es la mejor calidad, pero la más cara. csaa es la solución alternativa de nvidia, que funciona de forma más eficiente. pero 8x msaa se ve realmente bien.

JugonesTop.com

Jugonestop es una comunidad para amantes del gaming. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X