Version: Unity 6.0 (6000.0)
言語 : 日本語
ミップマップストリーミングの有効化
テクスチャのミップマップレベルのオーバーライド

ミップマップストリーミングの設定

ミップマップストリーミングを使用するカメラの設定

デフォルトでは、ミップマップストリーミングを有効にすると、シーン内のすべてのカメラでミップマップストリーミングが使用されます。

1 台のカメラでのミップマップストリーミングの無効化

以下の手順に従ってください。

  1. シーンでカメラを選択します。
  2. Inspector ウィンドウで、Add Component > Streaming Controller を選択します。
  3. Streaming Controller コンポーネントを無効にします。

1 台のカメラでのミップマップストリーミングの有効化

以下の手順に従ってください。

  1. Edit > Project Settings > Quality に移動します。
  2. Textures セクションの Mipmap Streaming で、Add All Cameras を無効にします。
  3. Streaming Controller コンポーネントをカメラに追加し、有効になっていることを確認します。

カメラが使用するミップマップレベルを設定します。

Streaming Controller コンポーネントの Mipmap Bias 設定を使用して、ミップマップストリーミングが自動的に選択するミップマップレベルよりも小さい、または大きいミップマップレベルを Unity に強制的にロードさせます。

Unity は、カメラビューのテクスチャのミップマップレベルに Mipmap Bias 値を追加します。例えば、Mipmap Bias を 2 に設定し、ミップマップストリーミングがテクスチャにミップマップレベル 1 を選択すると、Unity はミップマップレベル 3 (1 + 2) をロードします。

この設定は、StreamingController.streamingMipmapBias API を使用してコントロールすることもできます。

テクスチャのメモリバジェットの設定

Unity がテクスチャに使用する最大 GPU メモリを設定するには、次の手順に従います。

  1. Edit > Project Settings > Quality に移動します。
  2. Textures セクションで、Memory Budget 値を MB 単位で設定します。

メモリバジェットは、ミップマップストリーミングと、ミップマップストリーミングを使用しないテクスチャのすべてのミップマップレベルの両方に使用されます。例えば、Memory Budget を 100 MB に設定し、ミップマップストリーミングを使用しないテクスチャが 90 MB ある場合、ミップマップストリーミングのメモリバジェットは 10 MB です。

メモリバジェットを超えないように、Unity は以下の処理を行います。

  • テクスチャの低解像度ミップマップレベルをロードします。これにより、テクスチャがポップしたり、ロードが遅くなったりします。
  • GPU メモリから未使用のミップマップレベルを削除し、必要なミップマップレベルの領域を確保します。

Max Level Reduction プロパティを使用して、Unity が特定のレベルより小さいミップマップレベルを削除するのを停止できます。この値は、Unity が初めて起動した際にロードするミップマップレベルでもあります。例えば、Max Level Reduction を 2 に設定すると、Unity はレベル 2 以上のミップマップレベルのみをロードし、メモリに保持します。

Unity は、GPU メモリのミップマップレベルを Max Level Reduction 値よりも高い値で維持する必要があります。これは、Unity がメモリバジェットを超えることを示す可能性があります。

メモリバジェットの見積もり

プロジェクトのメモリバジェットを見積もるには、次の手順に従います。

  1. プロジェクトの実行中に、Texture.desiredTextureMemory API を使用して、Unity がロードするテクスチャの合計サイズを取得します。
  2. Memory Budget をその値より少し大きく設定します。

これにより、シーンの中で最もリソースを必要とする領域に利用できる十分なテクスチャメモリが確保され、テクスチャの解像度が低下するのを回避できます。メモリに余裕がある場合は、メモリバジェットを大きな値に設定することで、シーンで表示されていないテクスチャデータを GPU キャッシュに保持することができます。

注意エディターで Texture.desiredTextureMemory を使用する場合、合計サイズには Unity がエディターウィンドウを描画するために使用するテクスチャが含まれる場合があります。

ランタイムのメモリバジェットの設定

以下の API を使用して、ランタイムのメモリバジェットを設定およびコントロールできます。

ミップマップストリーミングの有効化
テクスチャのミップマップレベルのオーバーライド