Los algoritmos Deep Learning Supersampling de NVIDIA han sido durante años una de las cosas frente a las que AMD no podía competir de tú a tú con una solución equivalente. El AMD FidelityFX Super Resolution se presenta como rival al Deep Learning Supersampling de NVIDIA. En este artículo os explicamos cómo se comparan ambas arquitecturas.
En los últimos años, la tendencia en cuanto a los gráficos a tiempo real en videojuegos para PC se ha movido en varias direcciones distintas. Para empezar tenemos los 4K que requieren anchos de banda y potencia de cálculo 4 veces superiores respecto a los 1080p y 2.5 veces superiores respecto a los 1440p. Luego tenemos la aparición reciente del Ray Tracing que requiere una gran potencia de cálculo de cara a llevar la iluminación de los juegos a la máxima expresión. Y para terminar tenemos el caso de las altas tasas de fotogramas para los eSports.
Todo ello ha hecho aparecer algoritmos que permiten aumentar la resolución de salida de los juegos respecto a la nativa, entiéndase esta última como la resolución a la que renderiza una GPU y la de salida la que se muestra en pantalla en cuanto a su conteo de píxeles. El último añadido es el AMD Fidelity FX Super Resolution, el cual se suma al Deep Learning Supersampling de NVIDIA y al Checkerboard Rendering como algoritmo avanzados que la interpolación para conseguir una imagen a mejor resolución a partir de otra de menor resolución
FidelityFX Super Resolution versus Deep Learning supersampling
El AMD Fidelity FX Super Resolution es un algoritmo que se encarga de tomar el búfer de imagen a una resolución concreta y crear a partir del mismo una imagen igual a mayor resolución y por tanto con mayor número de píxeles. Siendo el desafió para este tipo de algoritmos el saber el valor de color de los píxeles nuevos.
El FidelityFX Super Resolution en su funcionamiento recuerda al Deep Learning Supersampling 1.9 que NVIDIA lanzó para el videojuego Control de Remedy, en el sentido que no está pensado para funcionar con los Tensor Core que son exclusivos de NVIDIA, sino que funciona con unidades SIMD convencionales y concretamente explota la capacidad de SIMD sobre registro que tienen algunas GPU. Dicha habilidad les permite duplicar la velocidad de cálculo a cambio de reducir la precisión en el mismo grado.
Al contrario de la solución de NVIDIA no se trata de una solución propietaria que no esté documentada. AMD va a lanzar el código bajo la licencia abierta del MIT y se podrá utilizar tanto en las GPU de AMD como las de Intel y NVIDIA. Por lo que al tratarse de una licencia de código abierto, los desarrolladores pueden realizar cambios al código para optimizar este a las particularidades de cada arquitectura.
Esto último es un arma de doble filo, porque por un lado AMD se limpia las manos cual Poncio Pilatos sobre el apoyo del FidelityFX Super Resolution en los juegos y por el otro permite una mayor optimización que la que permite NVIDIA con el Deep Learning Supersampling, pero dependiendo de la implicación del desarrollador de cada juego. En cambio NVIDIA dispone de un departamento entero encargado de trabajar para los diferentes desarrolladores
¿Es el AMD FidelityFX Super Resolution un algoritmo de IA como el Deep Learning Supersampling?
El Deep Learning Supersampling tal y como dice su nombre se trata de un algoritmo o serie de algoritmos, que se basa en el aprendizaje profundo, lo que supone un periodo de entrenamiento para generar lo que llamamos un algoritmo de inferencia. En el caso de AMD pese a que sabemos que una patente asignada a ellos donde un algoritmo para el aumento de resolución basado en el Deep Learning no es el caso del AMD FidelityFX Super Resolution, ya que no un algoritmo de Deep Learning.
Esto es debido a que las GPU de AMD no tienen unidades especializadas para ello para acelerar los algoritmos de Deep Learning. Las cuales por lo general son unidades de cálculo optimizadas para las operaciones con matrices, que resultan comunes en la mayoría de algoritmos de Deep Learning.
Hay que aclarar que los algoritmos de inteligencia artificial se pueden ejecutar en cualquier tipo de unidad de procesamiento, ya sea escalar, SIMD o matricial. Lo normal es pensar que una futura versión del FidelityFX Super Resolution, de cara a cuando AMD incluya unidades pensadas para el cálculo de matrices, si que estará optimizada para este tipo de unidades, pero por el momento nos encontramos ante un algoritmo que no las utiliza.
El AMD FidelityFX Super Resolution al no ser un algoritmo de inteligencia artificial entonces no necesita de entrenamiento previo, lo que supone una compatibilidad inmediata en todos los juegos, pero por desgracia este algoritmo de aumento de resolución no solo se diferencia del NVIDIA Deep Learning Supersampling por no ser un algoritmo de aprendizaje profundo, sino además de carecer de temporalidad, lo cual supone en sí un problema de cara a la calidad de imagen del algoritmo.
¿Cómo funciona el AMD FidelityFX Super Resolution?
Como hemos comentado en la sección anterior, para reconstruir una imagen a mayor resolución, el AMD FSR toma un solo fotograma para funcionar, a partir del cual se creará una versión a mayor resolución. Por lo que se trata de un algoritmo de subida de resolución al que llamamos espacial. En el caso concreto del AMD FSR, este detecta los diferentes bordes de los elementos en pantalla y a partir de dicha información reconstruye una versión a más resolución de la imagen, aplicando con ello algoritmos de sharpening ya disponibles en el AMD Fidelity FX para mejorar la calidad de la imagen final.
No obstante, como ya hemos comentado este carece de la información temporal para la reconstrucción de la imagen. Esto está siendo muy polémico, ya que la calidad de imagen obtenida está resultando inferior a algoritmos de antialiasing que hacen uso de datos de fotogramas anteriores para triangular mejor la información de los píxeles desconocidos en la imagen. Lo que ha llevado a que desarrolladores como los de Metro Exodus hayan prescindido del FSR para su Enhaced Edition, pero no podemos dejar de lado la presión de NVIDIA sobre los desarrolladores para apoyar a su DLSS.
El problema de la temporalidad
A diferencia del Deep Learning Supersampling 2.0, y pese a que el AMD FidelityFX Super Resolution es un algoritmo de super-resolución como el Deep Learning Supersampling 2.0 no tiene en cuenta la temporalidad. ¿A qué nos referimos con esto? Pues al simple hecho que mientras que el Deep Learning Supersampling 2.0 tiene en cuenta la información de fotogramas anteriores para la reconstrucción de la imagen, el FidelityFX Super Resolution de AMD solo tiene en cuenta la información de la imagen actual, por lo que en ese aspecto se parece más a la primera generación del Deep Learning Supersampling de NVIDIA.
A la hora de generar el búfer de color a día de hoy se suelen almacenar varios búferes simultáneos llamados en el argot de Direct3D como Render Targets y en el caso Vulkan y OpenGL como FBO o Framebuffer Object, los cuales son texturas que almacenan un búfer de imagen completo, pero no tienen porque almacenar la información de color. Es aquí donde entra lo que llamamos el ID Buffer, el cual pone una etiqueta de identificación a cada objeto en pantalla.
La idea es sencilla, a través de un búfer de imagen al que llamamos ID Buffer podemos saber en qué posición de pantalla se encuentra el píxel de cada objeto en la escena. Esto nos permite derivar la velocidad de cada objeto de una escena a otra y saber donde se encuentra cada píxel. Una aplicación es para crear fotogramas intermedios en las películas. Pero en los juegos donde los los cambios son mínimos de un fotograma a otro esto nos permite rescatar la información de los píxeles de fotogramas anteriores para compararla con la actual y corregirla si hay algún fallo.
No obstante, el FidelityFX Super Resolution al contrario que del DLSS 1.0 se puede utilizar con algoritmos de antialiasing temporales, lo cual sabemos gracias al hecho que Epic ha confirmado que la nueva versión de su motor, Unreal Engine 5, puede combinar su TAA con el FSR de AMD. Claro esta que al coste computacional del FSR se le ha de añadir el coste de estos algoritmos temporales.
Niveles de calidad en el DLSS 2.0 de NVIDIA
En el tipo de algoritmos que estamos tratando, la información para reconstruir el fotograma depende de la información de entrada y a mayor número de píxeles entonces mayor calidad de imagen. Dicho de otra forma, la calidad de imagen de escalar de los 1440p a los 2160p siempre será superior a escalar de los 1080p a los 2160p, debido a que la cantidad de píxeles de entrada es mucho mayor en el primer caso que en el segundo.
En el caso del Deep Learning Supersampling 2.0 tenemos tres modos de funcionamiento, el que más calidad de imagen toma 1 pixel de información para completar 2 píxeles, el de calidad media toma 1 píxel para completar 4 y el que da peor calidad de imagen, pero que se resuelve más rápido lo que hace es crear la información de 9 píxeles en total a partir de un píxel. Se ha de tener en cuenta que NVIDIA tiene como ventaja los Tensor Cores integrados en sus GPU RTX, en cambio AMD no dispone de esta ventaja.
Niveles de calidad en el AMD Fidelity FX Super Resolution
Al igual que con el Deep Learning Supersampling 2.0 de NVIDIA, AMD tiene diversos niveles de calidad para el FidelityFX Super Resolution o FidelityFX Super Resolution, los cuales son cuatro en total y podéis verlos referenciados en la diapositiva que acompaña estas líneas. Los cuatro modos son: ultra-quality, quality, balanced y performance. Es por ello que os dejamos una tabla con la información que ha dejado AMD sobre su FidelityFX Super Resolution.
Modo de calidad | Factor de escalado | Resolución de entrada para 1440p | Resolución de entrada para 4K | Diferencial |
---|---|---|---|---|
«Ultra Quality» | 1.3x por dimensión | 1970 x 1108 | 2954 x 1662 | x 1.69 |
«Quality» | 1.5x por dimensión | 1706 x 960 | 2560 x 1440 | x 2.25 |
«Balanced» | 1.7 x por dimensión | 1506 x 847 | 2259 x 1270 | x 2.89 |
«Performance» | 2x por dimensión | 1280 x 720 | 1920 x 1080 | x 4 |
Por lo que AMD no dispone por el momento un equivalente al modo más rápido de NVIDIA, el que genera 9 píxeles a partir de 1 solo. Tampoco es un modo que de una gran calidad de imagen y solo sirve para alcanzar resoluciones de 8K en algunos juegos sin tener que estresar a la tarjeta gráfica. No obstante la solución de AMD al carecer de temporalidad en los datos que utiliza para reconstruir la imagen acaba otorgando una calidad de imagen un poco peor. Además de conseguir un aumento en la tasa de fotogramas menor. Aunque eso ya dependerá más bien de la naturaleza de cada juego.
Es completamente subjetivo para el usuario decidir si el FSR merece la pena o no, pero la calidad de imagen no solo es la resolución y el hecho que el FSR de peor calidad de imagen que algunos algoritmos de antialiasing temporales es suficiente para que muchos desarrolladores digan que no al algoritmo de AMD. El cual la empresa de Lisa Su vende como compatible con todas las tarjetas gráficas ya de entrada, pero una verdad a medias no deja de ser una mentira descarada.
AMD FidelityFX vs Deep Learning Supersampling, ¿cuál tendrá más soporte?
AMD afirma que su FidelityFX Super Resolution se puede utilizar e implementar en cualquiera de las GPU de la competencia, no obstante esta afirmación tiene cierta trampa, ya que el algoritmo tal cual no se puede implementar en las GPUs de NVIDIA e Intel son los cambios correspondientes en forma de optimizaciones en el código para las GPU de la competencia.
¿Dónde está la trampa? Bien, NVIDIA no le añadió esa capacidad a las unidades SIMD de sus GPU, estás no soportan SIMD sobre registro en lo que son las unidades CUDA, ya que el objetivo de NVIDIA es que se utilicen los Tensor Cores para los cálculos de baja precisión. Por lo que si aplicamos el FidelityFX Super Resolution tal cual y sin optimizaciones en una GPU de NVIDIA va a ir peor que en una de AMD, por el hecho que requiere optimizar el código para dicha GPU. La pregunta clave que deberíamos hacernos todos sobre el AMD FidelityFX Super Resolution es si vamos a ver las optimizaciones del mismo para las diferentes arquitecturas gráficas o no, pensad que el esfuerzo no lo ha de hacer la propia AMD, sino los diferentes desarrolladores.
El Deep Learning Supersampling de NVIDIA pese a ser una enorme caja negra en cuanto a su funcionamiento, solo pide una serie de parámetros para funcionar y las librerías de NVIDIA hacen toda la magia sin que los desarrolladores se tengan que preocupar. No por ello el Deep Learning Supersampling en su versión 2.0 es mejor y hemos de tener en cuenta los acuerdos que haga tanto AMD como NVIDIA con los diferentes desarrolladores.
La consolas son la clave para la adopción del algoritmo de AMD
El arma secreta de AMD es el hecho que las tres consolas de nueva generación, las dos Xbox Series y PlayStation 5, se basan en RDNA 2 y serán compatibles con FidelityFX Super Resolution. Se ha de tener en cuenta que en consola y al contrario que lo que ocurre en PC se suele optimizar el código de los juegos, por lo que todo apunta a que las optimizaciones del FidelityFX Super Resolution en consola podrían beneficiar a las versiones de PC.
Eso si, como hemos comentado antes, esto dependerá del interés de cada desarrollador y si estos no tienen ningún tipo de acuerdo con NVIDIA para darle ventaja al Deep Learning Supersampling. Por ejemplo, podemos encontrar que las versiones de consola de Metro Exodus y Cyberpunk 2077 hagan uso del FidelityFX Super Resolution en consola, pero que en PC por los acuerdos con NVIDIA no lo utilicen.
Fuente: HardZone