Oodle Texture で、テクスチャをさまざまな BCn/DXTn 形式に高速かつ高品質にエンコーディングできます。 これは、設定するとバックグラウンドで自動的に動作するようになります。 Oodle Texture をグローバルに設定した場合、LOD グループおよび個々のテクスチャに対してより具体的に定義することもできます。
しかし、Oodle Texture は ASTC またはその他のモバイル形式へのエンコードは行いません。
Oodle Texture を有効にする
Oodle Texture プラグインは、Unreal Engine でデフォルトで有効になっています。
プラグインに加えて、Oodle Texture には「DefaultEngine.ini」ファイル内の設定が必要です。
\Engine\Config\DefaultEngine.ini
[AlternateTextureCompression]
TextureCompressionFormat="TextureFormatOodle"
TextureFormatPrefix="OODLE_"
bEnableInEditor=TrueOodle Texture は Unreal Engine でデフォルトで有効になっているため、これらの行は「BaseEngine.ini」ファイルにすでに存在しているはずです。
エディタとパッケージ ビルドの間で一貫した動作を維持するには、bEnableInEditor=true のままにしておくことを強くお勧めします。 false に設定すると、エディタでエンコーディング結果を確認するアーティストには、クック システムが生成する結果とは異なる結果が表示されます。
次のようにログを調べることで、Oodle Texture が有効になっていることを確認できます。
LogTextureFormatOodle: Display: Oodle Texture 2.9.0 init RDO On with DefaultRDOLambda=30
Oodle が特定のテクスチャに使用される場合、形式には次のようにプレフィックス OODLE_ が追加されます。
LogTexture: Display: Building textures: test (OODLE_AutoDXT, 256X256)
Oodle Texture の主な概念
Oodle Texture を利用するには、RDO (Rate Distortion Optimization) とラムダという 2 つの概念を理解する必要があります。
RDO を理解する
RDO は、サイズ (レート) に対する取引品質 (歪み) を指す用語です。 テクスチャ エンコーディングの場合、RDO は奇妙に感じる概念かもしれません。DXTn/BCn テクスチャは、品質によってサイズが変化することはなく、形式、解像度、およびミップ カウントに基づいて固定されているからです。
Oodle Texture は、オプションで、エンコードされたテクスチャ データを管理する方法を公開しています。これにより、IOStore / .pak ファイルシステムを介してテクスチャを含む uasset を配布用に圧縮する際に、より小さく圧縮できます。 つまり、Oodle Texture の RDO は配布時のサイズのみを縮小します。
また、これは Kraken 圧縮形式で動作するように調整されています。 詳細については、「Oodle Data」を参照してください。
ラムダを理解する
導入される歪みの量、つまり結果のファイルがどれだけ小さいかを決定するパラメータは、ラムダと呼ばれます。
ラムダは 0〜100 の範囲で設定でき、数値が小さいほど歪みが少なくなります。そのため、結果の品質が高くなります。 とはいえ、ラムダ値が約 30 の場合でも、高品質の結果が得られます。 ラムダ値が 0 の場合、RDO が完全に無効になり、理論的には最高の品質が得られます。 ただし、最高品質を求める場合でもラムダ値は 1 に設定することをお勧めします。1 でも、コストと利益の良好なバランスが取れ、適切な配布サイズのゲインで歪みがほとんど発生しないためです。
一般的に、ラムダはグローバルに設定され、オーバーライドされることはほとんど想定していません。 プロジェクトに適した値は、配布サイズのニーズに基づきコラボレーションによって決定されます。 グローバルのラムダを最高値 (最低品質) に設定し、必要に応じて、LOD グループまたは特定のテクスチャに対して低いラムダ値 (高品質) を設定することをお勧めします。
ディフューズ/アルベド マップ以外のテクスチャは、スペキュラ ハイライトなどのテクスチャで肉眼では見えない歪みがより目立つ可能性があるため、より低いラムダ値 (通常は 5〜20) を設定する必要が出てくることがあります (特に法線マップ)。
Oodle Texture を構成する
Oodle Texture は主に「DefaultEngine.ini」ファイルを使用して構成されますが、テクスチャ LOD グループおよびテクスチャごとにラムダを公開します。
グローバル コンフィギュレーション
「DefaultEngine.ini」ファイルの TextureFormatOodle セクションには、Oodle Texture のグローバル設定があります。
\Engine\Config\DefaultEngine.ini
[TextureFormatOodle]
DefaultRDOLambda=30
GlobalLambdaMultiplier=1.0
bForceAllBC23ToBC7=False
bForceRDOOff=False
bDebugColor=False| 設定 | 定義 |
|---|---|
| これは、他の場所に設定されていない場合に使用される RDO ラムダです。 |
| これにより、エンコーダに渡されるラムダがスケーリングされます。 これにより、個々のテクスチャや LOD グループを追跡することなく配布サイズの最終的な調整ができます。 値はラムダに直接適用されます。つまり、1 より大きい乗数値の場合は歪みが追加されて品質が低下し、0〜1 の乗数値の場合は歪みが少なくなり品質が向上します。 結果は、最も近い整数に丸められます。 また、RDO を無効にすることはできません (結果は少なくとも 1 になります)。 |
| 有効にすると、BC2 または BC3 (つまり、 DXT3 および DXT5) 形式が要求されるたび、Oodle はそれらではなく BC7 テクスチャを圧縮します。 通常、BC7 の方が高品質ですが、最小仕様によっては利用できない場合があります。 |
| 有効にすると、テクスチャ固有の RDO 設定に関係なく、RDO は常に無効となります。 |
| 有効にすると、テクスチャが視覚的にエンコード形式を識別しやすいソリッド カラーとして圧縮されます。 形式 - カラー BC1 - 赤 (0xff0000) BC2 - 深緑 (0x008000) BC3 - 緑 (0x00ff00) BC4 - 深黄色 (0x808000) BC5 - 黄色 (0xffff00) BC6 - 紫 (R = .5f、G = 0.0f、B = .8f) BC7 (不透明型) - 濃紺 (0x8080ff) BC7 (透明) - 青 (0x0000ff) |
テクスチャ LOD グループを構成する
RDO ラムダを表す LOD グループ パラメータは、Lossy Compression Amount (非可逆圧縮量) と呼ばれています。 このパラメータは、「DefaultDeviceProfiles.ini」ファイル内の LOD グループに対して定義されます。
TextureLODGroups=(Group=TEXTUREGROUP_WorldNormalMap,MinLODSize=1,MaxLODSize=8192,LODBias=0,MinMagFilter=aniso,MipFilter=point,MipGenSettings=TMGS_SimpleAverage,**LossyCompressionAmount=TLCA_Low**)Lossy Compression Amount は、次の値を取ることができます。
| 値 | 説明 |
|---|---|
TLCA_Default | 継承します。 テクスチャに設定されている場合は、LOD グループから継承します。 LOD グループに設定されている場合は、 |
TLCA_None | RDO (0) を無効にします。 |
TLCA_Lowest | 1 - 最高品質。ファイルサイズが最大になります。 |
TLCA_Low | 10 |
TLCA_Medium | 20 |
TLCA_High | 30 |
TLCA_Highest | 40 - 最低品質。ファイルサイズが最小になります。 |
個々のテクスチャを構成する
RDO Lambda は、Lossy Compression Amount パラメータを使用して個々のテクスチャに設定することもできます。その際は、上記と同じ値を取ります。
単一のテクスチャのパラメータを設定するには、次の手順を実行します。
[Content Browser (コンテンツ ブラウザ)] で RDO Lambda を設定するテクスチャをダブルクリックして、[Texture Editor (テクスチャ エディタ)] ウィンドウで開きます。
[Details (詳細)] パネルで [Compression (圧縮)] セクションを展開し、[矢印] アイコンをクリックして [Advanced (詳細)] オプションを表示します。
[Lossy Compression Amount] パラメータの横にあるドロップダウン メニューを使用して、希望する値を選択します。