ランタイム仮想テクスチャ

Unreal Engine のランタイム仮想テクスチャの概要です。

Windows
MacOS
Linux

ランタイム仮想テクスチャ (RVT) は、実行時に GPU を使用してオンデマンドでテクセル データを作成し、従来のテクスチャ マッピングと同じように機能します。RVT は、広い領域にわたるシェーディング データをキャッシュするので、テレインに沿って適用できるデカール型のマテリアルやスプラインを使用するランドスケープ シェーディングに適しています。

ワークフロー

プロジェクトにランタイム仮想テクスチャを設定し、使用する基本の手順は次のとおりです。

  1. コンテンツ ブラウザで Runtime Virtual Texture アセットを作成します。これはすべてのコンポーネント (アクタ、RVT ボリューム、RVT マテリアル) を連携して、ランタイム仮想テクスチャをレンダリングする目的で使用されます。

  2. [Modes (モード)] パネルから [Runtime Virtual Texture Volume (ランタイム仮想テクスチャ ボリューム)] をシーンに追加します。これは、シーンへの RVT アセットの配置に使用されます。

  3. RVT アセットに 書き込みを行う ようにマテリアルを設定します。

  4. RVT アセットから サンプリングする ようにマテリアルを設定します。

  5. RVT アセットにレンダリングする Primitives アクタまたは Landscape アクタを 1 つ以上設定します。

RVT を設定する詳細な手順については、「ランタイム仮想テクスチャリング クイック スタート ガイド 」を参照してください。このガイドでは、ランタイム仮想テクスチャリングで使用するランドスケープ マテリアルと追加のシーン アクタを設定します。

ランタイム仮想テクスチャ コンポーネント

Unreal Engine 4 (UE4) プロジェクトでランタイム仮想テクスチャを設定し、操作するには、次のコンポーネントを使用します。

Runtime Virtual Texture アセット

Runtime Virtual Texture アセットには、シーンに RVT を作成するときに使われる詳細なコンフィギュレーション情報が保持されています。これは RVT システムの基軸と言えるもので、RVT にレンダリングする、シーン内のマテリアルとアクタを連携します。

RVT アセットは、以下のコンポーネントによって参照されます。

  1. シーンに配置された各 Runtime Virtual Texture ボリューム は、1 つの RVT アセットに割り当てられます。

  2. 個々のシーン アクタ に割り当てられる RVT アセットの数には制限はなく、割り当てられた RVT アセットの 1 つを使用するボリュームの境界内にあるときは、ランタイム仮想テクスチャにレンダリングされます。

  3. RVT ボリュームから RVT にアクタをレンダリングする前に、アクタの マテリアル仮想テクスチャ マテリアル ドメインを使用するか、適切に設定された RVT マテリアル式を使用しておく必要があります。

右クリックのコンテキスト メニューまたは [Add New (新規追加)] ボタンを使用して、コンテンツ ブラウザから RVT アセットを新規作成します。[Materials & Textures (マテリアル・テクスチャ)] カテゴリから [Runtime Virtual Texture (ランタイム仮想テクスチャ)] を選択します。

クリックしてフルサイズ表示。

追加されたアセットをダブルクリックして開き、そのアセット専用のエディタ ウィンドウで設定を構成します。

RVT_Asset_Window.png

このウィンドウを使用して、ランタイム仮想テクスチャがサポートするマテリアルのサイズ、タイル サイズ、タイプを定義します。

これらの設定の詳細と使い方については、「仮想テクスチャの設定 」を参照してください。

アセットのアクション

コンテキスト メニューを右クリックすると、マテリアルの RVT アセットの管理に便利ないくつかのアクションが表示されます。

RVTContextMenuActions.png

  • Find Materials Using This は、この RVT アセットを参照するすべてのマテリアルをコンテンツ ブラウザで見つけてハイライトします。

  • Fix Material Usage は、RVT アセットのマテリアル タイプを変更した後、すべてのマテリアルを自動的に修正する方法を提供します。そして、RVT アセットを参照する Runtime Virtual Texture Sample ノードを含むすべてのマテリアルとマテリアル関数を検索します。ノードの 仮想テクスチャ マテリアル タイプ が RVT アセットのマテリアル タイプと一致しない場合、ノードのマテリアル タイプを一致するように修正します。

ランタイム仮想テクスチャ マテリアル タイプ

RVT マテリアルを設定する時に、以下の 4 つのオプションから選択できます。

マテリアル タイプ

説明

圧縮形式

Base Color

ベース カラーのみを保存します。

BC1

Base Color, Normal, Roughness, Specular

ベース カラー、法線、ラフネス、スペキュラを保存します。圧縮を有効にすると、BC3 テクスチャを 2 つ使用してデータを維持します。片方のテクスチャにベースカラーと法線 X が含まれます。もう片方にはラフネス、スペキュラ、法線 Z 軸、法線 Y 軸が含まれます。

BC3 + BC3

YCoCg Base Color, Normal, Specular

ベース カラー、法線、ラフネス、スペキュラを保存します。圧縮を有効にすると、3 つのテクスチャが使用されます。BC3 テクスチャは YCoCg 形式でエンコードされたベース化r-、BC5 テクスチャは法線 X および法線 Y を維持します。BC1 テクスチャはラフネス、スペキュラ、法線 Z を維持します。

BC3 + BC5 + BC1

World Height

高さ値を格納します。

R16_UNORM

Unreal Engine 4.23 で使用できた Base Color タイプと Normal タイプは削除されました。これらのタイプを使ったアサートは、4.24 では自動的に Base Color、Normal, Roughness、Specular マテリアル タイプを使用するように変換されます。

新しいランタイム仮想テクスチャ ベースカラー ストレージ

YCoCg Base Color, Normal, Roughness, Specular マテリアル タイプは、RVT でベースカラーの異なるエンコーディングを可能にします。

デフォルトで、Base Color は RGB として格納され、BC1 に圧縮されます。この種類のエンコードは、格納されたデータの中でカラー シフトとバンディングを引き起こします。スムーズなグラディエントのあるベース カラー データで最も顕著に現れます。YCoCg マテリアル タイプはこの種類のアーティファクトの削減に役立ちます。しかしながら、これを使用するとメモリ使用の 25% 増加、パフォーマンス サンプリングの追加、仮想テクスチャ データのデコードが必要になります。

Default Base Color Encoding

YCoCg Base Color Encoding

ランタイム仮想テクスチャ法線ストレージ

法線は、BC5 テクスチャ (または 2 つの BC3 テクスチャのアルファ チャンネル) に X 値と Y 値で格納されるようになり、BC5 と同じ精度になります。法線の Z 方向もワールド スペース法線を格納するために使用されます。

マテリアル グラフから法線を RVT に書き込むには 2 通りの方法があります。

  • Runtime Virtual Texture Output ノードを使用する。

  • 標準のマテリアル出力のノードを使用する。

マテリアルを Runtime Virtual Texture Output ノードから書き込む場合、非表示のトランスフォームは出力に適用されません。ノードへの入力が何であろうと、RVT に書き込まれます (一部のエンコードはテクスチャに格納されます)。

標準の出力ノードからマテリアルを書き込む場合、暗示的なトランスフォームが適用されます。4.24 ではエンジンの前のバージョンからビヘイビアが変更されていることに留意してください。前のバージョンでは、マテリアル出力ノードから RVT へ書き込む場合、デフォルト ビヘイビアは出力法線を RVT ボリュームの向きによって定義される共有されたタンジェント空間へトランスフォームすることでした。4.24 では、このデフォルト ビヘイビアは法線をワールド空間へトランスフォームすることです。

RVT で法線を格納する方法を推奨します。一般的な空間を使用することで、複数のプリミティブに関して RVT への書き込みと RVT からの読み取りが可能になります。

ランタイム仮想テクスチャ ボリューム

ランタイム仮想テクスチャ ボリューム は、シーンへの RVT アセットの配置に使用されます。このボリュームには、マテリアルが作成された時点でレンダリングするアクタが含まれます。通常、このマテリアルは、ランドスケープまたはサーフェス テレイン型プリミティブです。

Modes_RVTVolume.png

ランタイム仮想テクスチャからサンプリングされるプリミティブや、ランタイム仮想テクスチャに書き込むプリミティブは、ボリュームの境界内にある必要があります。RVT ボリュームを配置するときは、レベルの [Details (詳細)] パネルの [Transform from Bounds (境界からトランスフォーム)] のパラメータを使用すると、選択したアクタに対してボリュームの配置やスケーリングをすばやく実行できます。通常、これは、シーン内のランドスケープなどのアクタになります。

  1. [Place Actors] パネルから [Runtime Virtual Texture Volume (ランタイム仮想テクスチャ ボリューム)] をシーンにドラッグします。

  2. ボリュームが選択されている状態で、レベルの [Details (詳細)] パネルの [Transform from Bounds (境界からトランスフォーム)] カテゴリを参照し、 [Source Actor (ソース アクタ)] からアセットを選択するか、スポイト アイコンを使ってシーン内の任意のアクタを選択します。

  3. [Copy Rotation (回転をコピー)] および [Copy Bounds (境界をコピー)] ボタンを使用して、ボリュームの位置やスケール、回転をすばやく設定します。

RVT にレンダリングされるオブジェクトは、RTV ボリュームの Z 軸の負方向への垂直投影を使用してレンダリングされます。

Runtime Virtual Texture マテリアル式

RVT アセットに割り当てられているシーン アクタについては、マテリアルを設定して以下のアクションを有効にする必要があります。

  • [Material Domain (マテリアル ドメイン)][Virtual Texture (仮想テクスチャ)] に設定します。これだけで他に設定をしなくても、アクタはシーン内の RVT へ書き込まれます。

  • RVT アセットへの書き込みを有効にするマテリアル ロジックを追加すると、オブジェクトがシーンで生成された最終的な RVT に合成されます。

マテリアル ドメイン仮想テクスチャリング

[Details (詳細)] パネルを使用して、 [Material Domain (マテリアル ドメイン)][Virtual Texture (仮想テクスチャ)] に設定し、シーン内の RVT にレンダリングされるようにします。

RVT_1_MaterialDomainVT.png

Main Material ノードは、RVT ボリュームとシーン アクタに割り当てられているものと同じ RVT アセットを使用するシーン内で、バインドされている RVT への書き込みに使用されます。特に追加で設定をしなくても、マテリアルやアクタがシーン内の RVT にレンダリングされます。

ランタイム仮想テクスチャの書き込みとサンプリング

シーン内の RVT への書き込みまたは RVT からのサンプリングを行うには、まず、マテリアルに対するこれらの操作を処理する RVT 式を設定する必要があります。

  • 仮想テクスチャへの書き込みと仮想テクスチャからのサンプリングの両方を行う単一のマテリアルを定義するには、Runtime Virtual Texture Output (ランタイム仮想テクスチャの出力) 式を使用します。既存のマテリアル ロジックはこのノードに接続します。

    Mat_RVTOutput.png

  • Runtime Virtual Texture Sample (ランタイム仮想テクスチャのサンプル) 式は、サンプリングする割り当てられた RVT アセットを取得し、このマテリアル用に出力します。

    Mat_RVTSample.png

  • このノードは、Runtime Virtual Texture Sample ノードと同じように動作しますが、サンプリングされるランタイム仮想テクスチャ アセットを、オーバーライドするマテリアル インスタンスのパラメータとして公開します。

    RVTSampleParam.png

    他のノードを同様に、このノードも直接作成することができます。または Runtime Virtual Texture Sample ノードを右クリックして、コンテキスト メニューから [Convert to Parameter (パラメータへ変換)] を選択します。

    マテリアル インスタンスを使って RVT アセットをオーバーライドする場合、割り当てた RVT アセットは Runtime Virtual Texture Sample Param 式の [Details (詳細)] パネルで設定されたマテリアル タイプと一致しなければなりません。

以下は、バインドされている RVT アセットに対して書き込みとサンプリングを行うランドスケープ マテリアルの例です。このマテリアルでは、プラットフォームが仮想テクスチャリングをサポートしていない場合、フォールバックして従来のランドスケープのレンダリングを実行するロジックも使用しています。

クリックしてフルサイズ表示。

その他のマテリアル式

マテリアルは、RVT と使用する場合、以下の 2 種類のコンテキストのいずれかでコンパイルされます。

  • RVT へレンダリング

  • 他のパスへレンダリング

マテリアル ロジックの一部を RVT にレンダリングする場合は、Runtime Virtual Texture Replace (ランタイム仮想テクスチャの置換) 式が最適です。

Mat_RVTReplace.png

View Property (プロパティの表示) 式にも RVT 固有のオプションが 2 つほどあります。

  • Virtual Texture Output Level (仮想テクスチャの出力レベル) ノードは、現在レンダリング中の RVT のミップ レベルを出力します。

    Mat_ViewPropertyVTOutputLevel.png

  • Virtual Texture Output Derivative (仮想テクスチャの出力の成果物) ノードは、現在の仮想テクスチャ出力の単一のテクセルがカバーするワールド空間の X および Y のサイズを出力します。

    Mat_ViewPropertyVTOutputDerivative.png

これらの式のユースケースの例としては、RVT での距離ベースのシェーディングの使用を模倣することが挙げられます。RVT シェーディングはカメラに依存しないため、このタイプのシェーディングは直接表現できません。ただし、シェーディングをミップ レベルに依存させることで、同様の効果を得ることができます。Runtime Virtual Texture Replace (ランタイム仮想テクスチャの置換) ノードは、ミップ レベルに依存するシェーディング パスの実装に使用できますが、対象になるのは Runtime Virtual Texture Output (ランタイム仮想テクスチャの出力) ノードのみです。

  • Virtual Texture Feature Switch (仮想テクスチャ) は、仮想テクスチャリングがサポートされていない場合に、代替パスを使用するマテリアル ロジックを用意する場合に有効です。

シーン アクタ出力のプロパティ

シーンに配置されているアクタは RVT にレンダリングできます。RVT へのレンダリングに適したアクタは、以下の通りです。

理想的なアクタ候補

理想的でないアクタ候補

  • ランドスケープおよびランドスケープ スプライン

  • スタティック メッシュおよびインスタンス化スタティック メッシュ

  • フォリッジ インスタンス (デカール スキャタリング)

  • スケルタルメッシュ

  • ムーバブル スタティック メッシュ

  • アニメートされたメッシュ

RVT コンテンツは実質的にシェーディング キャッシュになるため、フレームごとに更新されません。つまり、RVT にレンダリングされるオブジェクトの可動性は スタティック になることが想定されています。スキニングされ、アニメーション化されたプリミティブは、RVT へのレンダリングには適していません。

アクタの [Details (詳細)] パネルの [Render to Virtual Textures (バーチャル テクスチャへレンダリング)] 配列を使用して、シーンでレンダリングできる RVT アセットを指定します。アクタは複数の RVT に割り当てることができます。RVT へのレンダリングは、RVT アセットが、シーンに配置済みの RVT ボリュームに割り当てられていて、アクタのマテリアルが適切に設定された場合にのみ実行されます。

例は、Runtime Virtual Texture クイックスタート を参照してください。また、Virtual Texture 設定の参照 も参照してください。

シーンでの RVT へのレンダリング時のアクタのビヘイビアをさらに制御するには、以下のセクションを参照してください。

Virtual Texture Pass Type (仮想テクスチャのパス タイプ)

プロジェクトで仮想テクスチャリングに関して、ランドスケープとプリミティブのレンダリングを制御するには、[Virtual Texture Pass Type (仮想テクスチャのパス タイプ)] のオプションを使用します。プリミティブが RVT にレンダリングされるか、仮想テクスチャリングをサポートしないプラットフォームでプロジェクトを実行する必要がある場合は、主パスを変更する必要がある場合があります。

このオプションを使うと、RVT にレンダリングするオブジェクトを制御できます。

RVT_Actor_RVTAsset_PassType.png

選択

説明

Virtual Texture Only

主パスにアクタをレンダリングしません。そのため、シーンに RVT がない場合は、アクタは一切レンダリングされません。このオプションは、仮想テクスチャがサポートされていない場合は不要なアイテム (デカール型のマテリアルなど) に使用します。例えば、RVT に出力されるマテリアルがあるスタティック メッシュ平面では、デカールのようなマテリアルを RVT ランドスケープ マテリアルに書き込みます。プラットフォームまたは機能レベルが仮想テクスチャリングをサポートしていない場合、スタティック メッシュ平面は主パスにレンダリングされません。

Virtual Texture OR Main Pass

仮想テクスチャのサポート状態に応じて、アクタを RVT または主パスにレンダリングします。例えば、道路のメッシュとマテリアルをレンダリングするランドスケープ スプラインは RVT に書き込み、スプラインに沿ってマテリアルを適用します。ただし、シーンに有効な RVT がないか、仮想テクスチャリングの機能レベルのサポートがない場合でも、スプラインの道路メッシュはランドスケープに表示されます。

Virtual Texture AND Main Pass

仮想テクスチャのサポート状態にかかわらず、アクタを RVT と主パスにレンダリングします。これは、RVT への書き込みと RVT からのサンプリングが必要なオブジェクト (ランドスケープなど) に最適です。例えば、RVT へのデータの書き込みと、最終的な RVT のレンダリングの両方が設定されているランドスケープ マテリアルは、常に表示される必要があります。

RVT にレンダリングされるプリミティブのシャドウのキャストとコリジョンは無効にすることをお勧めします。これらは自動的には無効になりません。

LOD とミップの設定

仮想テクスチャの詳細設定を展開して表示されるプロパティを使用すると、詳細度 (LOD) とカリングのビヘイビアを設定して、アクタを RVT にどのようにレンダリングするかを制御できます。これらのパラメータには、アクタのレベルの [Details (詳細)] パネルからアクセスします。

シーン内のプリミティブの場合は、以下のプロパティを調節します。

RVT_Actor_LODSettings.png

プロパティ

説明

Virtual Texture LOD Bias

RVT へのレンダリングの LOD を設定します。この LOD は、レンダリングされるプリミティブがカバーする仮想テクスチャのページの範囲を基に自動的に選択されます。このオプションを使うことで、適用するバイアスを調整できます。値を高くすると、詳細度の低い LOD が強制的に使用されます。

Virtual Texture Skip Mips

RVT 内で解像度の最も低いミップからここで指定した個数までのミップについて、当該プリミティブのレンダリングをスキップします。指定された描画距離を超えてプリミティブをレンダリングする必要がないことがたしかな場合、このオプションを使うと、RVT にレンダリングするコストを削減できます。

Virtual Texture Min Coverage

この値を設定すると [Virtual Texture Skip Mips (仮想テクスチャでスキップするミップ)] のパラメータを無視し、RVT ミップのプリミティブを、そのミップでの予想される投影サイズを基にカリングします。この値の単位はピクセルですが、対数領域になります。例えば、値「3」を設定した場合、投影サイズが 8 ピクセル未満であれば、プリミティブがカリングされます。

シーン内のランドスケープの場合は、以下のプロパティを調節します。

RVT_Actor_Landscape_LODSettings.png

プロパティ

説明

Virtual Texture Num LODs

ランドスケープ コンポーネントの RVT へのレンダリングに使用される LOD 数です。「0」を設定すると、各ランドスケープ コンポーネントは単一のクワッドとして RVT にレンダリングされます。「0」は GPU に対して最適な設定です。ランドスケープ マテリアルに高周波頂点補間データが必要な場合は、値を高くする必要があります。

Virtual Texture LOD Bias

RVT へのレンダリング時に、選択した LOD に適用されるバイアス。

オブジェクト ソート プロパティ

シーンで RVT に複数のプリミティブをレンダリングすると、オブジェクト レイヤのソートで問題が起きる可能性があります。Z バッファが使用されず、アクタのマテリアルはアルファ ブレンドを利用することがあるため、ソート順の定義が必要になる場合があります。

レベルの [Details (詳細)] パネルを使用して、シーンで選択されているアクタの [Translucency Sort Priority (透過処理のソートの優先順位)] を設定します。

RVT_Actor_TranslucenySortPriority.png

どのアクタでも、デフォルト値は「0」に設定されています。値が小さいほど先 (下のレイヤー) にレンダリングされ、大きいほど後 (上のレイヤー) にレンダリングされます。

Translucency Sort Priority | Spline: 1 | Decal: 0

Translucency Sort Priority | Spline: 1 | Decal: 2

値が同じアクタのレンダリング順は定義されていません。シーンで RVT にアクタが表示されていない場合は、まず [Translucency Sort Priority (透過処理のソートの優先順位)] を確認してください。

Streaming Virtual Texture のビルド

RVT が多数のアクタが存在する大きなワールドをカバーしている場合、RVT の低解像度ミップへのレンダリングは遅くなる場合があります。このシナリオでは、ワールドのアクタを永続的に存在させることでワールドの一部を表す低ミップにレンダリングできるようにする必要がありますが、この処理はメモリに負担がかかる場合があります。

そのような状況では、RVT の低解像度のミップをベイクしてストリーミングする方が効率的です。高解像度のミップもランタイム時にレンダリングできます。そのため、単一の仮想テクスチャは、「仮想テクスチャのストリーミング」 とランタイム仮想テクスチャの両方のアプローチを最大限に活用できるようになりました。

RVT を使って SVT を有効にする

  1. RVT にストリーミング仮想テクスチャのサポートを追加するには、ストリーミングする低ミップ数を設定します。

  2. RVT アセットで、Number of low mips to stream to the virtual texture を使ってストリーミングする低ミップ数を設定します。

    クリックしてフルサイズ表示。

    低ミップ数が多いほど、カメラに近い距離で使用されるストリーミング仮想テクスチャは大きくなります。

  3. 次に、ストリーミング仮想テクスチャをビルドする必要があります。以下が手順になります。

    • エディタ ツールバーの [Build (ビルド)] メニューを使って [Build Virtual Textures (仮想テクスチャのビルド)] を選択します。

      クリックしてフルサイズ表示。

      このオプションは、現在開いているレベルにすべての仮想テクスチャをビルドします。

    • RVT Volume コンポーネントを使用して、Use Streaming Low Mips in Editor プロパティの横にある [Build (ビルド)] をクリックします。

      Build_BuildVTVolume.png

      このオプションは、選択された RVT ボリュームに対する仮想テクスチャのみビルドします。

デフォルトで、エディタは常にランタイム時に生成された RVT データでレンダリングします。ストリーミング仮想テクスチャ データは使用しません。これにより、関連する編集が行われるたびにストリーミング仮想テクスチャを更新する必要性を避けます。

RVT 低ミップでストリーミング仮想テクスチャをレンダリングするには、RVT ボリュームの [Details (詳細)] パネルの Use Streaming Low Mips in Editor プロパティを選択します。

最適化、統計、デバッグ

プロジェクトのランタイム仮想テクスチャを最適化およびデバッグする方法については、以下のセクションを参照してください。

統計情報

統計情報を有効にするには、バッククォート (`) キーを使用してコンソールを開き、以下のコマンドを入力します。

仮想テクスチャリングのシーンについて、ミリ秒 (ms) 単位のコストとページ テーブルのカウンタを確認するには、stat virtualtexturing を使用します。

Stat_VirtualTexturing.png

現在のシーンでの仮想テクスチャリングの使用に関連するメモリ カウンタを表示するには、stat virtualtexturememory を使用します。

Stat_VirtualTextureMemory.png

ストリーミング仮想テクスチャ 低ミップのデバッグ

RVT 低ミップでストリーミング仮想テクスチャをレンダリングするには、RVT ボリュームの [Details (詳細)] パネルの Use Streaming Low Mips in Editor プロパティの横にある [Build Debug] ボタンを選択します。

Build_BuildDebugVTVolume.png

このボタンは、低スストリーミング仮想テクスチャがどこで使用されているか分かりやすくするために、ティントを付けてストリーミング テクスチャ データをリビルドします。

メモリのプール

仮想テクスチャリングのメモリ プール サイズは、「BaseEngine.ini」コンフィギュレーション ファイルにより設定します。プールがテクスチャ形式ごとのグループとタイル サイズに設定されるようになりました。プール サイズのコンフィギュレーションは、プロジェクトの最大メモリ予算を指定することで決まります。これらの設定は [/Script/Engine.VirtualTexturePoolConfig] 以下にあります。

Unreal Engine 4.24 構文

独自の値を設定する時、タイル サイズはサイズの範囲として定義されるようになりました。さらに、メモリ プールに適用するコマンド r.VT.PoolSizeScale スケーラビリティ設定に設定された値を使うかどうかを定義する bAllowSizeScale もあります。

独自の値を設定する時、以下の例を開始点として使います。

[/Script/Engine.VirtualTexturePoolConfig]
+Pools=(SizeInMegabyte=128, bAllowSizeScale=1, MinTileSize=0, MaxTileSize=9999, Formats=(PF_DXT5, PF_DXT5))
+Pools=(SizeInMegabyte=4, bAllowSizeScale=0, MinTileSize=0, MaxTileSize=9999, Formats=(PF_G16))

このセットアップにおいて、128MB プールが Base Color、Normal、Roughness、Specular RVT に、4MB が World Height RVT に適用されます。

Unreal Engine 4.23 構文

独自の値を設定する場合は、手始めに、タイル サイズが 128 または 256、境界線が 4 テクセルのコンフィギュレーションを使用することをお勧めします。以下に例を示します。

[/Script/Engine.VirtualTexturePoolConfig]
+Pools=(SizeInMegabyte=36, TileSize=136, Format=PF_DXT1)
+Pools=(SizeInMegabyte=72, TileSize=136, Format=PF_BC5)
+Pools=(SizeInMegabyte=72, TileSize=136, Format=PF_DXT5)
+Pools=(SizeInMegabyte=34, TileSize=264, Format=PF_DXT1)
+Pools=(SizeInMegabyte=68, TileSize=264, Format=PF_BC5)
+Pools=(SizeInMegabyte=68, TileSize=264, Format=PF_DXT5)

このコンフィギュレーションは、約 100 MB のコストで 64x64 128 サイズのタイルまたは 32x32 256 サイズのタイルのプールに変換されます。

RVT のコンテンツ タイプに従って、BC5 および DXT5 プールのどちらか 1 つのみが使用されます。

仮想テクスチャリングの物理メモリ プールを構成する場合は、stat virtualtexturing コマンドを使用して、キャッシュ ロードなど、仮想テクスチャリング システムの動的な使用状況を確認します。また、仮想テクスチャリング システムについての多くの情報を出力ログにダンプするには、`r.VT.ListPhysicalPools`コマンドを入力します。

デバッグ

プロジェクトの仮想テクスチャリングをデバッグするには、以下のコンソール変数を使用します。

コンソール変数

説明

r.VT.Flush

仮想テクスチャリング システム内の物理キャッシュをすべてフラッシュするには、このコマンドを使用します。このコマンドは、キャッシュの無効化が適切に処理されていないことが原因で、問題が起きていると考えられる場合に役立ちます。

r.VT.MaxUploadsPerFrame

1 フレームあたりの最大ページ アップロード数を設定するには、このコマンドを使用します (デフォルトでは「64」)。負荷スパイクを防ぐために、フレーム内で更新するランタイム仮想テクスチャ タイルの数を調整する場合に有用です。

コンソール変数とスケーラビリティ

以下のコンソール変数は、プロジェクトごとおよびプラットフォームごと、またはスケーラビリティ レベルで調整できます。

コンソール変数

説明

r.VT.MaxUploadsPerFrame

1 フレームあたりの仮想テクスチャページの最大更新数です。この数を減らすと、視覚的な更新は遅くなりますがパフォーマンスは改善します。

r.VT.MaxUploadsPerFrameInEditor

Editor モードになっている時の、1 フレームあたりの仮想テクスチャページの最大更新数です。エディタでは、作業中はランタイム パフォーマンスを犠牲にして可視性をクリアにするようが良いので、コマンド r.VT.MaxUploadsPerFrame には依存しません。.

r.VT.RVT.TileCountBias

RVT Asset Size in Tiles プロパティに適用するバイアスです。値 -1 で RVT 解像度が半分になります。値 1 は RVT 解像度が倍になります。

r.VT.PoolSizeScale

仮想テクスチャ物理プール サイズに適用するスケール係数です。値が 1 より小さいとテクスチャ プール サイズが小さくなります。メモリの制限が大きいプラットフォーム上で必要になる場合があります。

r.VT.MaxAnisotropy

Virtual Texture サンプリング用の特別な MaxAnisotropy 設定です。

追記および制限

  • モバイル プラットフォームは現在サポートされていません。

  • Vertex Shader ステージから仮想テクスチャのサンプリングが可能です。ただし、頂点シェーダーによって仮想テクスチャ GPU フィードバックは生成されませんので、注意して使用してください。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback