Version: Unity 6.0 (6000.0)
言語 : 日本語
シェーダーグラフでのストリーミング仮想テクスチャリングの使用
テクスチャを "Virtual Texturing Only" とマークする

仮想テクスチャリングのキャッシュ管理

この機能は実験的であり、本番環境では使用できません。機能とドキュメントは今後、変更または削除される可能性があります。

仮想テクスチャリングでは、GPU メモリに固定サイズのテクスチャキャッシュを使用します。グラフィックス形式ごとに 1 つのキャッシュがあります。キャッシュのデフォルトサイズを設定したり、デフォルトサイズを上書きしたりすることができます。

ストリーミング仮想テクスチャリング (SVT) システムでは、メインメモリの 1 つの CPU キャッシュを使用してタイルページを格納します。タイルページには、SVT システムがディスクから CPU キャッシュにまとめて読み込んだ複数のタイルが含まれています。これにより、低速ドライブのディスクからの読み取りスループットのスピードが向上します。仮想テクスチャリングシステムはタイルをリクエストすると、そのタイルを含むページを読み込みます。システムは多くの場合、次のフレームでそのページの他のタイルをリクエストします。そのため、CPU キャッシュはそのページを保持して、ディスクからの他の読み取りを回避します。CPU のキャッシュサイズが大きいほど、仮想テクスチャリングはメインメモリにそのページを長く保持することができます。

仮想テクスチャリングは、指定した形式を使用するテクスチャのテクスチャスタックを持つマテリアルを描画するときに、そのグラフィックス形式の GPU キャッシュを割り当てます。キャッシュサイズ (MB) は HDRP Asset 上で設定できるため、品質レベルごとに異なる設定が可能です。

VirtualTexturing.Streaming.SetGPUCacheSettings メソッドを使用して、スクリプトのキャッシュサイズを設定することもできます。

キャッシュサイズを変更することもできますが、その場合、リソースの負担が高い CPU や GPU の動作となり、メインスレッドとレンダースレッドの両方がブロックされます。キャッシュサイズの変更にかかる時間は、キャッシュのサイズと数によって異なります。フリーズやスタッターが目立たないようにするには、フレームレートの重要性が低いとき (レベルのロード時など) にキャッシュサイズを変更するとよいでしょう。

あるキャッシュの最適サイズに影響する主な要因は、出力画面の解像度と、そのグラフィックス形式を使用する各テクスチャスタックのレイヤー数です。シーンのマテリアルの数やテクスチャの解像度は、最適サイズにそれほど影響しません。最高品質の設定でフル HD の画面解像度を使用する場合、GPU キャッシュの合計サイズは通常 700 MB です。

キャッシュのサイズが小さすぎてキャッシュの内容を収容できず、同じフレーム内でタイルのロードとアンロードを行わなければならない場合、“キャッシュスラッシング” と呼ばれる問題が発生します。キャッシュスラッシングを防ぐために、仮想テクスチャリングシステムは、必要に応じて自動的にテクスチャの品質を下げます。キャッシュの使用状況を監視し、ピクセルシェーダーのテクスチャスタックサンプリングのためのミップマップバイアスを自動的に管理します。キャッシュがいっぱいになると、ミップマップバイアスが増加します。これにより、仮想テクスチャリングシステムが低解像度のタイルを要求することで、キャッシュのスペースが節約され、リクエストされたすべてのタイルを格納することができます。

テクスチャがぼやけて見える場合は、キャッシュのサイズを大きくしてみてください。フレームを最高の品質でレンダリングするのに十分な大きさのキャッシュがすでにある場合、キャッシュサイズをさらに大きくすると、キャッシュにタイルをより長く保持できます。これにより、最近表示されていたタイルがまだキャッシュに残っている可能性が高くなるため、カメラを動かしたり回したりするときにテクスチャが飛び出すなど、望ましくない効果を減らすことができます。

シェーダーグラフでのストリーミング仮想テクスチャリングの使用
テクスチャを "Virtual Texturing Only" とマークする