Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les cartes de texture sont des images numérisées dessinées sur des formes tridimensionnelles pour ajouter des détails visuels. Ils sont mappés dans ces formes pendant la rastérisation, et le processus peut consommer de grandes quantités de bus système et de mémoire. Pour réduire la quantité de mémoire consommée par les textures, Direct3D prend en charge la compression des surfaces de texture. Certains appareils Direct3D prennent en charge les surfaces de texture compressées en mode natif. Sur ces appareils, lorsque vous avez créé une surface compressée et chargé les données dans celle-ci, l’aire peut être utilisée dans Direct3D comme n’importe quelle autre surface de texture. Direct3D gère la décompression lorsque la texture est mappée à un objet 3D.
Efficacité du stockage et compression de texture
Tous les formats de compression de texture sont des puissances de deux. Bien que cela ne signifie pas qu’une texture est nécessairement carrée, cela signifie que les deux puissances x et y sont deux. Par exemple, si une texture est initialement de 512 par 128 octets, la mipmapping suivante est de 256 par 64, et ainsi de suite, avec chaque niveau décroissant d’une puissance de deux. À des niveaux inférieurs, où la texture est filtrée sur 16 par 2 et 8 par 1, il y aura des bits gaspillés, car le bloc de compression est toujours un bloc de 4 par 4 de texels. Les parties inutilisées du bloc sont rembourrées. Bien qu’il y ait des bits gaspiller aux niveaux les plus bas, le gain global est encore significatif. Le pire des cas est, en théorie, une texture 2K par 1 (2⁰ puissance). Ici, une seule ligne de pixels est encodée par bloc, tandis que le reste du bloc n’est pas utilisé.
Mélange de formats au sein d’une seule texture
Il est important de noter que toute texture unique doit spécifier que ses données sont stockées sous forme de 64 ou 128 bits par groupe de 16 texels. Si des blocs 64 bits ( autrement dit, format DXT1) sont utilisés pour la texture, il est possible de mélanger les formats alpha opaques et 1 bits sur une base par bloc dans la même texture. En d’autres termes, la comparaison de l’ampleur entière non signée de color_0 et de color_1 est effectuée de manière unique pour chaque bloc de 16 texels.
Une fois les blocs 128 bits utilisés, le canal alpha doit être spécifié en mode explicite (format DXT2 et DXT3) ou interpolé (format DXT4 et DXT5) pour la texture entière. Comme avec la couleur, lorsque le mode interpolé (format DXT4 et DXT5) est sélectionné, huit alphas interpolés ou six mode alphas interpolés peuvent être utilisés sur une base de bloc par bloc. Là encore, la comparaison de grandeur de alpha_0 et de alpha_1 est effectuée de façon unique sur une base de bloc par bloc.
Direct3D fournit des services pour compresser les surfaces utilisées pour texturer des modèles 3D. Cette section fournit des informations sur la création et la manipulation des données dans une surface de texture compressée.
Les informations sont contenues dans les rubriques suivantes.
- textures alpha opaques et 1 bits (Direct3D 9)
- textures avec des canaux Alpha (Direct3D 9)
- formats de texture compressé (Direct3D 9)
- à l’aide de textures compressées (Direct3D 9)
Rubriques connexes