Oodle Texture

Oodle Texture エンコード ソリューションを使用してプロジェクトのテクスチャを最適化する方法の概要です。

Choose your operating system:

Windows

macOS

Linux

Oodle Texture で、テクスチャをさまざまな BCn/DXTn 形式に高速かつ高品質にエンコードすることができます。これは、設定するとバックグラウンドで自動的に動作するようになります。Oodle Texture をグローバルに設定した場合、LOD グループおよび個々のテクスチャに対してより具体的に定義することもできます。

しかし、Oodle Texture は ASTC またはその他のモバイル形式へのエンコードは行いません。

Oodle Texture を有効にする

Oodle Texture プラグインは、Unreal Engine でデフォルトで有効になっています。

The Oodle Textture plugin

プラグインに加えて、Oodle Texture には「 DefaultEngine.ini 」ファイル内の設定が必要です。

\Engine\Config\DefaultEngine.ini
[AlternateTextureCompression]
TextureCompressionFormat="TextureFormatOodle"
TextureFormatPrefix="OODLE_"
bEnableInEditor=True

Oodle Texture は 4.27 でデフォルトで有効になっているため、これらの行は「 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 ファイルシステムを介してテクスチャを圧縮すると、配布用のファイルをさらに小さく圧縮できます。つまり、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 file 」ファイルの TextureFormatOodle セクションには、Oodle Texture のグローバル設定があります。

\Engine\Config\DefaultEngine.ini
[TextureFormatOodle]
DefaultRDOLambda=30
GlobalLambdaMultiplier=1.0
bForceAllBC23ToBC7=False
bForceRDOOff=False
bDebugColor=False

設定

定義

DefaultRDOLambda

これは、他の場所に設定されていない場合に使用される RDO ラムダです。

GlobalLambdaMultiplier

これにより、エンコーダに渡されるラムダがスケーリングされます。これにより、個々のテクスチャや LOD グループを追跡することなく配布サイズの最終的な調整ができます。値はラムダに直接適用されます。つまり、1 より大きい乗数値の場合は歪みが追加されて品質が低下し、0〜1 の乗数値の場合は歪みが少なくなり品質が向上します。結果は、最も近い整数に丸められます。また、RDO を無効にすることはできません (結果は少なくとも 1 になります)。

bForceAllBC23ToBC7

有効にすると、BC2 または BC3 (つまり、DXT3 および DXT5) 形式が要求されるたび、Oodle はそれらではなく BC7 テクスチャを圧縮します。通常、BC7 の方が高品質ですが、最小仕様によっては利用できない場合があります。

bForceRDOOff

有効にすると、テクスチャ固有の RDO 設定に関係なく、RDO は常に無効となります。

bDebugColor

有効にすると、テクスチャが視覚的にエンコード形式を識別しやすいソリッド カラーとして圧縮されます。

形式

BC1

赤 (0xff0000)

深緑

(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 グループに設定されている場合は、 DefaultRDOLambda から継承します。

TLCA_None

RDO (0) を無効にします。

TLCA_Lowest

5 - 最高品質。ファイルサイズが最大になります。

TLCA_Low

15

TLCA_Medium

30

TLCA_High

40

TLCA_Highest

60 - 最低品質。ファイルサイズが最小になります。

個々のテクスチャを構成する

Lossy Compression Amount パラメータを使って RDO Lambda を個々のテクスチャに設定することもできます。その際は、上記と同じ値を取ります。

単一のテクスチャにパラメータを設定するには、次の手順を実行します。

  1. コンテンツ ブラウザ で RDO Lambda を設定するテクスチャをダブルクリックして、 [Texture Editor (テクスチャエディタ)] ウィンドウで開きます。

  2. [Details (詳細)] パネルで、 [Compression (圧縮)] セクションを展開し、[矢印] アイコンをクリックして [Advanced (詳細)] を表示します。

    Open the Advanced Compression options

  3. [Lossy Compression Amount] パラメータの横にあるドロップダウン メニューを使用して、希望する値を選択します。

    Select the RDO Lambda using the Lossy Compression Amount dropdown menu

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル