Retour au blog
Les bases

Qu’est-ce que la compression de texture ?

8 lecture min.

La compression de texture est une technique fondamentale de la programmation graphique moderne qui permet aux développeurs de réduire l'utilisation de la mémoire et d'améliorer les performances de rendu. Cet article explore ce qu'est la compression de texture, pourquoi elle est essentielle et comment elle fonctionne.

Qu’est-ce que la compression de texture ?

La compression de texture est une forme spécialisée de compression d'image conçue spécifiquement pour être utilisée avec du matériel graphique (GPU). Contrairement aux formats d'image à usage général comme JPEG ou PNG, les formats de compression de texture sont optimisés pour un accès aléatoire en temps réel par le GPU pendant le rendu.

Les formats d'image traditionnels doivent être entièrement décompressés avant utilisation, mais les formats de compression de texture peuvent être décompressés à la volée par le GPU au fur et à mesure qu'il échantillonne les texels. Cela permet aux textures compressées de rester compressées dans la mémoire GPU, réduisant considérablement la bande passante mémoire et les besoins de stockage.

La principale différence est que les algorithmes de compression de texture sont conçus pour être décodés par du matériel dédié sur le GPU, ce qui rend la décompression pratiquement gratuite en termes de performances.

Pourquoi utiliser la compression de texture ?

La compression de texture offre plusieurs avantages essentiels pour les applications graphiques :

Utilisation réduite de la mémoire

Les textures compressées peuvent réduire la consommation de mémoire de 4 à 8 fois par rapport aux textures non compressées, permettant ainsi un contenu plus détaillé et plus varié.

Bande passante mémoire inférieure

Moins de données transférées entre la mémoire et le GPU signifie de meilleures performances et une consommation d'énergie réduite, ce qui est particulièrement important pour les appareils mobiles.

Performances améliorées

Un trafic mémoire réduit peut améliorer considérablement les fréquences d’images et réduire la latence de rendu dans les scénarios liés au GPU.

Meilleure qualité visuelle

Les économies de mémoire permettent aux développeurs d'utiliser des textures de plus haute résolution ou davantage de variations de textures dans le même budget mémoire.

Formats courants de compression de texture

Différentes plates-formes et GPU prennent en charge différents formats de compression. Voici les plus utilisés :

ETC1/ETC2 (Compression de texture Ericsson)

Format standard pour les appareils Android et OpenGL ES. ETC1 prend en charge uniquement RVB, tandis qu'ETC2 ajoute la prise en charge du canal alpha et une qualité améliorée.

Plate-forme: Android, OpenGL ES 3.0+

ASTC (Compression de texture adaptative et évolutive)

Format moderne et flexible prenant en charge plusieurs tailles de bloc (4x4 à 12x12) et niveaux de qualité. Fournit un excellent contrôle du rapport qualité/compression.

Plate-forme: GPU mobiles modernes, Vulkan, OpenGL ES 3.2+

PVRTC (compression de texture PowerVR)

Format utilisé principalement sur les appareils iOS dotés de GPU PowerVR. Connu pour sa bonne compression mais peut afficher des artefacts sur certains contenus.

Plate-forme: iOS, anciens appareils Android équipés de GPU PowerVR

DXT/BCn (Compression de texture S3/Compression de bloc)

Norme de bureau, également connue sous le nom de BCn (Block Compression). Les formats DXT1/BC1 à DXT5/BC3 sont les plus courants, les BC6H et BC7 offrant une qualité HDR et supérieure.

Plate-forme: Bureau (Windows, DirectX, OpenGL)

Base universelle

Format de transcodage pouvant être converti en n’importe quel format GPU natif au moment de l’exécution. Permet à un seul fichier compressé de fonctionner sur toutes les plateformes.

Plate-forme: Multiplateforme (transcodage en ETC, ASTC, DXT, etc.)

Comment fonctionne la compression de texture

La plupart des algorithmes de compression de texture fonctionnent en divisant l'image en petits blocs (généralement 4x4 pixels) et en codant chaque bloc indépendamment. Cette approche basée sur les blocs permet un accès aléatoire : le GPU peut décompresser uniquement les blocs dont il a besoin pour un échantillon de texture particulier.

Dans chaque bloc, l'algorithme stocke généralement une petite palette de couleurs (généralement 2 à 4 couleurs) et des valeurs d'index indiquant la couleur de palette que chaque pixel doit utiliser. Des formats plus avancés comme ASTC utilisent des schémas d'interpolation sophistiqués pour obtenir une meilleure qualité.

Exemple de compression

Une texture RGBA 512x512 à différents niveaux de compression :

Non compressé : 512 × 512 × 4 octets = 1 048 576 octets (1 Mo)
Compressé (ASTC 6x6) : 512 × 512 / (6 × 6) × 16 octets = 116 508 octets (~ 114 Ko)
Taux de compression : 9:1 (réduction de taille de 89 %)

Meilleures pratiques

  • Choisissez le format approprié pour votre plate-forme cible : utilisez ETC2/ASTC pour mobile, BCn pour ordinateur de bureau.
  • Pensez à utiliser plusieurs qualités de compression : qualité supérieure pour les textures importantes, qualité inférieure pour les arrière-plans.
  • Testez différentes tailles de bloc (pour ASTC) pour trouver le meilleur équilibre entre qualité et taille de fichier
  • Utilisez différents formats pour différents types de textures : les cartes normales nécessitent souvent des paramètres différents de ceux des cartes de couleurs.
  • Prévisualisez toujours les textures compressées dans votre application cible pour vérifier la qualité visuelle

Conclusion

La compression de texture est un outil essentiel pour le développement graphique moderne, permettant de meilleures performances, une utilisation moindre de la mémoire et des visuels de meilleure qualité. Comprendre les formats disponibles et leurs compromis vous aide à prendre des décisions éclairées pour vos projets.

Que vous développiez pour des plates-formes mobiles, de bureau ou Web, la compression de texture peut améliorer considérablement l'efficacité et la fidélité visuelle de votre application. Nos outils en ligne facilitent l'expérimentation de différents formats et paramètres afin de trouver l'équilibre parfait pour vos besoins.

Lectures complémentaires et références

Développez vos connaissances avec ces ressources organisées :