Recursos de textura compactada
Os mapas de textura são imagens digitalizadas desenhadas em formas tridimensionais para adicionar detalhes visuais. Eles são mapeados nessas 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ê cria uma superfície compactada e carrega os dados nela, a superfície pode ser usada no Direct3D como qualquer outra superfície de textura. O Direct3D lida com 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, significa que x e y são potências 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 em uma potência de dois. Em níveis mais baixos, onde 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 texels de 4 por 4. As partes não utilizadas 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⁰ de potência). Aqui, apenas uma única linha de pixels é codificada por bloco, enquanto o restante do bloco não é usado.
Misturando formatos em 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, formato de compactação de bloco BC1 - forem usados para a textura, é possível misturar os formatos alfa opaco e de 1 bit por bloco dentro da mesma textura. Em outras palavras, a comparação da magnitude inteira sem sinal de color_0 e color_1 é executada exclusivamente para cada bloco de 16 texels.
Depois que os blocos de 128 bits são usados, o canal alfa deve ser especificado no modo explícito (formato BC2) ou interpolado (formato BC3) para toda a textura. Assim como acontece com a cor, quando o modo interpolado (formato BC3) é selecionado, oito alfas interpolados ou seis modos alfas interpolados podem ser usados bloco por bloco. Novamente, a comparação de magnitude de alpha_0 e alpha_1 é feita exclusivamente bloco a bloco.
O Direct3D fornece serviços para compactar superfícies que são usadas para texturizar modelos 3D. Esta seção fornece informações sobre como criar e manipular os dados em uma superfície de textura compactada.
Nesta seção
Tópico | Descrição |
---|---|
O formato de textura BC1 é para texturas opacas ou com uma única cor transparente. |
|
Há duas maneiras de codificar mapas de textura que exibem transparência mais complexa. Em cada caso, um bloco que descreve a transparência precede o bloco de 64 bits já descrito. A transparência é representada como um bitmap 4x4 com 4 bits por pixel (codificação explícita) ou com menos bits e interpolação linear análoga ao que é usado para codificação de cores. |
|
A compactação de bloco é uma técnica de compactação de textura com perdas para reduzir o tamanho da textura e o volume de memória, proporcionando um aumento de desempenho. Uma textura compactada em bloco pode ser menor do que uma textura com 32 bits por cor. |
|
Esta seção contém informações sobre a organização interna de formatos de textura compactados. Você não precisa desses detalhes para usar texturas compactadas, pois pode usar funções do Direct3D para conversão de e para formatos compactados. No entanto, essas informações são úteis se você deseja operar diretamente em dados de superfície compactados. |
Tópicos relacionados