Actualizado a: 18 de enero de 2024
Seguro que has escuchado muchas veces el término anti-aliasing, especialmente si trabajas con software gráfico o con videojuegos, ya que es una de las opciones de ajustes que tienes en el apartado de la configuración gráfica. Algunos usuarios no saben exactamente lo que es esta tecnología, pero de ella depende en gran medida la calidad de los gráficos que ves en pantalla.
Por eso, es un término interesante que deberías conocer. Con esta guía podrás saber todo lo que necesitas conocer del anti-aliasing y de cómo tu GPU lo puede implementar para que los detalles visuales no se vean tan pixelados.
SMAA vs TAA vs FXAA vs MSAA: Diferencias
¿Qué es el anti-aliasing?
Primero hay que decir que, aunque nos centremos en el anti-aliasing por hardware que puede implementar la tarjeta gráfica o GPU, también existen otros métodos de implementar un anti-aliasing por software, filtros, etc. En cualquier caso, el término se refiere a lo mismo, por lo que la definición será válida en todos los casos.
Anti-aliasing no es más que una técnica de suavizado de las imágenes presentadas por píxeles. Para ello, los motores gráficos o software, cuando renderizan los gráficos, usaran una serie de artimañas para que la imagen se muestre de una forma más real ante el ojo humano, sin que sea tan irregular o abrupta. Es decir, para evitar que esté muy «pixelada» como se suele decir.
Este suavizado se realiza durante el procesado del fotograma o durante el postprocesado del fotograma. Detectando esos bordes y dibujando píxeles intermedios que hacen que esos bordes no parezcan tan irregulares. Pero seguro que lo verás mejor con este ejemplo que te voy a poner:
- Primero, voy a usar un programa de dibujo y voy a elegir una brocha para dibujar representar un círculo de color:
- Como se aprecia, es una imagen bastante cuadriculada, pixelada y que ante el ojo humano no recuerda a un círculo. Pero si trato de imitar lo que hace el antialiasing y añado algunos píxeles intermedios en los bordes de colores algo más suaves (dos tonos de gris en este caso), el efecto a la vista es mucho mejor y más parecido a la esfera perfecta de la derecha:
Eso sí, tener activo el anti-aliasing puede reducir el rendimiento de procesamiento de la GPU. Por tanto, si no tienes una gráfica potente, mejor desactiva el anti-aliasing y el rendimiento se vendrá arriba debido a que le estás quitando una carga de trabajo extra. En cambio, si tienes una gráfica poderosa, entonces tienes que activarlo, ya que reducirá drásticamente el ruido y mejorará mucho la calidad de la imagen.
Métodos
Como he comentado, el antialiasing se puede implementar de varias formas:
- Sobremuestreo o posfiltración: se muestrean los objetos con una resolución más alta y luego se despliegan a una resolución menor para que no parezcan tan pixelados.
- Máscaras de peso de píxeles: se les asigna un peso a los subpíxeles cercanos al centro del área de un píxel.
- Muestreo de área o prefiltración: se determina la intensidad de cada píxel al calcular el translape en cada uno de los pixeles que componen un objeto gráfico. Similar al ejemplo que yo hice a mano.
- Fases de píxel: mediante microcolocación se cambia la posición en la que se despliegan los píxeles.
Tipos de Anti-Aliasing de las GPUs
Ahora bien, en cuanto a las GPUs y motores gráficos modernos, tienen varios tipos de anti-aliasing que deberías conocer (ordenados aproximadamente de menos exigente con el hardware a más exigente):
- FXAA (Fast aproXimate Anti-Aliasing): es un tipo de anti-aliasing implementado por NVIDIA y no necesita gran potencia de procesamiento para llevarlo a cabo. Se cataloga entre las técnicas de postprocesamiento, usando el fotograma renderizado y detecta las partes que debe suavizar mediante un algoritmo, aplicando colores aproximados en los bordes. El mayor problema es que puede causar mucho desenfoque general y manchas en los bordes.
- TAA o TSAA (Temporal Anti-Aliasing): es un método de suavizado temporal. Analiza los bordes de los fotogramas renderizados anteriormente en un buffer y aplica técnicas de suavizado. No es un método común, aunque puedes verlo en algunas gráficas de NVIDIA, concretamente una versión especial derivada que se llama TXAA.
- MLAA (Morphological Anti-Aliasing): otro método postprocesado de suavizado. Encontrará los bordes de la imagen con patrones específicos y luego, un algoritmo combina píxeles según el padrón detectado. La calidad de imagen resultante es ligeramente mejor que con FXAA, pero demanda más rendimiento.
- SMAA (Subpixel Morphological Anti-Aliasing): es una versión mejorada del MLAA anterior. Usa recursos de GPU en lugar de CPU.
- SSAA (SuperSampling Anti-Aliasing): tecnología de suavizado en tiempo real y que usa bastantes recursos de hardware, aunque la calidad de imagen es muy buena. En este caso, se usa un renderizado de imagen a una resolución más alta de lo normal (la resolución real de la pantalla) y así los píxeles presentados serán mucho menores, lo que parece ser más suave y sin irregularidades. Puede haber SSAA 2x, 4x, etc. Es decir, que doblan el tamaño o resolución real o que lo cuatriplica.
- MSAA (MultiSampling Anti-Aliasting): es igual al SSAA, pero con una resolución más alta para obtener una calidad superior, aunque solo los bordes de los objetos en lugar de toda la pantalla completa (fotograma). Por eso requiere menos recursos, aunque deja texturas y objetos internos sin suavizar.
Los videojuegos modernos y otros programas gráficos, en la actualidad usan combinados de tipos de suavizados como:
- TXAA: el de NVIDIA usa una mezcla de MSAA y TAA a 2x.
- TSSAA: es una mezcla entre TAA y SSAA.
- SMAA S2X: combina SMAA y MSAA 2x.
- SMAA T2X: la suma de las técnicas SMAA y TAA 2x. Es probablemente el que mejor relación calidad-rendimiento tiene.
- SMAA 4x: suma técnicas de SMAA + MSAA 2x + TAA 2x.
- DLSS (DeepLearning SuperSampling): los modernos modelos de GPUs, como las de NVIDIA, como las que usan tecnología con Ray Tracing, poseen técnicas de inteligencia artificial para mejorar los gráficos. En vez de un algoritmo fijo como los anteriores, la IA puede predecir de una mejor forma cómo mejorar las irregularidades. Por el momento, no muchos videojuegos son compatibles con él, además de tener un impacto en el rendimiento. Con DLSS activo la tasa de FPS caerá considerablemente para una misma resolución.
¿Cómo afecta realmente a los gráficos?
Pues bien, para que puedas ver cómo trabaja el anti-aliasing en el mundo real, qué mejor que dejar las imágenes y las palabras para pasar a que lo compruebes tú mismo.
- Prueba de Minecraft sin y con anti-aliasing CSAA 32x:
- Final Fantasy XV sin anti-aliasing (izquierda), y con distintos tipos de AA mostrados en una pantalla partida:
Creo que con estos ejemplos se puede apreciar bien las ganancias de calidad que tienen estos tipos de AA.