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
-
9.- Benchmarks.
Para mostrar los resultados de las pruebas utilizaré histogramas. Considero que es la mejor manera de representar el rendimiento que se obtiene en cada momento, ya que un valor medio de frames puede ocurrir con muchos picos y muchos valles, o con valores mucho más constantes. Con medias de sesenta frames por segundo puedes encontrarte situaciones injugables, mientras que una media de treinta y cinco frames por segundo puede ser perfectamente jugable porque la tasa de frames sea muy constante.
Equipo de pruebas
CPU: AMD Athlon XP 2500+ @ 2500 MHz
Placa base: Abit KV7 VIA KT600
RAM: 1GB (2x512MB) Kingston Value RAM (400MHz 2-3-3-6)
Tarjeta de sonido: Integrada
Tarjeta gráfica: Radeon X800 PRO
Drivers: ATI Catalyst 5.10Far Cry
Primero realizamos una prueba en el Far Cry. Éste es un juego que utiliza gran número de texturas alfa para la vegetación en los exteriores, por lo que es un buen ejemplo de la pérdida de rendimiento que puede traer el uso de antialiasing adaptativo. Hay que tener en cuenta que es un caso extremo, ya que en la mayoría de los juegos el uso de texturas alfa es mucho menor.
La prueba se realiza en la primera fase del juego, caminando desde el segundo punto de control (justo antes de entrar en la caseta donde coges los prismáticos) atravesando un trozo de selva, cruzando el río y llegando hasta la base enemiga. Para capturar los frames por segundo se utiliza el programa Fraps.
En esta tabla se compara el rendimiento con una resolución de 1280x1024 de diferentes modos de AA. Como se puede observar, la diferencia entre sin antialiasing y con 4xAA sin antialiasing adaptativo es mínima, indicando que en estas configuraciones estamos limitados por el procesador. Los otros dos modos si están limitados en gran parte por la potencia de la tarjeta gráfica, siendo un modo jugable (la configuración con 4xAA y 2xAAA) ya que siempre tenemos una tasa de frames por segundo superior a los treinta frames, mientras que la otra configuración, 4xAA 4xAAA, no sería jugable ya que durante periodos prolongados de tiempo tenemos tasas cercanas a los veinte frames por segundo.
La diferencia de calidad gráfica es apreciable, con el antialiasing adaptativo activado la vegetación no da sensación de movimiento cuando nos desplazamos, cosa que distrae mucho, y se integra mucho mejor con el fondo dando una sensación mucho más natural. En este caso yo jugaría con la configuración 4xAA 2xAAA, ya que es el mejor compromiso entre calidad de imagen y rendimiento.
Richard Burns Rally
El Richard Burns Rally es uno de los mejores simuladores de WRC que existen, y el más realista en su manejo. Para realizar el benchmark hemos bajado de www.gametimesonline.com la repetición del mejor tiempo en la primera etapa del rally de Francia. Para medir el número de frames por segundo, se utilizará como en el caso anterior el programa Fraps.
El uso de texturas alfa no es tan elevado como en el Far Cry, por lo que el uso de antialiasing adaptativo no supondrá una pérdida de rendimiento tan elevada como en el otro juego. Como podemos observar, con cada aumento del nivel de antialiasing obtenemos una pérdida notable de rendimiento, por lo que se puede deducir que en este caso no estamos limitados por el procesador, sino por la tarjeta gráfica. En un juego de coches no nos podemos permitir bajar de una tasa de frames mínima, en mi caso considero que un mínimo aceptable son los treinta frames por segundo. Los dos modos de mayor calidad visual que cumplen este requisito son la configuración 6xAA no AAA y la 4xAA 2xAAA. En un juego que utiliza texturas alfa como éste, siempre es recomendable utilizar si es posible algo de antialiasing adaptativo, por lo que yo escogería la configuración 4xAA 2xAAA para jugar a este juego.
F.e.a.r.
F.e.a.r. es uno de los juegos más esperados del año. Mezclando la acción del Half Life2 con la estética de las películas japonesas como The Ring, promete tener al jugador siempre en tensión. Tiene unos requisitos tremendamente elevados, por lo que hay que afinar mucho a la hora de configurar el juego, para poder jugarlo con el máximo de calidad posible con el equipo que tengamos.
Para esta prueba, hemos utilizado el principio de la parte jugable de la demo para un jugador de Fear. Volvemos a utilizar Fraps para realizar la medición. Las opciones aplicadas dentro del juego serían las predeterminadas para calidad media. Hay que tener en cuenta que es una versión beta, por lo que el rendimiento en el juego final debería ser mayor del obtenido con esta demo.
En este caso se ha utilizado una resolución de 1024x768 debido a que con la resolución de 1280x1024 no se podía jugar bien. La mayor parte del tiempo se estaba por debajo de los treinta frames por segundo, con valles en los quince, incluso sin aplicar antialiasing.
La aplicación de antialiasing adaptativo produce una bajada de rendimiento demasiado elevada, nos obligaría a bajar la resolución a 800x600, con lo que la calidad visual se vería muy mermada.
Como se puede observar en la gráfica, el modo con 4xAA tiene valles en los veinte frames, que ocurren en los momentos de más acción, momentos en los cuales no nos podemos permitir una pérdida de fluidez, ya que puede implicar no apuntar bien y que suponga la muerte. El modo 2x sin embargo se mantiene holgadamente por encima de la treintena de frames, por lo que sería el elegido.
10.- Conclusión.
El antialiasing es una de las diferentes maneras de mejorar la calidad visual. Cuando a nuestra tarjeta le sobra potencia, debido a que el monitor que tenemos no nos permite subir más la resolución, o porque preferimos un poco de antialiasing al posible aumento de un nivel de resolución, debemos utilizar estos filtros para obtener la mayor calidad visual con un rendimiento aceptable. No nos sirve de nada tener tasas de frames muy altas, ya que la sensación de suavidad no aumenta a partir de un punto, por lo que es mejor aumentar la calidad visual a costa de parte de ese rendimiento que nos sobra.
-
Por fin se lo que significa!!!
JAJAJA lo veia en todos los juegos y no sabia porque cuando lo ponia me bajaba tanto el rendimiento (ahora ya no me pasa ).
Apuntate un tanto.
-
Buen tuto ahora ya se lo que es por fin!!
PD: Joder, hace tres meses de esto!!
salu2!
-
Hace bastante más de 3 meses, la redactó Kynes pero se ralló del foro, pero suerte de krampak que la tenia copiada y nos la resubió hace 3 meses.
-
A, pues gracias por la aclaración cram.
salu2!
-
Es buena información , Lo malo del antialiasing es que se relentisa demasiado los juegos (Depende la placa gráfica) Le da un efecto real a los juegos.
E jugado al Flight Simulator X con máximos gráficos y me tira 43 fps
Y es real real…
también la filtración de texturas son importantes. -
Muy buena guia para los novatos, en cierto el AA consume mucho y debeas tener una buena grafica para activar esa opcion, ya con 4xAA mas q suficiente…
-
¡Esta publicación está eliminada! -
¡Esta publicación está eliminada! -
¡Esta publicación está eliminada! -
¡Esta publicación está eliminada!