Retour au blog
Formats

Format KTX : le guide complet du conteneur de textures Khronos

20 lecture min.

KTX (Khronos Texture) est le standard ouvert officiel pour les formats de conteneurs de texture développé et maintenu par le groupe Khronos. En tant que format libre de droits et indépendant du fournisseur, conçu spécifiquement pour les API graphiques modernes telles qu'OpenGL, OpenGL ES et Vulkan, KTX fournit un moyen standardisé de stocker et de transporter des textures compressées sur différentes plates-formes et applications. Avec deux versions principales : KTX1 pour les applications OpenGL héritées et KTX2 pour les flux de travail modernes basés sur Vulkan, KTX sert d'épine dorsale aux pipelines d'actifs de texture dans le développement graphique professionnel.

Qu'est-ce que le format KTX ?

KTX est un format de conteneur conçu pour stocker les données de texture d'une manière qui peut être directement consommée par le matériel graphique. Contrairement aux formats d'image comme PNG ou JPEG, KTX est spécifiquement optimisé pour le chargement de textures GPU, prenant en charge divers formats de compression, notamment ETC, ASTC, BCn et PVRTC. Le format comprend des métadonnées essentielles pour une interprétation correcte des textures, ce qui le rend idéal pour les applications graphiques multiplateformes.

Le format a été créé à l'origine pour répondre à la fragmentation des formats de compression de texture sur différentes plates-formes et API. Avant KTX, les développeurs devaient gérer plusieurs formats propriétaires tels que DDS pour DirectX, PVR pour PowerVR et divers formats spécifiques à la plate-forme. KTX fournit une solution unifiée qui fonctionne sur OpenGL, OpenGL ES et Vulkan, avec des capacités de chargement direct du GPU.

KTX a considérablement évolué depuis son introduction, le KTX2 représentant un bond en avant majeur en termes de fonctionnalités et de capacités. La version la plus récente ajoute la prise en charge des schémas de supercompression tels que Basis Universal, une gestion améliorée des métadonnées via le Data Format Descriptor (DFD) et une meilleure prise en charge des fonctionnalités de texture modernes telles que les tableaux de textures, les textures 3D et les cubemaps.

Principales caractéristiques du format KTX

Norme Khronos

Norme officielle du groupe Khronos garantissant une large adoption par l'industrie et une compatibilité multiplateforme

Indépendant du format

Prend en charge pratiquement tous les formats de compression de texture, notamment ETC, ASTC, BCn, PVRTC et les formats non compressés

Métadonnées riches

Prise en charge complète des métadonnées, y compris l'orientation, l'espace colorimétrique, les paramètres de compression et les paires clé-valeur personnalisées

Prise en charge complète des mipmaps

Prise en charge native des chaînes de mipmap, des tableaux de textures, des textures 3D et des cubemaps

Types de textures avancés

Prise en charge des tableaux de textures, des textures 3D, des cubemaps et d'autres types de textures avancés

Multiplateforme

Fonctionne de manière transparente sur les plateformes Windows, macOS, Linux, iOS, Android et Web

Comparaison des versions KTX

Comprendre les différences entre KTX1 et KTX2 est crucial pour choisir le bon format pour votre application :

KTX1 (héritage)

Le format KTX original conçu pour les applications OpenGL et OpenGL ES. Structure simple basée sur les paramètres de texture OpenGL.

KTX1 utilise une structure d'en-tête simple suivie de données clé-valeur, puis de données d'image. Il est compatible avec les anciennes versions d'OpenGL et offre des capacités de stockage de textures de base. Bien qu'il soit toujours largement pris en charge, il lui manque les fonctionnalités avancées du KTX2.

KTX2 (moderne)

Le format KTX moderne conçu pour Vulkan et les applications graphiques de nouvelle génération. Fonctionnalités améliorées et prise en charge de la supercompression.

KTX2 introduit des améliorations significatives, notamment la supercompression Basis Universal, les descripteurs de format de données (DFD), l'index de niveau pour un accès efficace aux données et une meilleure prise en charge des tableaux de textures et des textures 3D. C'est le choix recommandé pour les nouveaux projets.

Formats de compression pris en charge

KTX sert de conteneur pour différents formats de compression, ce qui le rend incroyablement polyvalent :

ETC (Compression de texture Ericsson)

Compression standard pour les appareils mobiles, avec ETC1 pour la compression RVB et ETC2 pour la compression RGBA

ASTC (Compression de texture adaptative et évolutive)

Compression moderne et de haute qualité prenant en charge différentes tailles de bloc de 4x4 à 12x12 pixels

BCn (compression de bloc)

Formats de compression DirectX, notamment BC1-BC7, pour les jeux sur ordinateur et les applications Windows

PVRTC (compression de texture PowerVR)

Compression spécifique à PowerVR pour iOS et les systèmes embarqués avec variantes 2bpp et 4bpp

Formats non compressés

Formats standard non compressés comme RGB8, RGBA8 et divers formats HDR

Structure du fichier KTX

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

En-tête de fichier

Contient l'identification du format, les informations de version et les métadonnées de texture de base telles que les dimensions et le format.

Données de valeur-clé

Section de métadonnées contenant des paires clé-valeur personnalisées pour des informations supplémentaires sur la texture

Données d'images

Données de texture réelles compressées ou non compressées organisées par niveaux de mipmap et couches de tableau

Structure de l'en-tête KTX1

KTX1 utilise un en-tête de 64 octets basé sur les paramètres de texture OpenGL :

Identifiant (12 octets)

"«KTX 11»\r\n\x1A\n" - Identifiant du format de fichier pour validation

Endianité (4 octets)

Spécifie l'ordre des octets : 0x04030201 pour le petit-boutiste, 0x01020304 pour le gros-boutiste

glType (4 octets)

Type de données OpenGL (par exemple, GL_UNSIGNED_BYTE) - 0 pour les formats compressés

glFormat (4 octets)

Format OpenGL (par exemple, GL_RGB) - 0 pour les formats compressés

glInternalFormat (4 octets)

Format interne OpenGL (par exemple, GL_COMPRESSED_RGB8_ETC2)

glBaseInternalFormat (4 octets)

Format de base OpenGL pour la compatibilité avec les anciennes versions d'OpenGL

pixelWidth (4 octets)

Largeur de la texture en pixels

pixelHeight (4 octets)

Hauteur de la texture en pixels (0 pour les textures 1D)

pixelDepth (4 octets)

Profondeur de texture en pixels (0 pour les textures 2D)

numberOfArrayElements (4 octets)

Nombre d'éléments du tableau (0 pour les textures hors tableau)

numberOfFaces (4 octets)

Nombre de faces (6 pour les cubemaps, 1 pour les textures régulières)

numberOfMipmapLevels (4 octets)

Nombre de niveaux de mipmap (1 pour aucun mipmap)

bytesOfKeyValueData (4 octets)

Taille de la section de données clé-valeur en octets

Améliorations de la structure du KTX2

KTX2 introduit plusieurs nouveaux composants structurels pour des fonctionnalités améliorées :

En-tête amélioré

Structure d'en-tête améliorée avec informations de version, identifiants de format et indicateurs de taille des données

Indice de niveau

Système d'indexation efficace pour un accès rapide à des niveaux de mipmap et des données de texture spécifiques

Descripteur de format de données (DFD)

Système de description de format complet remplaçant les constantes du format OpenGL

Données de valeur-clé

Système de métadonnées amélioré avec prise en charge de l'internationalisation et des types de données complexes

Données globales de supercompression

Données globales pour les schémas de supercompression comme Basis Universal

Métadonnées et données de valeurs-clés

Les fichiers KTX peuvent contenir des métadonnées étendues via la section de données clé-valeur :

Orientation des textures

Spécifie l'orientation de la texture (en haut à gauche, en bas à droite, etc.) pour un rendu correct

Informations sur le format

Détails sur le format de compression, les paramètres de qualité et les paramètres d'encodage

Informations sur l'écrivain

Informations sur l'outil ou l'application qui a créé le fichier KTX

Paramètres de compression

Paramètres de compression spécifiques et paramètres de qualité utilisés

Espace colorimétrique

Informations sur l'espace colorimétrique, notamment les profils de couleurs sRGB, linéaires et HDR

Flux de travail de développement KTX

La création et la gestion des textures KTX impliquent ces étapes clés :

1

Préparation des actifs sources

Préparez des images sources de haute qualité avec des dimensions et des profils de couleurs appropriés

2

Sélection du format

Choisissez le format de compression approprié en fonction des plates-formes cibles et des exigences de qualité

3

Compression des textures

Utilisez des outils tels que Toktx ou Asset Pipelines pour compresser les images sources au format KTX.

4

Ajout de métadonnées

Ajoutez des métadonnées appropriées, notamment l'orientation, l'espace colorimétrique et les propriétés personnalisées.

5

Validation des fichiers

Valider les fichiers KTX pour la compatibilité et l'exactitude avec les plates-formes cibles

6

Intégration d'applications

Intégrez le chargement et la gestion KTX dans votre application graphique

Principaux avantages du format KTX

Norme de l'industrie

Norme du groupe Khronos garantissant un support à long terme et une adoption à grande échelle par l'industrie

Flexibilité des formats

Prend en charge pratiquement tous les formats de compression, ce qui le rend évolutif et polyvalent

Métadonnées riches

Système de métadonnées complet pour une interprétation et une gestion appropriées des textures

Fonctionnalités avancées

Prise en charge des fonctionnalités de texture modernes telles que les tableaux, les textures 3D et la supercompression

Multiplateforme

Fonctionne sur toutes les principales plates-formes sans modification ni conversion

Prêt pour l'avenir

KTX2 et la prise en charge de la supercompression garantissent la compatibilité avec les futures technologies graphiques

Cas d'utilisation courants

Applications Vulkan

Format principal pour les applications Vulkan modernes avec capacités de chargement direct du GPU

Applications OpenGL

Format de texture multiplateforme pour les applications OpenGL et OpenGL ES

Applications WebGL

Applications graphiques basées sur le Web via les chargeurs de texture KTX et WebGL

Développement de jeux

Développement de jeux professionnels avec des pipelines d'actifs de textures multiplateformes

Applications VR/AR

Applications de réalité virtuelle et augmentée nécessitant un chargement de texture efficace

Développement mobile

Applications iOS et Android avec formats de compression de texture optimisés

KTX par rapport aux autres formats

Comprendre comment KTX se compare aux autres formats de texture :

KTX et DDS

KTX est multiplateforme et indépendant de l'API, tandis que DDS est spécifique à DirectX et axé sur Windows.

KTX et PVR

KTX prend en charge plusieurs formats de compression tandis que PVR est optimisé pour les GPU PowerVR et iOS

KTX1 contre KTX2

KTX2 offre une supercompression, de meilleures métadonnées et des fonctionnalités modernes par rapport à l'ancien KTX1

KTX et Basis Universal

KTX est un format de conteneur tandis que Basis Universal est un format de compression qui peut être stocké dans KTX2.

Outils et ressources de développement

Outil toktx

Outil de ligne de commande officiel pour créer et convertir des fichiers KTX à partir de différents formats d'image

Package d'outils KTX

Suite complète d'outils comprenant toktx, ktxinfo, ktxcheck et d'autres utilitaires

SDK Vulkan

Le SDK Vulkan officiel inclut la prise en charge de KTX et les utilitaires de chargement

Bibliothèques OpenGL

Diverses bibliothèques et frameworks OpenGL avec prise en charge KTX intégrée

Prise en charge d'Unity KTX

Le moteur Unity prend en charge le chargement de textures KTX via des plugins et des pipelines d'actifs

Moteur Unreal KTX

Unreal Engine fournit une prise en charge des textures KTX via les paramètres de compression de texture

Meilleures pratiques pour le développement KTX

Utilisez KTX2 pour de nouveaux projets afin de profiter des fonctionnalités modernes et des capacités de supercompression

Choisissez le format de compression approprié en fonction des plates-formes cibles : ETC pour mobile, BCn pour ordinateur de bureau

Inclure des métadonnées complètes pour garantir une interprétation appropriée des textures sur toutes les plateformes

Validez les fichiers KTX sur le matériel cible dès le début du développement pour éviter les problèmes de compatibilité.

Utilisez les paramètres mipmap appropriés pour optimiser les performances de rendu à différentes distances de visualisation

Envisagez d'utiliser la supercompression Basis Universal pour un déploiement multiplateforme avec des tailles de fichiers optimales

Testez les performances de chargement de texture avec les conditions matérielles et réseau cibles réelles

Mettre en œuvre des mécanismes de gestion des erreurs et de secours appropriés pour les formats ou fonctionnalités non pris en charge

Chemins de migration et de mise à niveau

Lignes directrices pour la migration vers KTX ou la mise à niveau entre les versions :

Migration de KTX1 vers KTX2

Utilisez toktx avec l'indicateur --ktx2 pour convertir les anciens fichiers KTX1 au format KTX2 moderne

Conversion de DDS en KTX

Utilisez toktx ou des outils de conversion de texture pour migrer les textures DirectX au format KTX multiplateforme

Conversion de PVR en KTX

Convertissez les textures PVR spécifiques à iOS en KTX pour une compatibilité multiplateforme

Ajout d'une compression universelle de base

Utilisez toktx avec les options Basis Universal pour ajouter une supercompression aux fichiers KTX2

Pourquoi choisir KTX2 ?

KTX2 offre des avantages significatifs par rapport à KTX1 et aux autres formats :

Support universel de base

Prise en charge native de la supercompression Basis Universal permettant le déploiement universel de textures

Compression améliorée

Taux de compression et qualité améliorés grâce à des schémas de compression modernes

Schémas de supercompression

Prise en charge de divers formats de supercompression au-delà de Basis Universal

Descripteurs de formats de données

Système de description de format complet remplaçant les anciennes constantes OpenGL

Conception évolutive

Conçu pour les API graphiques et les technologies de compression modernes et futures

Conclusion

Le format KTX représente la norme industrielle pour la gestion des textures multiplateformes, offrant aux développeurs une solution robuste, flexible et évolutive pour les pipelines d'actifs de texture. Qu'il s'agisse d'utiliser l'ancien KTX1 pour les applications OpenGL ou le KTX2 moderne pour le développement basé sur Vulkan, KTX offre les outils et fonctionnalités nécessaires au développement graphique professionnel.

Alors que l'industrie graphique continue d'évoluer vers le développement multiplateforme et des technologies de compression plus avancées, KTX2, avec sa prise en charge de la supercompression Basis Universal et ses fonctionnalités modernes, se positionne comme le premier choix en matière de gestion des textures. Comprendre le format KTX et ses capacités est essentiel pour tout développeur travaillant avec des applications graphiques modernes.

Lectures complémentaires et ressources

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