stringtranslate.com

Compresión de textura

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 representación de gráficos por computadora 3D . 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 .

Se puede aplicar compresión de texturas para reducir el uso de memoria en tiempo de ejecución. Los datos de textura suelen ser la mayor fuente de uso de memoria en una aplicación móvil.

Compensaciones

En su artículo fundamental sobre la 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 deseable poder renderizar directamente a partir de los datos de textura comprimidos y, por lo tanto, para no afectar el rendimiento del renderizado, la descompresión debe ser rápida.
Acceso aleatorio
Dado que sería difícil predecir el orden en que un renderizador accede a los textels , 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 codificación de longitud de ejecución .
Tasa de compresión y calidad visual
En un sistema de renderizado, la compresión con pérdida 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 manera flexible la tasa de compresión con la calidad visual, utilizando métodos como la optimización de la tasa de distorsión (RDO).
Velocidad de codificación
La compresión de texturas es más tolerante con las tasas de codificación/decodificació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.

Teniendo en cuenta lo anterior, la mayoría de los algoritmos de compresión de texturas implican alguna forma de cuantificación vectorial con pérdida de 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 adicionales. La codificación de 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 se puede ejecutar sobre la marcha durante el renderizado como parte del proceso general de gráficos , lo que reduce las necesidades generales de ancho de banda y almacenamiento en todo el sistema de gráficos. Además de los mapas de textura, la compresión de texturas también se puede utilizar para codificar otros tipos de mapas de representación, incluidos mapas de relieve y mapas de superficie normal . La compresión de texturas también se puede utilizar junto con otras formas de procesamiento de mapas, como mapas MIP y filtrado anisotrópico .

Disponibilidad

Algunos ejemplos de sistemas prácticos de compresión de texturas son la compresión de texturas S3 (S3TC), PVRTC , la compresión de texturas Ericsson (ETC) y la compresión de texturas escalable adaptativa (ASTC); estos pueden ser compatibles con unidades de funciones especiales en las modernas unidades de procesamiento de gráficos .

OpenGL y OpenGL ES, tal como se implementan en muchas tarjetas aceleradoras de video y GPU móviles, pueden admitir múltiples tipos comunes de compresión de texturas, generalmente mediante el uso de extensiones de proveedores.

Supercompresión

Una textura comprimida se puede comprimir aún más en lo que se llama "supercompresión". Los formatos de compresión de texturas de velocidad fija están optimizados para el acceso aleatorio y son mucho menos eficientes en comparación con formatos de imágenes como PNG . Al agregar más compresión, un programador puede reducir la brecha 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 nuevos, descomprimirla la propia GPU. La supercompresión ahorra la misma cantidad de VRAM que la compresión de texturas normal, pero ahorra más espacio en disco y tamaño de descarga. [4]

Compresión de textura neuronal

La compresión neuronal de acceso aleatorio de texturas de materiales (Neural Texture Compression) es una tecnología de Nvidia que permite dos niveles adicionales de detalle (16 veces más téxels , es decir, una resolución cuatro veces mayor) 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 mapas MIP juntas, y usar una pequeña red neuronal , que esté optimizada para cada material, para descomprimirlas. [6]


Ver también

Referencias

  1. ^ Andrew cervezas; Maneesh Agrawala; Navin Chaddha (1996), "Renderizado a partir de texturas comprimidas", Computer Graphics, Proc. SÍGRAFO : 373–378
  2. ^ "biblioteca de compresión de texturas de código abierto crujiente". 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. ^ https://www.tomshardware.com/news/nvidia-uses-neural-network-for-innovative-texture-compression-method
  6. ^ https://research.nvidia.com/publication/2023-08_random-access-neural-compression-material-textures

enlaces externos