El suavizado aproximado rápido ( FXAA ) es un algoritmo de suavizado de espacio de pantalla creado por Timothy Lottes en Nvidia . [1] También se conoce como suavizado rápido de muestras ( FSAA ).
FXAA 3 se publica bajo una licencia de dominio público . Se lanza una versión posterior, FXAA 3.11, 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]
- Adquiera los datos de luminancia. [3] Estos datos se pueden pasar al algoritmo FXAA desde el paso de renderizado como un canal alfa incrustado en la imagen para suavizarlo, calcularlo a partir de la imagen renderizada o aproximarlo usando 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 están excluidos de ser alterados 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 heurísticamente y determine 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 va 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 para calcular un segundo factor de fusión. [3] Este paso se puede ajustar para obtener más calidad aumentando la resolución de búsqueda y hasta dónde llega la búsqueda antes de que la búsqueda del extremo del borde se rinda, o para obtener más velocidad reduciendo 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 suavizado espacial convencional es que no requiere grandes cantidades de potencia informática . Para ello, suaviza los bordes irregulares indeseables (" jaggies ") [4] como píxeles , de acuerdo con cómo aparecen en la pantalla, en lugar de analizar el modelo 3D en sí, como en el suavizado espacial convencional. [1] Dado que no se basa en la geometría real , suavizará no solo los bordes entre los triángulos, sino también los bordes dentro de las texturas de mezcla alfa , o los que resultan de los efectos de sombreado de píxeles , que son inmunes a los efectos del suavizado de múltiples muestras. (MSAA). [5]
Las desventajas son que los mapas de textura de alto contraste están 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 de menos de un píxel que hubieran sido capturados y renderizados por MSAA y SSAA no ser capturado y renderizado solo por FXAA.
Ver también
Referencias
- ↑ a b Lottes, Timothy (febrero de 2009). "FXAA" (PDF) . NVIDIA . Consultado el 29 de septiembre de 2012 .
- ^ "opengl - Usando NVidia FxAA en mi código: ¿Cuál es el modelo de licencia?" . Desbordamiento de pila .
- ^ a b c d e f g h yo j k l Flick, Jasper. "FXAA: suavizado de píxeles" . Consultado el 21 de julio de 2020 .
- ^ Wang, James (19 de marzo de 2012). "FXAA: Anti-Aliasing a Warp Speed" . NVIDIA . Consultado el 3 de enero de 2013 .[ enlace muerto ]
- ^ Atwood, Jeff (7 de diciembre de 2011). "Anti-Aliasing rápido aproximado (FXAA)" . Codificación del terror . Consultado el 30 de septiembre de 2012 .