Oodle Texture permet un encodage rapide et de haute qualité des textures dans les différents formats BCn/DXTn. Une fois Oodle Texture configuré, il fonctionnera automatiquement en arrière-plan. Vous pouvez définir Oodle Texture de manière globale, puis de manière plus spécifique pour des groupes de LOD et des textures individuelles.
Oodle Texture n'encode pas le format ASTC ni d'autres formats mobiles.
Activer Oodle Texture
Le plug-in Oodle Texture est activé par défaut dans l’Unreal Engine.
En plus du plug-in, Oodle Texture nécessite un réglage dans le fichier DefaultEngine.ini.
\Engine\Config\DefaultEngine.ini
[AlternateTextureCompression]
TextureCompressionFormat="TextureFormatOodle"
TextureFormatPrefix="OODLE_"
bEnableInEditor=TrueÉtant donné qu’Oodle Texture est activé par défaut dans l’Unreal Engine, ces lignes devraient déjà être présentes dans votre fichier BaseEngine.ini.
Nous recommandons fortement de laisser bEnableInEditor=true pour assurer un comportement cohérent entre l'éditeur et les builds empaquetés. Si ce paramètre est défini sur false, les artistes qui examinent les résultats de l'encodage dans l'éditeur verront des résultats différents de ceux produits par le système de préparation.
Vous pouvez vérifier que Oodle Texture est activé en examinant le journal :
LogTextureFormatOodle: Display: Oodle Texture 2.9.0 init RDO On with DefaultRDOLambda=30
Lorsque Oodle est utilisé pour une texture donnée, le format contient le préfixe OODLE_ :
LogTexture: Display: Building textures: test (OODLE_AutoDXT, 256X256)
Concepts clés relatifs à Oodle Texture
Deux concepts doivent être compris pour utiliser Oodle Texture : l’optimisation taux-distorsion (RDO) et le paramètre Lambda.
Comprendre la RDO
L’optimisation taux-distorsion (RDO) désigne le compromis entre la qualité (distorsion) et la taille (taux de compression). Pour l'encodage des textures, cela semble étrange — la taille des textures DXTn/BCn ne varie pas en fonction de la qualité ; elles ont une taille fixe basée sur le format, la résolution et le nombre de mips.
Oodle Texture propose en option un moyen de gérer les données de texture encodées de manière à ce qu’un fichier *.uasset* contenant une texture soit compressé de façon plus efficace lors de la distribution via le système de fichiers IOStore ou au format *.pak*. Ainsi, la RDO dans Oodle Texture ne réduit que la taille des distributions.
En outre, elle est conçue pour fonctionner avec le format de compression Kraken. Référez-vous à la rubrique Données Oodle pour plus d'informations.
Comprendre le paramètre Lambda
Le paramètre qui détermine l'ampleur de la distorsion introduite, et donc la taille du fichier résultant, est appelé lambda.
Le paramètre Lambda peut être réglé entre 0 et 100, les valeurs les plus basses correspondant à une moindre distorsion et donc à une meilleure qualité. Une valeur lambda de 30 environ produit toujours des résultats de haute qualité. Une valeur lambda de 0 désactive totalement la RDO, ce qui permet d'obtenir la meilleure qualité théorique. Cependant, même en recherchant la meilleure qualité, il est recommandé d’utiliser une valeur de lambda de 1, car le rapport coût/bénéfice reste très intéressant, entraînant très peu de distorsion tout en offrant des gains raisonnables sur la taille de distribution.
De manière générale, on s’attend à ce que la valeur de lambda soit définie globalement et rarement modifiée localement. La détermination de la valeur appropriée pour votre projet sera le fruit d'une collaboration basée sur les besoins en matière de taille de distribution. Il est préférable de définir votre valeur globale de lambda sur la plus élevée (qualité la plus basse), puis de paramétrer de manière sélective une qualité supérieure (valeur de lambda plus basse) sur des groupes de LOD ou des textures spécifiques, selon les besoins.
Les textures autres que les textures diffuses/albédo nécessiteront probablement une valeur de lambda plus basse (généralement entre 5 et 20), en particulier les textures de normales, car une distorsion invisible à l’œil nu peut être plus perceptible sur des textures comme les reflets spéculaires.
Configurer Oodle Texture
Oodle Texture est principalement configuré à l'aide du fichier DefaultEngine.ini, mais expose également le lambda sur les groupes de LOD de texture et sur une base par texture.
Configuration globale
La section TextureFormatOodle du fichier DefaultEngine.ini contient les paramètres globaux de Oodle Texture.
\Engine\Config\DefaultEngine.ini
[TextureFormatOodle]
DefaultRDOLambda=30
GlobalLambdaMultiplier=1.0
bForceAllBC23ToBC7=False
bForceRDOOff=False
bDebugColor=False| Paramètre | Définition |
|---|---|
| Il s'agit du lambda de RDO qui sera utilisé s'il n'est pas défini ailleurs. |
| Il permet de mettre à l'échelle la valeur de lambda transmise à l'encodeur. Il s'agit d'un contrôle de dernière minute qui permet de gérer les tailles de distribution sans avoir à rechercher des textures individuelles ou des groupes de LOD. La valeur est directement appliquée au lambda, ce qui signifie qu’un multiplicateur supérieur à 1 augmente la distorsion et réduit la qualité, tandis qu’un multiplicateur compris entre 0 et 1 diminue la distorsion et améliore la qualité. Le résultat est arrondi à l'entier le plus proche. Cela ne peut pas désactiver la RDO (le résultat sera au moins 1). |
| Lorsque cette fonction est activée, chaque fois qu'un format BC2 ou BC3 (c.-à-d. DXT3 et DXT5) est demandé, Oodle compresse une texture BC7 à la place. La texture BC7 est généralement de meilleure qualité, mais en fonction de vos spécifications minimales, il se peut qu’elle ne soit pas disponible. |
| Lorsque cette option est activée, la RDO est désactivée à tout moment, indépendamment de tout réglage de RDO spécifique à la texture. |
| Lorsque cette option est activée, les textures sont compressées sous la forme d'une couleur unie représentant leur format encodé pour l'identification visuelle. Format - Couleur BC1 - Rouge (0xff0000) BC2 - Vert foncé (0x008000) BC3 - Vert (0x00ff00) BC4 - Jaune foncé (0x808000) BC5 - Jaune (0xffff00) BC6 - Pourpre (R = 0,5f, G = 0,0f, B = 0,8f) BC7 (Opaque) - Bleu foncé (0x8080ff) BC7 (Transparent) - Bleu (0x0000ff) |
Configurer des groupes de LOD de texture
Le paramètre Groupe de LOD représentant le lambda de RDO est appelé Quantité de compression avec perte. Ce paramètre est défini pour les groupes de LOD dans le fichier DefaultDeviceProfiles.ini.
TextureLODGroups=(Group=TEXTUREGROUP_WorldNormalMap,MinLODSize=1,MaxLODSize=8192,LODBias=0,MinMagFilter=aniso,MipFilter=point,MipGenSettings=TMGS_SimpleAverage,**LossyCompressionAmount=TLCA_Low**)Le quantité de compression avec perte peut prendre les valeurs suivantes :
| Valeur | Description |
|---|---|
TLCA_Default | Hériter. Si elle est définie sur une texture, elle hérite du groupe de LOD. Si elle est définie sur un groupe de LOD, elle hérite de |
TLCA_None | Désactiver la RDO (0) |
TLCA_Lowest | 1 - Meilleure qualité, plus grande taille de fichier. |
TLCA_Low | 10 |
TLCA_Medium | 20 |
TLCA_High | 30 |
TLCA_Highest | 40 - La pire qualité, la plus petite taille de fichier. |
Configurer des textures individuelles
Le Lambda de RDO peut également être défini pour des textures individuelles à l'aide du paramètre Quantité de compression avec perte, et prend les mêmes valeurs que celles indiquées ci-dessus.
Pour définir le paramètre pour une seule texture :
Double-cliquez sur la texture pour laquelle vous souhaitez définir le lambda de RDO dans le navigateur de contenu pour l'ouvrir dans la fenêtre Éditeur de texture.
Dans le panneau Détails, développez la section Compression et cliquez sur l'icône en forme de flèche pour afficher les options Avancées.
Utilisez le menu déroulant à côté du paramètre Quantité de compression avec perte pour sélectionner la valeur souhaitée.