¿En qué consiste el antialiasing?
-
Este texto es una mera aproximación al problema del aliasing y sus posibles soluciones. Es bastante probable que contenga errores, pero creo que puede aclarar algunos conceptos. Hay un hilo iniciado por Sergiman en el que se explica de forma resumida la generación de las imágenes.
ANTIALIASING
1.- ¿En qué consiste?
Por aliasing se conoce a un fallo en la representación de los gráficos debido a que la resolución final es finita. Existen diferentes tipos de aliasing visual, pero normalmente nos referimos al aliasing geométrico, efecto que consiste en la presencia de dientes de sierra en los bordes de los polígonos. El efecto de aliasing da a las imágenes una apariencia tosca, que reduce la inmersión en el juego debido a una sensación de irrealidad en los gráficos. Por antialiasing se conoce al efecto de filtrar la imagen para suavizar los bordes, y disimular los bordes de los polígonos, consiguiendo una apariencia mucho más realista.
2.- ¿Cómo se pasa de la geometría a los gráficos?
Este proceso se conoce como rasterizar. El primer paso que se realiza tras recibir un triángulo, que está situado en un mundo tridimensional, es realizar una proyección en el plano de la imagen, pasando a poseer únicamente dos coordenadas, X e Y.
Conocidos los tres vértices del triángulo, se determinan los tres lados. Para aplicar las texturas al triángulo, se calculan las coordenadas de cada pixel del interior del triángulo y se calcula que pixel de la textura corresponde a ese punto (aplicando corrección de perspectiva)
Así es como se ve un triángulo rasterizado. Como se puede comprobar, los fallos son inevitables. ¿Cómo se pueden limitar estos fallos?
Al rasterizar el triángulo, solo se ha tenido en cuenta si el punto central del pixel estaba dentro de él o no. Una consecuencia de este método es que aparece el típico error de diente de sierra o escalera, donde debería haber un borde suave. Para reducir este error se puede tener en cuenta que porcentaje del pixel está cubierto. La realidad es que esto no se puede calcular con precisión de manera rápida, por lo que las tarjetas gráficas realizan una aproximación.3.- Supersampling ordenado.
El supersampling es una de las formas de antialiasing. Consiste en escalar la imagen multiplicando la resolución de los ejes X e Y por un número entero, y renderizarla a mayor tamaño del original. Tras realizar este proceso, se pasa al tamaño original mediante un filtro de reducción, por lo que varios píxeles de la imagen renderizada a mayor resolución se utilizan para calcular el valor de los píxeles de la resolución final. De este modo se consiguen transiciones más suaves.
2x2 supersampling: La resolución interna es cuatro veces el tamaño original.
Tras el filtro de reducción la imagen tiene transiciones más suaves. El valor de color se da en función del número de puntos centrales de los subpíxeles que quedan dentro del triángulo, en cada pixel.
4.- Supersampling rotado.
El supersampling rotado es una forma de supersampling en la cual se puede conseguir mejores resultados visuales que con el supersampling ordenado, pero con el mismo coste en rendimiento, mediante la elección de una mejor posición del punto de muestreo en los subpíxeles. Posteriormente se explicará el motivo por el cual un patrón rotado a la hora de elegir los subpíxeles es mejor que uno ordenado, con un ejemplo aplicado al multisampling.
5.- Multisampling.
La innovación que aporta el multisampling respecto al supersampling es que solo se calcula un valor de la textura por pixel, en vez de un valor por cada subpixel como en el supersampling. Mientras que en el supersampling se renderiza la imagen al completo a mayor resolución de la original, en el multisampling solo se hace para la geometría, no para las texturas. Esto ahorra tanto tasa de relleno como ancho de banda.
El ahorro es menor en ancho de banda debido a que aunque solo se genera un valor de color por pixel, lo que ahorra tasa de relleno, este valor debe ser almacenado por separado para cada subpixel.6.- Patrón ordenado y patrón rotado.
A la hora de posicionar los subpíxeles, se puede elegir un patrón ordenado o un patrón rotado. La ventaja de un patrón rotado es que se obtienen gradientes de color más suaves, lo que permite una calidad muy superior con la misma pérdida de rendimiento. Un patrón 4x ordenado dobla la exactitud a la hora de realizar el muestreo en ambos ejes respecto a no utilizar antialiasing, mientras que con un patrón 4x rotado obtenemos cuatro veces la exactitud de muestreo de una imagen sin antialiasing.
Como se puede observar, con el patrón rotado se consigue una transición más suave, por lo que se obtiene una imagen de mayor calidad con el mismo consumo de recursos.
Con un patrón rotado 2x se consigue una exactitud de muestreo similar a la que se obtiene con un patrón ordenado 4x, pero tomando únicamente la mitad de muestras, lo que permite una calidad similar con mucho menor pérdida de rendimiento.
Las tarjetas nVidia anteriores a la gama 6 utilizaban un patrón ordenado, desde la gama 6 un patrón rotado. En el caso de las tarjetas de ATI, las tarjetas anteriores a la 9500 utilizaban un patrón ordenado, y desde la 9500 utilizan un patrón rotado.
7.- Ventajas e inconvenientes de cada técnica.
Una de las ventajas del supersampling es que realiza un filtrado de las texturas similar al del filtrado anisótropo, consiguiendo que las texturas tengan mayor definición. El filtrado anisótropo permite aumentar la calidad de las texturas con un descenso de rendimiento muy inferior, por lo que es preferible una combinación de multisampling y anisótropo, antes que un supersampling. El principal problema del multisampling es con las llamadas texturas alfa.
Al almacenar una textura, se guardan los tres canales de color (rojo, verde y azul) con otro canal llamado canal alfa. El canal alfa indica el valor de transparencia de un punto de la textura, y sirve para simular geometría. Un ejemplo claro es el de las rejas o las ramas de un árbol. Simulan ser geometría, pero únicamente es una textura con partes transparentes y partes opacas. Esto sirve para reducir la carga geométrica, consiguiendo acelerar el renderizado al limitar el número de polígonos.
Es una técnica muy utilizada en juegos antiguos, pero que se sigue utilizando en la actualidad. Un ejemplo claro de esta técnica es el de las rejas metálicas del Half Life 2, que no son más que un rectángulo con partes opacas (la reja) y partes transparentes (los huecos que dejan ver el fondo) En los bordes entre las partes opacas y las partes transparentes se produce aliasing. El supersampling suaviza estos bordes al realizar antialiasing en las texturas, pero el multisampling no al realizarlo sólo en la geometría.
8.- Antialiasing de texturas transparentes.
Para solucionar el problema del aliasing en las texturas transparentes, tanto nVidia como ATI han desarrollado técnicas de antialiasing mixtas, que realizan supersampling únicamente en las texturas alfa. Los llamados antialiasing transparente (en la gama 7 de las tarjetas GeForce) y el antialiasing adaptativo (En las tarjetas de ATI desde la 9500) realizan este proceso, con un consumo de tasa de relleno proporcional a la utilización de texturas transparentes en pantalla. A mayor utilización de texturas transparentes, mayor será la reducción de prestaciones que tendremos. La ventaja es que conseguimos una calidad de imagen muy similar a la del supersampling, pero con un rendimiento muy superior. Esto hace que en las tarjetas modernas se esté abandonando el supersampling debido a que la mejora en calidad visual no compensa la pérdida de rendimiento que conlleva esta técnica.
Imagen a la que se le ha aplicado multisampling. Como se puede observar, los bordes de los objetos geométricos si tienen transiciones suaves, pero los objetos realizados a base de texturas transparentes (las rejas de la pasarela en este caso) no están suavizados.
Imagen a la que se le ha aplicado multisampling con antialiasing de texturas transparentes. Como se puede observar, los bordes de los objetos realizados a base de texturas transparentes si están suavizados, con lo que la calidad de la imagen es muy superior.
PD: Existe un artículo en Elitebastards de la X1900 en el que viene un ejemplo muy clarito para ver la diferencia entre usar antialiasing de texturas transparentes y no utilizarlo. La animación es http://www.elitebastards.com/anipic.php?picid=hanners/club3d/x1900xtx/iq/aaa/aaa-&frames=4&ext=jpg&speed=2000
-
¡Esta publicación está eliminada! -
Minipunto para kynes Venga moderadores que esto es de chincheta.
No te doy reputacion porque el foro no me deja repetir, que conste. -
Gracias tiu ;D Si tienes algo que comentar que se pueda mejorar, ya sabes. Si veo que tiene aceptación, haré otras miniguias sobre otros aspectos del mundillo gráfico (o sobre lo que se tercie) Le propuse a MAZ que lo publicara, pero parece que está muy liado (y creo que ahora un poco pachucho) y como se estaba quedando obsoleto (al menos en la parte de los ejemplos) pues pensé que sería mejor ponerlo ya en el foro.
-
"Necesitas dar reputación a más personas antes de darle reputación a kynes de nuevo." tócate las narices, jajaja!! Y que sepas que serás famoso pronto, xD
Muy interesante, a ver si esta tarde me tengo tiempo (no me lo creo ni yo) y me leo esto detenidamente. Gracias por aportar tanto al foro, tío.
-
¿¿Como se da reputación?? Enhorabuena kynes, está super currao.
-
chincheta puesta
-
Muy buena guia, si señor, los del foro lo agradeceran
…joe, creo que no nos dejan poner + reputacion a muchos, eh? jajaja xD
-
Como siempre tu información es útil y de agradecer ;), a ver si te animas con estas mini-guias
Neptunno yo también estoy igual xDD
-
Kynes si te parece oportuno podrias insertar en este post el que yo puse sobre como se generaba una imagen con una GPU (como se pasa de una lista de vertices a triangulos y posteriormente a pixeles, etc….....). Creo que seria una buena ayuda.
Un saludo -
Hum… al estar sticky no habia visto este post Muy bueno si señor, hacia falta una buena explicación de estoa parámetros que salen en todas las reviews pero nadie explica.
Editado: Leída
-
Kynes si te parece oportuno podrias insertar en este post el que yo puse sobre como se generaba una imagen con una GPU (como se pasa de una lista de vertices a triangulos y posteriormente a pixeles, etc….....). Creo que seria una buena ayuda.
Un saludoSi te soy sincero estaba planteándome hacer algo más extenso sobre el mismo tema. De todos modos la voy a enlazar.
-
Si piensas explicarlo mas detalladamente adelante, seguro que todos lo agradecemos.
De todas formas creo que mi explicacion era bastante sencilla y que se podia entender facilmente. Si lo crees oportuno enlazala.
-
De todos modos antes tengo que completar esta un poco. No se explican bien las diferencias entre multisampling y supersampling, no se expone la forma de activar el antialiasing de texturas alfa en las tarjetas ATI que son DX9 pero no son X1… le faltan muchas cosas a esta guía (entre otras cosas imágenes de muestra comparando diferentes modos, para ver la diferencia de calidad gráfica) a ver si algún día encuentro tiempo y lo hago.
PD: Antes quiero hacer también una guía explicando bien cómo usar el ATI tray tools, el mejor programa que existe para controlar las tarjetas de ATI bajo mi punto de vista. A ver si lo puedo hacer antes de irme de vacaciones, ya que en El Puerto no tengo medios (PC con tarjeta ATI, conexión de banda ancha) para hacerlo (ni ganas :D)
-
Excelente, como todas tus explicaciones.
Un saludo.
-
Muy bueno, muy bueno, muy bueno, muy bueno, muy bueno, muy bueno…
Es que es una pasada. -
Me quito el sombrero ante tal guía!!! Podrías pegar links de las páginas consultadas a modo de "bibliografía" para profundizar más en el tema, aunque supongo que ya estarás harto de trabajos universitarios y da pereza :D:D
Me ha gustado mucho, enserio te felicito!
Doom3 y Crónicas de Riddick no tienen muchas texturas alpha verdad?? Que modo recomiendas con mi tarjeta gráfica?? -
En [H]ardOCP recomiendan para el Doom3 la configuración 2X TR MSAA con 8xAF, para la resolución 1600x1200. Si juegas a una resolución menor, puedes probar a ver si con 4xTR SSAA con 8xAF te va bien. El Cronicas de Riddick no sabría decirte, no he jugado así que no se cómo de exigente es el juego. Lo mejor que puedes hacer es jugar tú mismo, y ver si le puedes exigir un poco más a tu tarjeta aumentando la calidad.
-
Crónicas de Riddick es un juegazo, pero con todos los filtros y en una resolución alta, es MUY exigente con la máquina.
-
muchas gracias tenia una idea pero ahora estoy completamente seguro