Recursos de texturas comprimidas
Los mapas de textura son imágenes digitalizadas dibujadas en formas tridimensionales para agregar detalles visuales. Se asignan a estas formas durante la rasterización y el proceso puede consumir grandes cantidades de memoria y bus del sistema. Para reducir la cantidad de memoria consumida por texturas, Direct3D admite la compresión de superficies de textura. Algunos dispositivos Direct3D admiten superficies de textura comprimidas de forma nativa. En estos dispositivos, cuando haya creado una superficie comprimida y cargado los datos en él, la superficie se puede usar en Direct3D como cualquier otra superficie de textura. Direct3D controla la descompresión cuando la textura se asigna a un objeto 3D.
Eficiencia del almacenamiento y compresión de texturas
Todos los formatos de compresión de textura son potencias de dos. Aunque esto no significa que una textura sea necesariamente cuadrada, significa que tanto x como y son potencias de dos. Por ejemplo, si una textura es originalmente de 512 en 128 bytes, la siguiente mipmapping sería de 256 a 64, y así sucesivamente, con cada nivel disminuyendo por una potencia de dos. En niveles inferiores, donde la textura se filtra a 16 por 2 y 8 por 1, habrá bits de desperdiciado porque el bloque de compresión es siempre un bloque de 4 por 4 de texturas. Las partes sin usar del bloque se rellenan.
Aunque hay bits desperdiciados en los niveles más bajos, la ganancia general sigue siendo significativa. El peor de los casos es, en teoría, una textura 2K por 1 (2%). En este caso, solo se codifica una sola fila de píxeles por bloque, mientras que el resto del bloque no se usa.
Mezcla de formatos dentro de una sola textura
Es importante tener en cuenta que cualquier textura única debe especificar que sus datos se almacenan como 64 o 128 bits por grupo de 16 elementos de textura. Si los bloques de 64 bits (es decir, el formato de compresión de bloques BC1) se usan para la textura, es posible mezclar los formatos alfa opacos y de 1 bits por bloque dentro de la misma textura. Es decir, la comparación de la magnitud de entero sin signo de color_0 y color_1 se realiza de forma única para cada bloque de 16 elementos de textura.
Una vez que se usan los bloques de 128 bits, el canal alfa debe especificarse en modo explícito (formato BC2) o en modo interpolado (formato BC3) para toda la textura. Al igual que con el color, cuando se selecciona el modo interpolado (formato BC3), se pueden usar ocho alfas interpolados o seis alfas interpolados en bloque. De nuevo, la comparación de magnitud de alpha_0 y alpha_1 se realiza de forma única en bloque.
Direct3D proporciona servicios para comprimir superficies que se usan para los modelos 3D de texturización. En esta sección se proporciona información sobre cómo crear y manipular los datos en una superficie de textura comprimida.
En esta sección
Tema | Descripción |
---|---|
El formato de textura BC1 es para texturas que son opacas o tienen un solo color transparente. |
|
Hay dos maneras de codificar mapas de textura que muestran transparencia más compleja. En cada caso, un bloque que describe la transparencia precede al bloque de 64 bits ya descrito. La transparencia se representa como un mapa de bits de 4x4 con 4 bits por píxel (codificación explícita), o con menos bits y interpolación lineal que es análogo a lo que se usa para la codificación de color. |
|
La compresión de bloques es una técnica de compresión de textura perdida para reducir el tamaño de textura y la superficie de memoria, lo que proporciona un aumento del rendimiento. Una textura comprimida por bloques puede ser menor que una textura con 32 bits por color. |
|
Esta sección contiene información sobre la organización interna de formatos de textura comprimidos. No necesita estos detalles para usar texturas comprimidas, ya que puede usar funciones de Direct3D para la conversión a y desde formatos comprimidos. Sin embargo, esta información es útil si desea operar directamente en datos de superficie comprimidos. |
Temas relacionados