Nvidia presentó esta semana su nuevo método de compresión de texturas que proporciona cuatro veces la resolución de los métodos tradicionales de codificación de truncamiento de bloques (BTC, BC), mientras que tiene requisitos de almacenamiento similares. El concepto central del enfoque propuesto es comprimir colectivamente varias texturas de materiales y sus cadenas de mipmap y luego descomprimirlas utilizando una red neuronal entrenada para un patrón específico que descomprime. En teoría, el método podría incluso afectar a futuras arquitecturas de GPU. Sin embargo, por ahora el método tiene limitaciones.
(Crédito de la imagen: Nvidia)
Nuevos requisitos
Los avances recientes en el renderizado en tiempo real para videojuegos han abordado la calidad visual de las películas debido al uso de técnicas como el sombreado basado en la física para el modelado fotorrealista de materiales, trazado de rayos, trazado de rutas y reducción de ruido para una iluminación global precisa. Mientras tanto, las técnicas de texturizado no han avanzado realmente a un ritmo similar, principalmente porque los métodos de compresión de texturas se han mantenido esencialmente igual que a finales de los 90, razón por la cual, en algunos casos, muchos objetos aparecen borrosos cuando están muy cerca.
La razón de esto es que las GPU todavía se basan en métodos de compresión de texturas basados en bloques. Estas técnicas tienen implementaciones de hardware muy eficientes (ya que el hardware de función fija que las respalda ha evolucionado durante dos décadas), acceso aleatorio, localidad de datos y calidad casi sin pérdidas. Sin embargo, están diseñados para relaciones de compresión moderadas entre 4x y 8x y están limitados a un máximo de 4 canales. Los renderizadores modernos en tiempo real a menudo requieren más propiedades de material, lo que requiere múltiples texturas.
metodo de nvidia
Aquí es donde entra en juego la compresión neuronal de acceso aleatorio de texturas de materiales (NTC) de Nvidia. La tecnología de Nvidia permite dos niveles adicionales de detalle (16x más texels, por lo tanto, cuatro veces la resolución), manteniendo requisitos de almacenamiento similares a los métodos tradicionales de compresión de texturas. Esto significa que las texturas comprimidas optimizadas para materiales con resoluciones de hasta 8192 x 8192 (8K) ahora son viables.
Para hacer esto, NTC explota las redundancias espacialmente, a niveles de mipmap y a través de diferentes canales de material. Esto asegura que los detalles de la textura se conserven cuando los espectadores están cerca de un objeto, algo que los métodos modernos no pueden permitir.
(Crédito de la imagen: Nvidia)
Nvidia afirma que las texturas NTC se descomprimen utilizando hardware de multiplicación de matriz, como núcleos tensoriales que funcionan de manera SIMD cooperativa, lo que significa que la nueva tecnología no requiere ningún hardware especial y se puede usar en prácticamente todas las GPU modernas de Nvidia. Pero quizás la mayor preocupación es que cada textura requiere su propia red neuronal optimizada para descomprimirse, lo que supone una carga adicional para los desarrolladores de juegos.
Nvidia dice que la calidad de la textura resultante a estas tasas de bits agresivamente bajas es comparable o mejor que los estándares de compresión de imágenes recientes, como AVIF y JPEG XL, que no fueron diseñados para la descompresión en tiempo real de acceso aleatorio.
Ventajas y desventajas prácticas.
De hecho, las imágenes demostradas por Nvidia muestran claramente que NTC es mejor que las tecnologías tradicionales basadas en Block Coding. Sin embargo, Nvidia admite que su método es más lento que los métodos tradicionales (una GPU tardó 1,15 ms en renderizar una imagen 4K con texturas NTC y 0,49 ms en renderizar una imagen 4K con texturas BC), pero proporciona 16 veces más texels, aunque con filtrado estocástico. .
(Crédito de la imagen: Nvidia)
Aunque NTC consume más recursos que el filtrado de texturas convencional acelerado por hardware, los resultados muestran que ofrece un alto rendimiento y es adecuado para renderizado en tiempo real. Además, en escenas complejas que usan un renderizador completo, el costo de NTC se puede compensar parcialmente ejecutando otras tareas al mismo tiempo (por ejemplo, trazado de rayos) debido a la capacidad de la GPU para ocultar la latencia.
Mientras tanto, el renderizado con NTC se puede acelerar con nuevas arquitecturas de hardware, un mayor número de unidades dedicadas de multiplicación de matrices que se pueden usar, mayores tamaños de caché y uso de registros. De hecho, algunas de las optimizaciones se pueden realizar a nivel programable.
Nvidia también admite que NTC no es un método completamente sin pérdidas de compresión de texturas y produce degradación visual a tasas de bits bajas y tiene algunas limitaciones como la sensibilidad a la correlación de canales, requisitos de resolución uniforme y beneficios limitados a distancias de cámara más grandes. Además, los beneficios son proporcionales al conteo de canales y pueden no ser tan significativos para conteos de canales más bajos. Además, debido a que NTC está optimizado para texturas de materiales y siempre descomprime todos los canales de materiales, esto lo hace potencialmente inadecuado para su uso en diferentes contextos de renderizado.
(Crédito de la imagen: Nvidia)
Si bien la ventaja de NTC es que no utiliza hardware de filtrado de texturas de función fija para producir resultados superiores, esta es también su principal desventaja. El costo del filtrado de texturas es computacionalmente costoso, razón por la cual, por ahora, el filtrado anisotrópico con NTC no es factible para el renderizado en tiempo real. Mientras tanto, el filtrado estocástico puede introducir parpadeo.
Pero a pesar de las limitaciones, la compresión de múltiples canales y niveles de mipmap de NTC produce un resultado que supera los estándares de la industria. Los investigadores de Nvidia creen que su enfoque está allanando el camino para imágenes de calidad cinematográfica en renderizado en tiempo real y es práctico para aplicaciones de gráficos con limitaciones de memoria. Sin embargo, tiene una sobrecarga de tiempo modesta en comparación con los algoritmos BTC simples, lo que afecta el rendimiento.
(Crédito de la imagen: Nvidia)