Recursos de textura compactada (Direct3D 9)
Mapas de textura são imagens digitalizadas desenhadas em formas tridimensionais para adicionar detalhes visuais. Elas são mapeadas para essas formas durante a rasterização, e o processo pode consumir grandes quantidades do barramento do sistema e da memória. Para reduzir a quantidade de memória consumida por texturas, o Direct3D dá suporte à compactação de superfícies de textura. Alguns dispositivos Direct3D dão suporte a superfícies de textura compactadas nativamente. Nesses dispositivos, quando você criou uma superfície compactada e carregou os dados nele, a superfície pode ser usada no Direct3D como qualquer outra superfície de textura. O Direct3D manipula a descompactação quando a textura é mapeada para um objeto 3D.
Eficiência de armazenamento e compactação de textura
Todos os formatos de compactação de textura são potências de dois. Embora isso não signifique que uma textura seja necessariamente quadrada, isso significa que x e y são poderes de dois. Por exemplo, se uma textura for originalmente 512 por 128 bytes, o próximo mipmapping seria 256 por 64 e assim por diante, com cada nível diminuindo por uma potência de dois. Em níveis inferiores, em que a textura é filtrada para 16 por 2 e 8 por 1, haverá bits desperdiçados porque o bloco de compactação é sempre um bloco de 4 por 4 texels. Partes não usadas do bloco são acolchoadas. Embora haja bits desperdiçados nos níveis mais baixos, o ganho geral ainda é significativo. O pior caso é, em teoria, uma textura 2K por 1 (2⁰ potência). Aqui, apenas uma única linha de pixels é codificada por bloco, enquanto o restante do bloco não é usado.
Combinando formatos dentro de uma única textura
É importante observar que qualquer textura única deve especificar que seus dados são armazenados como 64 ou 128 bits por grupo de 16 texels. Se blocos de 64 bits - ou seja, formatar DXT1 - forem usados para a textura, é possível misturar os formatos alfa opacos e de 1 bit em uma base por bloco dentro da mesma textura. Em outras palavras, a comparação da magnitude inteiro sem sinal de color_0 e color_1 é executada exclusivamente para cada bloco de 16 texels.
Depois que os blocos de 128 bits forem usados, o canal alfa deverá ser especificado no modo explícito (formato DXT2 e DXT3) ou interpolado (formato DXT4 e DXT5) para toda a textura. Assim como acontece com a cor, quando o modo interpolado (formato DXT4 e DXT5) é selecionado, oito alfas interpolados ou seis modos alfa interpolados podem ser usados em uma base bloco a bloco. Novamente, a comparação de magnitude de alpha_0 e alpha_1 é feita exclusivamente em uma base bloco a bloco.
O Direct3D fornece serviços para compactar superfícies usadas para texutura de modelos 3D. Esta seção fornece informações sobre como criar e manipular os dados em uma superfície de textura compactada.
As informações estão contidas nos tópicos a seguir.
- texturas alfa opacas e de 1 bit (Direct3D 9)
- texturas com canais alfa (Direct3D 9)
- formatos de textura compactada (Direct3D 9)
- usando texturas compactadas (Direct3D 9)
Tópicos relacionados