Compresión de texturas
# Compresión de texturas

La compresión de texturas es una forma especializada de compresión de imagen diseñada para almacenar texturas en sistemas de renderizado de gráficos 3D por ordenador. Al contrario que los algoritmos de compresión de imagen convencionales, los algoritmos de compresión de texturas están optimizados para acceso aleatorio.

## Funcionamiento

En sus especificaciones básicas sobre compresión de texturas, Beers, Agrawala y Chaddha listan cuatro características que tienden a diferenciar la compresión de texturas de otras técnicas de compresión de imagen. Estas características son:

* Velocidad de decodificación: es altamente deseable que el algoritmo sea capaz de renderizar directamente desde la textura comprimida. Así que, para no impactar sobre el rendimiento de renderizado, la descompresión ha de ser rápida.
* Acceso Aleatorio: debido a que predecir el orden en el que un motor de renderizado accede a las texturas es 'difícil', cualquier esquema de compresión de texturas debe permitir un acceso aleatorio a los datos de una textura descomprimida. Este requerimiento tiende a excluir esquemas de compresión de imagen tales como JPEG o Run-length encoding (RLE).
* Relación de compresión y calidad visual: en un sistema de renderizado, la pérdida de compresión puede ser más tolerable que en otros casos.
* Velocidad de codificación: la compresión de texturas es más tolerante a codificación y descodificación asimétrica. A menudo, el proceso de codificación se realiza durante la ejecución de la aplicación.

La mayoría de los algoritmos de compresión de texturas conllevan alguna forma de pérdida de cuantificación vectorial de bloques de píxeles de tamaño fijo en bloques de tamaño más pequeños, a veces con pasos adicionales de pre-procesado y post-procesado. La Codificación por Truncado de Bloque es un ejemplo muy simple de esta familia de algoritmos.

Debido a que los patrones de acceso a datos están bien definidos, la descompresión de texturas puede ejecutarse en forma rápida durante el renderizado como parte de la tubería de gráficos, reduciendo el ancho de banda y las necesidades de almacenamiento del sistema de gráficos. De la misma forma que con los mapas de texturas, la compresión de texturas puede utilizarse también para codificar otros tipos de renderizado de mapas, incluyendo bump mapping y normal mapping. La compresión de texturas puede utilizarse también junto con otras formas de procesamiento de mapas, tales como MIP map y el filtro anisotrópico.

## Disponibilidad

Algunos ejemplos prácticos de sistemas de compresión de texturas son S3 Texture Compression, PVRTC y Ericsson Texture Compression.

OpenGL, tal y como está implementado en muchas tarjetas aceleradoras de vídeo, puede soportar hasta tres tipos comunes de compresión de texturas.

