NVIDIA Neural Texture Compression ¿La solución a las GPU con menos de 8GB VRAM?
NVIDIA se encuentra desarrollando nuevas tecnologías para comprimir las texturas, y la más avanzada ha recibido el nombre de Neural Texture Compression. Quién nos iba a decir que esta tecnología sería necesaria en estos tiempos, y es que, cuando se ha racaneado bastante en memoria VRAM en las GPU, ahora vemos que una tecnología de este tipo es necesaria para hacer que estas gráficas sigan moviendo juegos modernos sin que su capacidad de VRAM sea el factor limitante.
"El continuo avance del fotorrealismo en el renderizado va acompañado de un crecimiento de los datos de texturas y, en consecuencia, de una mayor demanda de almacenamiento y memoria. Para resolver este problema, proponemos una novedosa técnica de compresión neuronal diseñada específicamente para texturas de materiales".
Como resumen de todo el artículo. En una textura empleada, a una resolución de 4.096 x 4.096 píxeles sin comprimir, ocupa 256 MB. Comprimida con la nueva tecnología, apenas pesa 3,8 MB. La actual tecnología Block Compression, a 1.024 x 1.024 píxeles, arroja un peso de 5,3 MB presentando mucha menos calidad visual.
Así es cómo funciona la tecnología NVIDIA Neural Texture Compression para comprimir texturas
En concreto, bajo el título de "Random-Access Neural Compression of Material Textures", NVIDIA ha presentado (vía Videocardz) un nuevo algoritmo de compresión de texturas. Como era de esperar, todo este trabajo gira en torno a unos juegos de 2023 que han aumentado de forma notable sus requisitos en términos de memoria utilizada. En concreto, se indica que ahora la memoria no solo almacena texturas de alta resolución, sino también otras muchas propiedades y atributos asociados a ellas para renderizar materiales de alta fidelidad y aspecto natural.
Para ser exactos, la tecnología NVIDIA Neural Texture Compression (NTC) es capaz de proporcionar 4 veces más resolución (16 texels más) respecto al Block Compression (BC). Esta es una compresión de texturas estándar para GPUs. El algoritmo de NVIDIA representa las texturas como tensores (tres dimensiones), pero sin ninguna suposición como en la compresión por bloques (como el recuento de canales). Lo único que asume NTC es que cada textura tiene el mismo tamaño.
El acceso aleatorio y local es una característica importante de la compresión NTC. Para la compresión de texturas en la GPU, es de suma importancia que se pueda acceder a las texturas con un coste reducido y sin retardo, incluso cuando se aplican altas tasas de compresión. Esta investigación se centra en comprimir muchos canales y mipmaps (texturas de distintos tamaños) juntos y, al hacerlo, la calidad y el bitrate son mejores que los de los formatos JPEG XL o AVIF.
"Desbloqueamos dos niveles más de detalle, es decir, 16 ves más texels, utilizando una compresión de baja tasa de bits, con una calidad de imagen superior a la de técnicas avanzadas de compresión de imágenes, como AVIF y JPEG XL. Al mismo tiempo, nuestro método permite la descompresión bajo demanda y en tiempo real con un acceso aleatorio similar al de la compresión de texturas por bloques en las GPU. De este modo, las ventajas de la compresión se extienden del almacenamiento en disco a la memoria.
Resto de la información
Para terminar, se pone como ejemplo una comparativa a una resolución nativa 4K / 2160p. En esta podemos ver la notable diferencia entre las texturas neuronales y las BC. En concreto, aplicar texturas con 16 texels más apenas aumenta la memoria utilizada en 0,3 MB. Esto se traduce en aspirar a texturas mucho más realistas sin que el requisito de memoria se dispare. De esta forma, GPUs con poca VRAM podrán aspirar a texturas 4K.
"La idea clave de nuestro método es comprimir varias texturas de materiales y sus cadenas de mipmaps a la vez. Una vez comprimidas, utilizar una pequeña red neuronal, optimizada para cada material, para descomprimirlas. Por último, utilizamos una implementación de entrenamiento personalizada para alcanzar velocidades de compresión prácticas. Su rendimiento supera en un orden de magnitud al de frameworks generales, como PyTorch".
Según el artículo, las texturas neuronales pueden renderizarse en tiempo real con hasta 16 veces más texel que el enfoque BC. El coste del renderizado 4K en una NVIDIA GeForce RTX 4090 fue de 1,15 ms, superior a los 0,49 ms del BC. Nada mal para la notable diferencia de rendimiento que se aplica con ese margen de media milisegundo.