Retour au blog
Formats

Format DDS : le guide complet de la compression de texture DirectX

18 lecture min.

DDS (DirectDraw Surface) est le premier format de conteneur de textures de Microsoft, spécialement conçu pour les applications DirectX et largement adopté dans l'industrie des jeux sur PC. En tant que standard de facto pour les applications graphiques Windows, DDS prend en charge une gamme complète de formats de compression de blocs (BCn), de textures non compressées et de fonctionnalités avancées telles que les mipmaps, les cubemaps et les tableaux de textures. Sa prise en charge matérielle GPU native et ses performances optimisées en font un format essentiel pour le développement de jeux sur ordinateur et sur console.

Qu'est-ce que le format DDS ?

DDS est un format de conteneur développé par Microsoft pour stocker des textures compressées et non compressées, créé à l'origine pour DirectX mais désormais largement pris en charge dans les frameworks graphiques. Le format fournit un moyen standardisé de regrouper les données de texture avec les métadonnées nécessaires à la consommation du GPU, garantissant ainsi des performances et une compatibilité optimales sur différentes plates-formes matérielles.

À la base, DDS sert de wrapper autour de divers formats de compression de texture, notamment la famille BCn (Block Compression) (BC1-BC7), qui fournit une compression efficace accélérée par le matériel pour différents types de texture. Cette conception permet aux développeurs de stocker les textures dans un format qui peut être directement chargé par le GPU sans traitement supplémentaire, minimisant ainsi la bande passante mémoire et maximisant les performances de rendu.

La force du format réside dans son ensemble complet de fonctionnalités et son adoption généralisée. Des simples textures 2D aux cubesmaps et textures de volume complexes, DDS gère pratiquement toutes les exigences de texture pour les applications graphiques modernes. Son intégration avec DirectX et sa prise en charge des principales API graphiques comme OpenGL et Vulkan en font un choix polyvalent pour le développement multiplateforme.

Principales caractéristiques du format DDS

Prise en charge matérielle native

Accélération matérielle GPU directe pour les formats BCn sans surcharge de décompression CPU

Prise en charge complète de BCn

Prise en charge de tous les formats BCn (BC1-BC7) offrant une compression optimale pour différents types de textures

Prise en charge Mipmap intégrée

Stockage et gestion natifs de la chaîne mipmap pour un rendu efficace du niveau de détail

Fonctionnalités avancées de texture

Prise en charge des cubesmaps, des textures de volume, des tableaux de textures et des formats de pixels avancés

Explication des formats de compression BCn

DDS prend en charge la famille complète des formats BCn (Block Compression), chacun optimisé pour différents types de contenu de texture :

BC1 (DXT1)

Compression RVB avec 1 bit alpha ou pas d'alpha. Fournit une compression 6:1 de bonne qualité pour les textures diffuses sans exigences de transparence.

Idéal pour : les cartes diffuses, les textures d'albédo, les cartes de couleurs sans canal alpha

BC2 (DXT2)

Compression RVB avec alpha 4 bits explicite. Fournit une compression 4:1 avec des transitions alpha nettes.

Idéal pour : textures avec des bords alpha nets, éléments d'interface utilisateur avec une transparence dure

BC3 (DXT5)

Compression RVB avec alpha 4 bits interpolé. Fournit une compression 4:1 avec des dégradés alpha fluides.

Idéal pour : textures de personnages, effets de particules, dégradés, transitions alpha douces

BC4

Compression monocanal (niveaux de gris). Fournit une compression 2:1 pour les canaux bleus de carte normale ou les cartes de hauteur.

Idéal pour : cartes de hauteur, cartes de brillance, cartes normales de canaux individuels

BC5

Compression à deux canaux (généralement carte normale XY). Fournit une compression 2:1 pour les données cartographiques normales.

Idéal pour : cartes normales, cartes de flux, données de texture à deux canaux

BC6H

Compression HDR RVB pour le contenu à plage dynamique élevée. Fournit une compression 6:1 pour les textures HDR.

Idéal pour : environnements d'éclairage HDR, skyboxes HDR, cartes de réflexion HDR

BC7

Compression RVB de haute qualité avec alpha en option. Fournit une compression 3:1 avec une excellente qualité.

Idéal pour : textures de caractères de haute qualité, cartes spéculaires, textures de surface détaillées

Structure du fichier DDS

Les fichiers DDS suivent un format structuré avec trois composants principaux :

En-tête DDS (124 octets)

Contient des métadonnées essentielles, notamment les dimensions, les informations de format, le nombre de mipmap et les indicateurs de compression.

Structure DDSFMT (32 octets)

Spécifie les détails du format de pixel, le type de compression et les informations sur la profondeur de bits

Données de texture

Données de pixels compressées ou non compressées disposées selon le format et les dimensions spécifiés

Flux de travail DDS

Le flux de travail typique des textures DDS comprend plusieurs étapes :

1

1. Création de textures

Créez ou sourcez des fichiers de texture de haute qualité (PNG, TGA, PSD, etc.) avec des dimensions appropriées (de préférence des puissances de 2)

2

2. Compression BCn

Compresser les textures sources en utilisant le format BCn approprié en fonction du type de contenu et des exigences

3

3. Génération de mipmaps

Générez des chaînes de mipmap pour un rendu efficace du niveau de détail dans les applications 3D

4

4. Intégration du moteur de jeu

Importez des fichiers DDS dans des moteurs de jeu ou des applications graphiques pour une utilisation immédiate du GPU

Avantages du format DDS

Performances optimales

L'accélération matérielle directe du GPU élimine les goulots d'étranglement liés à la décompression du processeur

Large soutien de l'industrie

Format standard pris en charge par DirectX, OpenGL, Vulkan et les principaux moteurs de jeux

Ensemble complet de fonctionnalités

Prise en charge de fonctionnalités avancées telles que les cubemaps, les textures de volume et le contenu HDR

Écosystème d'outillage mature

Prise en charge étendue des outils, notamment DirectX SDK, texconv, Compressonator et des outils spécifiques au moteur

Cas d'utilisation idéaux

Développement de jeux PC

Parfait pour les jeux Windows et les titres multiplateformes ciblant les environnements de bureau

Textures du moteur de jeu

Idéal pour Unity, Unreal Engine, CryEngine et d'autres moteurs de jeux majeurs

Applications graphiques 3D

Adapté aux logiciels de visualisation, aux applications de CAO et aux outils de modélisation 3D

Applications VR/AR

Excellent pour les expériences VR/AR ciblant le matériel Windows

DDS vs autres formats

Comment DDS se compare-t-il aux autres formats de texture populaires :

Formats DDS et mobiles (ETC/ASTC)

DDS excelle dans les environnements de bureau tandis que les formats mobiles s'optimisent pour les contraintes GPU mobiles et la bande passante

DDS vs textures non compressées

DDS fournit une compression de 4:1 à 8:1 avec accélération matérielle par rapport aux textures non compressées nécessitant une bande passante complète

DDS et KTX

DDS est axé sur Windows/DirectX tandis que KTX offre une compatibilité multiplateforme OpenGL/Vulkan

Formats DDS et Web

DDS fournit une optimisation du bureau tandis que les formats Web tels que Basis Universal offrent une compression et une diffusion axées sur le Web.

Outils et ressources DDS

SDK Microsoft DirectX

SDK officiel avec outil de ligne de commande texconv ​​pour la conversion et la manipulation DDS

Compresseur AMD

Outil GUI avancé pour la compression BCn avec aperçu en temps réel et réglage de la qualité

Outils de textures NVIDIA

Bibliothèques et outils de compression de haute qualité avec compression BC7 supérieure

Importateur de textures Unity

Outils Unity intégrés pour les paramètres d'importation et de compression DDS

Éditeur de textures Unreal Engine

Gestion complète des textures avec prise en charge DDS et préréglages de compression

Meilleures pratiques DDS

Choisissez le bon format BCn en fonction du type de contenu : BC1 pour le diffus, BC3 pour l'alpha, BC5 pour les normaux, BC7 pour la haute qualité.

Générez toujours des mipmaps pour les textures utilisées dans les environnements 3D afin d'améliorer les performances

Utilisez des dimensions puissance de 2 lorsque cela est possible pour un alignement optimal de la mémoire GPU

Testez la qualité de la compression avec différents paramètres pour trouver l'équilibre entre la taille du fichier et la qualité visuelle

Tenir compte des capacités de la plate-forme cible lors de la sélection des formats de compression

Utilisez les paramètres de compression appropriés pour différents types de textures (cartes diffuses, spéculaires ou normales).

Conclusion

DDS reste un format clé dans l'industrie graphique, en particulier pour les applications Windows et le développement de jeux. Sa compression BCn accélérée par le matériel, son ensemble complet de fonctionnalités et son écosystème d'outils mature en font un excellent choix pour les développeurs ciblant les plates-formes de bureau et de console.

Alors que les formats plus récents comme ASTC et Basis Universal offrent des avantages pour des cas d'utilisation spécifiques, DDS continue d'offrir des performances et une compatibilité optimales pour les applications de jeux PC traditionnelles. Comprendre ses forces et ses limites aide les développeurs à prendre des décisions éclairées concernant la sélection du format de texture pour leurs projets spécifiques et leurs plates-formes cibles.

Lectures complémentaires et ressources

Développez vos connaissances avec ces ressources faisant autorité :