Algoritmo anti-aliasing
El anti-aliasing aproximado rápido ( FXAA ) es un algoritmo anti-aliasing de espacio de pantalla creado por Timothy Lottes en Nvidia . [1]
FXAA 3 se publica bajo una licencia de dominio público . Una versión posterior, FXAA 3.11, se publica bajo una licencia BSD de 3 cláusulas. [2]
Descripción del algoritmo
- Los datos de entrada son la imagen renderizada y, opcionalmente, los datos de luminancia. [3]
- Adquirir los datos de luminancia. [3] Estos datos se pueden pasar al algoritmo FXAA desde el paso de renderizado como un canal alfa integrado en la imagen que se va a suavizar, calcular a partir de la imagen renderizada o aproximar utilizando el canal verde como datos de luminancia. [3]
- Encuentre píxeles de alto contraste utilizando un filtro de paso alto que utiliza los datos de luminancia. [3] Los píxeles de bajo contraste que se encuentran se excluyen de ser alterados aún más por FXAA. [3] El filtro de paso alto que excluye los píxeles de bajo contraste se puede ajustar para equilibrar la velocidad y la sensibilidad. [3]
- Utilice el contraste entre píxeles adyacentes para encontrar bordes de manera heurística y determinar si los bordes están en dirección horizontal o vertical. [3] La dirección de fusión de un píxel será perpendicular a la dirección del borde detectado en ese píxel. [3]
- Calcule un factor de mezcla para un píxel de alto contraste analizando los datos de luminancia en la cuadrícula de píxeles de 3x3, siendo el píxel en cuestión el píxel central. [3]
- Busque a lo largo del borde detectado para determinar cuánto dura ese borde y en qué dirección va el borde real cuando termina el borde horizontal o vertical detectado para tener en cuenta la dirección del borde real y calcular un segundo factor de mezcla. [3] Este paso se puede ajustar para obtener más calidad al aumentar la resolución de búsqueda y la distancia que recorre la búsqueda antes de que se dé por terminada la búsqueda del borde, o para obtener más velocidad al reducir ambos. [3]
- Combine el píxel utilizando la dirección de combinación elegida y el máximo de ambos factores de combinación que se calcularon. [3]
Comparación
La principal ventaja de esta técnica sobre el anti-aliasing espacial convencional es que no requiere grandes cantidades de potencia de cálculo . Lo consigue suavizando los bordes dentados no deseados (" jaggies ") [4] como píxeles , según cómo aparecen en la pantalla, en lugar de analizar el modelo 3D en sí, como en el anti-aliasing espacial convencional. [1] Dado que no se basa en la geometría real , suavizará no solo los bordes entre triángulos, sino también los bordes dentro de texturas mezcladas con alfa , o los resultantes de efectos de sombreado de píxeles , que son inmunes a los efectos del anti-aliasing multimuestra (MSAA). [5]
Las desventajas son que los mapas de textura de alto contraste se ven borrosos, que FXAA debe aplicarse antes de renderizar los elementos del HUD de un juego para que no los afecte también, y que los detalles poligonales más pequeños que un píxel que habrían sido capturados y renderizados por MSAA y SSAA no pueden capturarse y renderizarse solo con FXAA.
Véase también
Referencias
- ^ ab Lottes, Timothy (febrero de 2009). "FXAA" (PDF) . NVIDIA . Consultado el 29 de septiembre de 2012 .
- ^ "opengl - Uso de NVidia FxAA en mi código: ¿cuál es el modelo de licencia?". Desbordamiento de pila .
- ^ abcdefghijkl Flick, Jasper. «FXAA: Suavizar píxeles» . Consultado el 21 de julio de 2020 .
- ^ Wang, James (19 de marzo de 2012). «FXAA: Anti-Aliasing at Warp Speed». NVIDIA. Archivado desde el original el 21 de febrero de 2019. Consultado el 3 de enero de 2013 .
- ^ Atwood, Jeff (7 de diciembre de 2011). «Fast Approximate Anti-Aliasing (FXAA)». Coding Horror. Archivado desde el original el 31 de enero de 2014. Consultado el 30 de septiembre de 2012 .