¿Qué es la compresión de texturas?

En relación con los gráficos por computadora, la compresión de texturas es una forma de tomar una imagen que se utilizará como textura en un objeto, generalmente en una escena tridimensional (3D), y reducir la cantidad de memoria que requiere la imagen. A diferencia de los algoritmos de compresión de imágenes más tradicionales, los métodos de compresión de texturas intentan proporcionar una forma de mantener la imagen comprimida en la memoria al mismo tiempo que permiten que un programa acceda a píxeles específicos dentro de la imagen sin tener que descomprimir completamente la imagen. Hay varias formas de lograr esto, incluida la codificación de truncamiento de bloques (BTC), aunque los ahorros en el espacio de memoria durante la ejecución del programa generalmente deben equilibrarse con un aumento en el uso del procesador o una reducción en la calidad de la imagen resultante del uso de compresión con pérdida. Con mayor frecuencia, los fabricantes de diferentes tarjetas gráficas y otros dispositivos implementan el soporte para la compresión de texturas directamente en el hardware, lo que lleva a varios algoritmos de compresión comunes que llevan los nombres de diferentes fabricantes de hardware.

Una de las razones por las que se desarrolló la compresión de texturas y se ha convertido en una técnica común en los gráficos 3D es que se pueden necesitar varias docenas de gigabytes de memoria para almacenar texturas de imagen sin comprimir para escenas destinadas a ser vistas en monitores de mayor resolución. Además, los dispositivos digitales portátiles generalmente tienen cantidades limitadas de memoria que, de otro modo, no podrían contener las imágenes requeridas para una escena en 3D. La compresión de texturas reduce la cantidad de memoria necesaria en un sistema, por lo que se pueden usar más texturas o texturas de mayor calidad.

El tipo más básico de compresión de textura se conoce como codificación de truncamiento de bloques. Este método toma una imagen y la divide en pequeños bloques de píxeles, encontrando los dos colores dentro del bloque que están más alejados de la perspectiva del espacio de color. A los píxeles de la imagen real dentro del bloque se les asigna un valor numérico para indicar su color en relación con los dos colores extremos. El esquema comprime una imagen porque la cantidad de bits necesarios para almacenar la desviación de un píxel de los colores en un bloque es menor que la necesaria para almacenar el color real. La compresión resultante también proporciona una forma de indexar píxeles directamente desde la imagen comprimida según sea necesario.

Dependiendo del hardware, software y otros factores, la compresión de textura puede ocurrir en tiempo de ejecución o puede realizarse de antemano y guardarse como un archivo. Las texturas creadas dinámicamente siempre deben comprimirse durante la ejecución. La carga de una textura comprimida desde un archivo puede ser más rápida al principio, pero también puede causar problemas si el hardware no admite un tipo específico de compresión.