ランタイム バーチャル テクスチャ

Unreal Engine のランタイム バーチャル テクスチャの概要です。

Windows
MacOS
Linux

ランタイム バーチャル テクスチャ (Runtime Virtual Texture: 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 プロジェクトでランタイム バーチャル テクスチャを設定し、操作するには、次のコンポーネントを使用します。

ランタイム バーチャル テクスチャ アセット

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

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

  1. シーンに配置された各 ランタイム バーチャル テクスチャ ボリューム は、1 つの RVT アセットに割り当てられます。

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

  3. RVT ボリュームから RVT にアクタをレンダリングする前に、アクタの マテリアルVirtual Texture マテリアル ドメインを使用するか、適切に設定された 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 形式でエンコードされたベースカラ-、BC5 テクスチャは法線 X および法線 Y を維持します。BC1 テクスチャはラフネス、スペキュラ、法線 Z を維持します。

BC3 + BC5 + BC1

YCoCg Base Color, Normal, Specular, Mask

これは、YCoCg ベースカラー、ノーマル、スペキュラと同じですが、一般的な使用を目的とした 8 ビットの「マスク」チャネルが追加されています。圧縮が有効になっている場合、マスクは BC 3形式のアルファチャネルにパックされます。

BC3 + BC5 + BC1

World Height

高さ値を格納します。値は、RVT ボリュームからの最小および最大 z 座標の範囲で正規化されて保存されます。

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% 増加、パフォーマンス サンプリングの追加、バーチャルテクスチャ データのデコードが必要になります。

デフォルト 基本カラー エンコーディング

YCoCg 基本カラー エンコーディング

ランタイム バーチャル テクスチャの法線ストレージ

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

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

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

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

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

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

4.26では、標準のマテリアル出力から RVT に書き込む機能が削除されました。すべての出力は、Runtime Virtual Texture Output ノードから書き込む必要があります。レガシーマテリアルは、RVT 出力ノードを使用するように自動的に変換されます。

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. [Set Bounds] ボタンを使って、ボリュームの配置、スケール、回転を迅速に行います。

  4. 後で他のアクタがこの RVT に書き込むように設定されると、Set Bounds もボリュームをスケーリングして、ボリュームの境界に関連するすべてのアクタの境界が含まれるようにします。

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

Runtime Virtual Texture マテリアル式

ランタイム バーチャル テクスチャ アセットが割り当てられているシーン アクタは、次のマテリアル式を使用して、アクタをシーンで生成されたランタイム バーチャル テクスチャに合成できるようにする必要があります。

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

シーン内の 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

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

    Mat_VirtualTextureMaxLevel.png

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

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

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

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

理想的なアクタ候補

理想的でないアクタ候補

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

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

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

  • スケルタルメッシュ

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

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

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

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

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

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

バーチャルテクスチャのパス タイプ

[Virtual Texture Pass Type (バーチャルテクスチャのパス タイプ)] オプションを使って、 RVT への出力が設定されているオブジェクトの主パス レンダリングを制御することができます。

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

RVT_Actor_RVTAsset_PassType.png

選択

説明

Never

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

From Virtual Texture

バーチャルテクスチャのサポート状態に応じて、アクタを RVT または主パスにレンダリングします。次のすべてが当てはまる場合、アクタは主パスにレンダリングしません。

  • バーチャル テクスチャのサポートが有効になっている。

  • アクタによって参照される RVT アセットの 1 つは、RVT ボリュームとともにシーンに配置される。

  • 関連する RVT ボリュームの 1 つが「プリミティブを非表示」に設定されている。

たとえば、道路メッシュとマテリアルをレンダリングするランドスケープ スプラインは、スプラインに沿ってマテリアルを適用するために RVT に書き込む必要があります。ただし、シーンに有効な RVT がないか、バーチャル テクスチャリングの機能レベルのサポートがない場合でも、スプラインの道路メッシュはランドスケープに表示されます。 |

Always

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

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

LOD とミップの設定

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

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

RVT_Actor_LODSettings.png

プロパティ

説明

Virtual Texture LOD Bias

RVT へのレンダリングの LOD を設定します。この 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 にレンダリングされます。ランドスケープ マテリアルに高周波頂点補間データが必要な場合は、値を高くする必要があります。

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. 次に、ストリーミングバーチャルテクスチャをビルドする必要があります。以下が手順になります。RVT ボリューム コンポーネントで、Streaming Levels プロパティの下にある Build をクリックします。これを最初に使用すると、ストリーミング バーチャル テクスチャを保持する新しい Virtual Texture Builder アセットが作成されます。

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

  4. 編集後、ストリーミング バーチャル テクスチャを更新する必要があります。以下が手順になります。

    • エディタ ツールバーの [Build (ビルド)] メニューを使って [Build Virtual Textures (バーチャルテクスチャをビルド)] を選択します。このオプションは、現在開いているレベルにすべてのバーチャルテクスチャをビルドします。

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

    • RVT Volume コンポーネントを使用して、Use Streaming Low Mips in Editor プロパティの横にある [Build (ビルド)] をクリックします。このオプションは、選択した RVT ボリュームに割り当てられたストリーミング バーチャル テクスチャのみを構築します。このオプションは、選択した RVT ボリュームに割り当てられたストリーミング バーチャル テクスチャのみを構築します。

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

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

一部の RVT アセット設定が変更されると、関連する SVT アセットは一致しなくなり、無効になります。これがゲームでパフォーマンスの問題の原因になる場合があります。RVT ボリューム UI は、これが当てはまる場合を示し、[Build] ボタンの横に警告アイコンが表示されます。この状態は、マップチェック中にもフラグが立てられます。

RVT_Actor_StreamingLevelsNote.png

最適化、統計、デバッグ

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

統計情報

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

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

Stat_VirtualTexturing.png

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

Stat_VirtualTextureMemory.png

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

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

Build_BuildDebugVTVolume.png

このオプションを設定すると、ストリーミング バーチャル テクスチャは色合いでデータを再構築するため、ストリーミング バーチャル テクスチャが使用されている場所を簡単に確認できます。

メモリのプール

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

どの r.VT.PoolSizeScale スケーラビリティ設定をメモリプールに適用するかを指定する ScalabilityGroup オプションが追加されました。

デバッグ

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

コンソール変数

説明

r.VT.Flush

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

r.VT.MaxUploadsPerFrame

バーチャル テクスチャリング システム内の物理キャッシュをすべてフラッシュするには、このコマンドを使用します。負荷スパイクを防ぐために、フレーム内で更新するランタイム バーチャル テクスチャ タイルの数を調整する場合に有用です。

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

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

コンソール変数

説明

r.VT.MaxUploadsPerFrame

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

r.VT.MaxUploadsPerFrameInEditor

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

r.VT.MaxContinuousUpdatesPerFrame

1 フレームあたりの連続ページの最大更新数です。これらの更新はそれぞれ、すでにマップされている単一のランダム ページを更新します。これは、継続的なアップロード用に設定された RVT アセットで、他のページ更新で MaxUploadsPerFrame バジェットを使用していない場合にのみ発生します。

r.VT.MaxContinuousUpdatesPerFrameInEditor

Editor モードになっている時の、1 フレームあたりの連続テクスチャページの最大更新数です。

r.VT.RVT.TileCountBias

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

r.VT.RVT.TileCountBias.Group<x>

これにより、タイル カウント バイアスは、スケーラビリティ グループ に設定されている RVT ボリュームにのみ適用されます。グループが指定されていない CVar のバリエーションは、スケーラビリティグループ 0 にマップされることに注意してください。

r.VT.PoolSizeScale

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

r.VT.PoolSizeScale.Group<x>

これは、スケーラビリティ グループ に設定されているバーチャル テクスチャ物理メモリプールにのみスケール係数を適用します。グループが指定されていない CVar のバリエーションは、スケーラビリティグループ 0 にマップされることに注意してください。

r.VT.MaxAnisotropy

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

追記および制限

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

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