Articulo de referencia

Compresión de texturas

La compresión de texturas es una forma especializada de compresión de imágenes diseñada para almacenar mapas de texturas en sistemas de renderizado de gráficos 3D por computador...

La compresión de texturas es una forma especializada de compresión de imágenes diseñada para almacenar mapas de texturas en sistemas de renderizado de gráficos 3D por computadora . A diferencia de los algoritmos de compresión de imágenes convencionales, los algoritmos de compresión de texturas están optimizados para el acceso aleatorio .

La compresión de texturas puede aplicarse para reducir el uso de memoria durante la ejecución. Los datos de textura suelen ser la principal fuente de consumo de memoria en una aplicación móvil.

Compensaciones

En su artículo fundamental sobre compresión de texturas, [ 1 ] Beers, Agrawala y Chaddha enumeran cuatro características que tienden a diferenciar la compresión de texturas de otras técnicas de compresión de imágenes. Estas características son:

Velocidad de decodificación
Es muy conveniente poder renderizar directamente a partir de los datos de textura comprimidos, por lo que, para no afectar al rendimiento de la renderización, la descompresión debe ser rápida.
Acceso aleatorio
Dado que predecir el orden en que un motor de renderizado accede a los texeles sería difícil, cualquier esquema de compresión de texturas debe permitir un acceso aleatorio rápido a los datos de textura descomprimidos. Esto tiende a descartar muchos esquemas de compresión de imágenes más conocidos, como JPEG o la codificación de longitud de ejecución .
Tasa de compresión y calidad visual
En un sistema de renderizado, la compresión con pérdidas puede ser más tolerable que en otros casos de uso. Algunas bibliotecas de compresión de texturas, como Crunch, [ 2 ] permiten al desarrollador equilibrar de forma flexible la tasa de compresión con la calidad visual, utilizando métodos como la optimización de tasa-distorsión (RDO).
Velocidad de codificación
La compresión de texturas tolera mejor las tasas de codificación/descodificación asimétricas, ya que el proceso de codificación a menudo se realiza solo una vez durante el proceso de creación de la aplicación.

En vista de lo anterior, la mayoría de los algoritmos de compresión de texturas implican algún tipo de cuantización vectorial con pérdida y tasa fija de pequeños bloques de píxeles de tamaño fijo en pequeños bloques de bits de codificación de tamaño fijo, a veces con pasos adicionales de preprocesamiento y posprocesamiento. La codificación por truncamiento de bloques es un ejemplo muy simple de esta familia de algoritmos.

Debido a que sus patrones de acceso a datos están bien definidos, la descompresión de texturas puede ejecutarse sobre la marcha durante el renderizado como parte del flujo de trabajo gráfico general , lo que reduce el ancho de banda y las necesidades de almacenamiento en todo el sistema gráfico. Además de los mapas de texturas, la compresión de texturas también puede utilizarse para codificar otros tipos de mapas de renderizado, incluidos los mapas de relieve y los mapas de normales de superficie . La compresión de texturas también puede utilizarse junto con otras formas de procesamiento de mapas, como los mipmaps y el filtrado anisotrópico .

Disponibilidad

Algunos ejemplos de sistemas prácticos de compresión de texturas son S3 Texture Compression (S3TC), PVRTC , Ericsson Texture Compression (ETC) y Adaptive Scalable Texture Compression (ASTC); estos pueden ser compatibles con unidades de funciones especiales en las unidades de procesamiento gráfico (GPU) modernas .

OpenGL y OpenGL ES, tal como se implementan en muchas tarjetas aceleradoras de vídeo y GPU móviles, pueden admitir varios tipos comunes de compresión de texturas, generalmente mediante el uso de extensiones del fabricante.

Supercompresión

Una textura comprimida puede comprimirse aún más mediante lo que se denomina "supercompresión". Los formatos de compresión de texturas de tasa fija están optimizados para el acceso aleatorio y son mucho menos eficientes que los formatos de imagen como PNG . Al añadir compresión adicional, un programador puede reducir la diferencia de eficiencia. La CPU puede descomprimir la capa adicional para que la GPU reciba una textura comprimida normal, [ 3 ] o, en métodos más recientes, la propia GPU puede descomprimirla. La supercompresión ahorra la misma cantidad de VRAM que la compresión de texturas normal, pero ahorra más espacio en disco y reduce el tamaño de descarga. [ 4 ]

Compresión de textura neuronal

La compresión neuronal de acceso aleatorio de texturas de materiales (compresión de textura neuronal) es una tecnología de Nvidia que permite dos niveles adicionales de detalle (16 veces más texeles , es decir, cuatro veces mayor resolución) manteniendo requisitos de almacenamiento similares a los de los métodos tradicionales de compresión de texturas. [ 5 ]

La idea clave es comprimir múltiples texturas de materiales y sus cadenas de mipmaps juntas, y usar una pequeña red neuronal , que está optimizada para cada material, para descomprimirlas. [ 6 ]

Véase también

Referencias

  1. Andrew Beers; Maneesh Agrawala; Navin Chaddha (1996), " Renderizado a partir de texturas comprimidas" , Computer Graphics, Proc. SIGGRAPH : 373–378
  2. "crunch open source texture compression library" . GitHub . Consultado el 13 de septiembre de 2016 .
  3. Strom, Jacob; Wennersten, Per (5 de agosto de 2011). Compresión sin pérdidas de texturas ya comprimidas . HPG '11: Actas del Simposio ACM SIGGRAPH sobre gráficos de alto rendimiento. págs. 177–182 . doi : 10.1145/2018323.2018351 . 
  4. Krajcevski, Pavel; Pratapa, Srihari; Manocha, Dinesh (11 de noviembre de 2016). "GST: texturas supercomprimidas decodificables por GPU" . Transacciones ACM sobre gráficos . 35 (6): 1– 10. doi : 10.1145/2980179.2982439 .
  5. "Nvidia utiliza redes neuronales para un método innovador de compresión de texturas" . 6 de mayo de 2023.
  6. "Compresión neuronal de acceso aleatorio de texturas de materiales | Investigación" .
  • https://gamma.cs.unc.edu/GST/ GST: texturas supercomprimidas decodificables por GPU