Nvidia publicó hoy un nuevo artículo de 15 páginas titulado «Compresión neural de acceso aleatorio de texturas de materiales», en el que se presenta un nuevo algoritmo para la compresión de texturas. El proyecto se enfoca en los crecientes y preocupantes requisitos memoria de video (y en parte el espacio que ocupan las texturas en el disco), la cual ahora se encarga de almacenar texturas de alta resolución, así como muchas propiedades y atributos asociados a ellas para renderizar materiales de alta fidelidad.

Según el documento, Neural Texture Compression (NTC) ofrecerá una resolución 4 veces mayor (16 texels más) que BC (Block Compression), que es una compresión de textura estándar basada en GPUs disponible en muchos formatos. El nuevo algoritmo de Nvidia representa las texturas como tensores (tres dimensiones), pero sin suposiciones como en la compresión de bloques (como el número 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 NTC. Para la compresión de texturas de GPU, es de suma importancia que se pueda acceder a las texturas a un bajo costo sin demora, incluso cuando se aplican altas tasas de compresión. Esta investigación se enfoca en comprimir muchos canales y mipmaps (texturas de diferentes tamaños) juntos. Al hacerlo, el documento afirma que la calidad y la tasa de bits son mejores que los formatos JPEG XL o AVIF.

«El avance continuo del fotorrealismo en el renderizado va acompañado de un crecimiento en los datos de textura y, en consecuencia, un aumento de las exigencias de memoria y almacenamiento. Para abordar este problema, proponemos una nueva técnica de compresión neuronal diseñada específicamente para texturas de materiales. Desbloqueamos dos niveles más de detalle, es decir, 16 veces más texels, usando compresión de tasa de bits baja, con una calidad de imagen que es mejor que las técnicas avanzadas de compresión de imágenes, como AVIF y JPEG XL. Al mismo tiempo, nuestro método permite la descompresión en tiempo real bajo demanda con acceso aleatorio similar a la compresión de texturas en bloque en las GPU. Esto amplía nuestros beneficios de compresión desde el almacenamiento en disco hasta la memoria. La idea clave detrás de nuestro enfoque es comprimir varias texturas de material y sus cadenas de mipmap juntas, y usar una pequeña red neuronal, que está optimizada para cada material, para descomprimirlas. Finalmente, utilizamos una implementación de entrenamiento personalizado para lograr velocidades de compresión prácticas, cuyo rendimiento supera al de los marcos generales, como PyTorch, en un orden de magnitud.

Compresión neural de acceso aleatorio de texturas de materiales, NVIDIA»

A diferencia de los algoritmos BCx comunes, que requieren hardware personalizado, este algoritmo utiliza los métodos de multiplicación de matrices, que ahora son acelerados por las GPU modernas. En el documento se menciona que esto hace que el algoritmo NTC sea más práctico y más capaz debido a las menores limitaciones de disco y memoria.

Por último, Nvidia afirma que las texturas neurales se pueden representar en tiempo real con hasta 16 veces más texel que la compresión por bloque. El costo del renderizado 4K es de 1.15 ms, que es superior a 0.49 ms (medido en RTX 4090). Si bien el renderizado con 16 más texel es 2.4x más lento, precisamente es con 16 veces más texel, ocupando prácticamente el mismo tamaño en memoria con respecto a la compresión en bloque de baja resolución (3.5 MB vs 3.33 Mb). En caso de ser tener 4 u 8 texel, el tiempo de renderizado y el tamaño del archivo serían aun menores. Además, el tamaño que ocuparían las texturas en el disco sería mucho menor, para no terminar teniendo juego de 150GB como lo estamos teniendo ahora.

A pesar de la demostración fue hecha únicamente con una RTX 4090 (porque es la más núcleos tensor tiene), este nuevo tipo de compresión podría ejecutarse en cualquier GPU con núcleos Tensor, incluso en la humilde RTX 3050. Es muy probable que Nvidia haya corrido la demo con una RTX el 4090 para maximizar la calidad de texel y minimizar el tiempo de renderizado, pero aún quedará por verse si la tecnología precisa una cantidad especpifica de núcleos tensor para correr o no.

En un juego, nunca se necesitará una calidad de textura tan alta. Con compresión en x8 o incluso x4 deberían ser suficientemente buenas y obviamente se renderizarán mucho más rápido que lo que se muestra en la comparativa. Por supuesto, cuantos más núcleos Tensor, mejor, pero en la configuración de compresión más baja, una placa de rango medio debería poder funcionar bien.

Todavía queda mucho camino por recorrer antes de que se materialice en algo práctico, pero habrá información más concreta sobre Neural Texture Compression en el SIGGRAPH 2023 el 6 de agosto.

Una Respuesta

Dejar una respuesta