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 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 acceso aleatorio .
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 texels , cualquier esquema de compresión de textura 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 compensar de manera flexible la tasa de compresión frente a 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.
Dado lo anterior, la mayoría de los algoritmos de compresión de texturas involucran 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 tamaño fijo de bits de codificación, 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 la renderización como parte de la canalización general de gráficos , reduciendo el ancho de banda general y las necesidades de almacenamiento en todo el sistema de gráficos. Además de los mapas de texturas, la compresión de texturas también se puede utilizar para codificar otros tipos de mapas de renderizado, incluidos los mapas de relieve y los 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 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 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.
La compresión de texturas se puede aplicar para reducir el uso de memoria en tiempo de ejecución, a diferencia de la compresión de texturas diseñada para reducir la descarga o el tamaño del disco. Los datos de textura suelen ser la mayor fuente de uso de memoria en una aplicación móvil.
Ver también
Referencias
- ^ Andrew Beers; Maneesh Agrawala; Navin Chaddha (1996), "Representación a partir de texturas comprimidas" , Gráficos por computadora, Proc. SIGGRAPH : 373–378
- ^ "biblioteca de compresión de texturas de código abierto crujiente" . GitHub . Consultado el 13 de septiembre de 2016 .
enlaces externos
- http://gamma.cs.unc.edu/GST/ GST: Texturas supercomprimidas decodificables por GPU