Version: 2020.3
言語: 日本語
ストリーミング仮想テクスチャリングの要件と互換性
ストリーミング仮想テクスチャリングをプロジェクトで使用可能にする

ストリーミング仮想テクスチャリングの仕組み

ストリーミング仮想テクスチャリング (SVT) システムでは、テクスチャをタイル状に分割します。

ランタイムには、SVT がテクスチャをサンプリングする際に以下のような処理を行います。

  • 間接テクスチャをサンプリングして、非仮想 UV を計算し、その UV を使ってキャッシュテクスチャをサンプリングします。
  • 仮想 UV をタイル ID に変換し、これらのタイル ID を受け取る追加のレンダーターゲットをバインドします。CPU はこのレンダーターゲットを非同期にメインメモリにコピーします。そして、別のスレッドでそれを処理して、まだそれらのタイルが存在していない場合、 非同期の読み取りマネージャーに対して、これらをディスクから GPU メモリのキャッシュにロードするリクエストを作成します 。

このようなランタイムオペレーションのコストを考えると、テクスチャをグループ化して、同時にサンプリングする方が効率的です。この処理をテクスチャのスタック化と呼びます。同じ UV 座標で同時にサンプリングされたテクスチャのグループは、テクスチャスタックと呼ばれます。

SVT はフレームレンダリング中にタイルのリクエストを送信します。そのため、要求されたタイルが GPU キャッシュにロードされるまで、ミリ秒から数秒かかることがあり、場合によっては GPU キャッシュに全くロードされないこともあります。要求されたタイルがキャッシュにロードされない場合、SVT には自動的なフォールバックメカニズムがあります。それは、リクエストされたタイルがキャッシュにロードされるまで、より高いミップマップレベルからタイルをサンプリングします。これにより、タイルが完全にロードされるまで LOD が低くなります。

HD レンダーパイプラインのデバッグビューの SVT

HD レンダーパイプライン (HDRP) のデバッグビューは、隣接するスクリーンピクセルがいくつ同じタイルをリクエストしているかを表示します。

HDRPデバッグビューを開くには、Unityのトップメニューに移動し、Window > Render Pipeline > Render Pipeline Debug > Rendering を選択します。SVT のデバッグデータを表示するには、Fullscreen Debug ModeVirtualTexturingFeedback に設定します。

デバッグビューでは、タイル ID ごとに異なる色を使用します
デバッグビューでは、タイル ID ごとに異なる色を使用します

同じテクスチャタイルをサンプリングしているピクセルは、同じ色です。色調 (緑、赤など) は、タイルが属するミップマップレベルを表しています。例えば、黄色っぽいタイルはすべて、テクスチャのミップマップ 1 に属します。

ストリーミング仮想テクスチャリングの要件と互換性
ストリーミング仮想テクスチャリングをプロジェクトで使用可能にする