Compression de texture GLB : KTX2 et WebP

La conversion de texture modifie les images intégrées dans un GLB. Dans cet outil, choisissez KTX2 ou WebP pour activer les contrôles de qualité, d'échelle et de taille maximale. Gardez la rétention du triangle inchangée pendant cette comparaison afin que l'effet des paramètres de texture soit plus facile à voir.

Choisissez le format que votre visionneuse peut charger

Sortie de textureExigence d'utilisation et de chargement
Format originalConserve l'encodage existant. Utile comme base de comparaison.
WebPUtilise EXT_texture_webp. Vérifiez la prise en charge dans la visionneuse de destination.
KTX2 / ETC1SUn encodage Basis Universal compact. Nécessite la prise en charge de KHR_texture_basisu.
KTX2 / UASTCConserve généralement plus de détails de texture dans une taille de fichier plus grande. Il utilise le même chemin de chargement KTX2.

Les dimensions et la qualité de l'encodage font des tâches différentes

Une échelle de texture 50% réduit de moitié la largeur et la hauteur, laissant un quart des pixels avant les mipmaps. Le paramètre de taille maximale limite également les dimensions de sortie. La qualité d'encodage contrôle le codec plutôt que les dimensions de l'image, donc la qualité 8 dans WebP n'est pas équivalente à la qualité 8 dans ETC1S ou UASTC.

Inspectez le lettrage, les bords alpha et les détails fins de la surface après le redimensionnement. Les cartes normales nécessitent une attention particulière car de petits changements de valeur peuvent modifier l'ombrage. Testez la texture sous l'éclairage et le niveau de zoom utilisés dans votre application.

Une comparaison utilisant une texture 1024 × 1024

Encodage et dimensionsTaille GLB (octets)
PNG d'origine, 1024 × 10242,914,152
WebP, 1024 × 1024445,632
ETC1S, 1024 × 1024258,488
UASTC, 1024 × 10241,373,516
WebP, 512 × 512118,088

Ce luminaire est notre maillage ondulé CC0 avec un dégradé et un bruit générés PNG, codé par gltfpack 1.3 natif. Toutes les lignes utilisent la compression Meshopt, 8 192 triangles et la qualité 8 là où la conversion s'applique. Il s'agit de tailles GLB complètes, et non de tailles de texture isolées. Le tableau mesure les octets, pas la qualité visuelle ou la mémoire GPU.

Comparez la texture sur la même surface

Ces vues rapprochées utilisent les mêmes paramètres de maillage, de caméra, d’éclairage et de matériau. Ils restituent les fichiers réels de la table dans Three.js 0.180.0. La texture générée contient des dégradés et du bruit fin ; il est utile pour inspecter ces détails, mais ne représente pas le lettrage, la transparence ou les cartes normales.

Vue rapprochée de la texture originale PNG sur le maillage ondulé
PNG d'origine · 1024 × 1024
Même surface avec compression de texture ETC1S
ETC1S · 1024 × 1024
Même surface avec compression de texture UASTC
UASTC · 1024 × 1024
Même surface avec une texture WebP demi-taille
WebP · 512 × 512

Dans ces captures, la version ETC1S atténue une partie du bruit fin sur la surface rose, tandis que UASTC conserve davantage son aspect moucheté. La version demi-taille WebP estompe plus visiblement les petites variations. Comparez cette observation avec le tableau des tailles de fichiers : la préservation de ces détails a un coût différent pour chaque encodage.

Ouvrez les images en taille réelle et comparez les petites variations de couleur et de détails de surface. La page Web réduit les aperçus, ce qui peut masquer les différences. Ces captures d'écran sont des références visuelles d'un navigateur et de GPU, et non un score de qualité ou une garantie de rendu identique sur chaque appareil.

Exemple : divisez par deux les dimensions d'une texture et exportez WebP.

gltfpack -i input.glb -o output.glb -cc -tw -tq 8 -tj 1 -ts 0.5 -kn -km -ke

Dans l'interface, sélectionnez Fichier plus petit, choisissez WebP, ouvrez les paramètres avancés et définissez l'échelle de texture sur 50%. Laissez la taille maximale de la texture inchangée, sauf si vous avez également besoin d'une limite de pixels. Rouvrez le résultat dans votre visionneuse cible avant de l'utiliser.

Configurer le chargement de KTX2 et Meshopt dans Three.js →

Référence moteur : gltfpack

Ouvrez l'optimiseur ↗