Version: 2021.3
言語: 日本語
プログレッシブライトマッパー
Enlighten によるベイクしたグローバルイルミネーションを使用したライトマッピング

プログレッシブ GPU ライトマッパー (プレビュー版)

ノート: これはプレビュー機能であり、変更されることもあります。この機能を使用するシーンは、将来のリリースで更新が必要になる場合があります。この機能がプレビュー版である間は、本格的な制作に使用しないでください。

プログレッシブ GPU ライトマッパーは、プログレッシブライトマッパー のバックエンドで、コンピューターの GPU と Dedicated Video Ram (VRAM) を使用して、ベイクした ライトマップライトプローブ を生成します。

ハードウェアとソフトウェアの要件

プログレッシブ GPU ライトマッパーを使用するには、コンピューターが以下の最低要件を満たす必要があります。

  • OpenCL 1.2 をサポートする少なくとも 1 つの GPU
  • その GPU 専用の 4GB 以上の VRAM
  • SSE4.1 命令をサポートする CPU

ベイクするシーンが、指定された GPU で利用可能な VRAM よりも多くを必要とする場合、ベイク時間が大幅に増加することがあります。シーンのベイクにかかる時間を短縮するための情報は、“パフォーマンス” を参照してください。

プログレッシブ GPU ライトマッパーは CPU OpenCL デバイスをサポートしていません。

パフォーマンス

プログレッシブ GPU ライトマッパーは、ライトマッパータイリングを有効にしない限り、プログレッシブ CPU ライトマッパーよりもベイクが高速です。

ただし、ベイクに使用する GPU の仕様と、その GPU 専用の VRAM 容量の両方が、ライトマッパーのパフォーマンスに影響します。

また、GPU リソースを消費する他のアプリケーションも、ベイクのパフォーマンスに影響を与えます。ハードウェアベンダーによっては、Unity で使用できる VRAM の量が減ると、ベイクが遅くなったり、失敗の原因になったりすることがあり、さらには、GPU が最小メモリ要件を満たせない場合は、ライトマッパーが CPU にフォールバックすることもあります。この機能の使用中は他のアプリケーションを終了しておくことで、安定性とパフォーマンスを向上させることが可能です。

プログレッシブ CPU ライトマッパーと同じ品質の結果を得るために、プログレッシブ GPU ライトマッパーは最大で 4 倍の間接光サンプルを必要とします。プログレッシブ CPU ライトマッパーは、各バウンスでより多くの光線を放射する、分岐パストレーシング (branched path tracing) と呼ばれる方法を用いています。分岐パストレーシングを用いる方法は GPU には適していません。

Unity は、プログレッシブ GPU ライトマッパーがシーンのベイクに必要とするメモリ量を特定するために役立つスプレッドシートを提供しています。詳細は プログレッシブ GPU ライトマッパーメモリスプレッドシート を参照してください。

ライトマッパータイリングによるベイク速度低下の防止

プログレッシブ GPU ライトマッパーにはライトマッパータイリングと呼ばれる機能があります。ライトマッパータイリングは、Unity が GPU メモリ割り当てを使い切った時にプログレッシブ GPU ライトマッパーがプログレッシブ CPU ライトマッパーにフォールバックするのを防ぎます。フォールバックの代わりに Unity は、CPU に一時的なメモリを割り当て、使用可能な GPU メモリ量に適したサイズのタイルでライティングをベイクします。ライトマッパータイリングは、Unity がライトマップ全体をベイクするのに十分な GPU メモリにアクセスできない場合のみ、アクティブになります。プログレッシブ CPU ライトマッパーにはタイリング機能はありません。

ライトマッパータイリングがアクティブな場合は、シーンビューとベイク処理でプログレッシブな更新が停止します。ただし、Lighting ウィンドウの Progressive updates 設定の表示は見た目には無効化されません。ライトマッパータイリングがアクティブな時にシーンをベイクすると、同じシーンをタイリングなしでベイクするよりも時間がかかります。

タイリングを無効化することはできません。ただし、以下の方法を用いることで、それがアクティベートされる可能性を低くすることができます。

  • Unity が使用できる GPU メモリの量を増やします。

  • アンビエントオクルージョン を無効にします。Lighting ウィンドウ (メニュー: Window > Rendering > Lighting) を開き、Lightmapping Settings インターフェース内で Ambient Occlusion を無効にしてください。

  • 間接光のみをベイクします。全ての光源を Realtime または Mixed に設定します。Baked に設定された光源がないことを確認してください。混合 (Mixed) アプローチを使用する場合は、Lighting > Mixed Lighting > Lighting modeBaked Indirect に設定します。

  • プロジェクトの アンチエイリアシング のレベルを下げます。Project Settings > Quality を開き、必要なサンプル数がより少ないオプションを選択します (例えば、8x Multi Sampling から 2x Multi Sampling に切り替えるなど)。

  • Lightmap Parameters アセット 内でライトマップの品質を下げます。Lighting ウィンドウ を開き、Lightmapping settings を展開し、Lightmap parameters で低解像度のオプションを選択します。

  • ライトマップの解像度を低くします。

  • CPU ベースのノイズ除去を使用します。ノイズ除去を選択するには、Lighting ウィンドウ を開き、Lightmapping settings を展開し、FilteringAdvanced に設定して、ライトマップターゲットの種類 (DirectIndirect) ごとにノイズ除去を選択します。CPU ベースなのは OpenImageDenoise のみです。RadeonProOptix は GPU ベースですが、RadeonPro はより多くの GPU メモリを使用します。

プラットフォーム固有の制限

macOS では、使用可能なメモリ量の特定がより困難です。そのため、このプラットフォームでは CPU にフォールバックする可能性が高く、したがってベイク速度を最適化するための指示に従うことが推奨されます。

ベイク速度を最適化する方法

ベイク時間を短縮し、ベイク処理の使用メモリが、GPU がベイク用に使用できる指定の VRAM 容量を超えないようにする方法は、いくつかあります。

  • 他の GPU アクセラレーションアプリケーションを終了します。GPU アクセラレーションによる 2D 画像編集ソフトや 3D モデリングソフトは VRAM を使用します。グラフィックスアクセラレーション機能をオフにするか、これらのアプリケーションを終了してください。

  • CPU ベースのノイズ除去に切り替えます。 GPU ベースのノイズ除去も VRAM の容量を使用します。Intel Open Image などの、代わりにシステム RAM を使用する CPU ベースのオプションに切り替えます。

  • 小さなゲームオブジェクトにはライトプローブを使用します。 がれきや破片、小さなプロップのようなゲームオブジェクトは、ライトマップの容量を大きく使用しますが、シーンの見た目にはあまり貢献しない場合もあります。ベイク速度を最適化するには、そのようなゲームオブジェクトのメッシュレンダラーの Contribute Global Illumination を無効化 し、代わりに ライトプローブ でライティングを行います。

  • レンダリング用とベイク用に別々の GPU を指定します。 コンピューターに複数の GPU が搭載されている場合は、1 つをレンダリング用に、1 つをベイク用に指定することができます。以下の、GPU の選択に関するセクションを参照してください。

  • より少ない数の アンチエイリアスサンプル を使用します。 Lightmap Parameters アセット 内の、この設定のデフォルト値は 8 です。これを増加させると Unity はより多くの VRAM を使用します。4096 以上のライトマップサイズを使用している場合は、多くのコンシューマー GPU のメモリはすぐに超えてしまいます。

GPU 選択の設定

2 つ以上の GPU がある場合は、1 つの GPU をシーンのレンダリング用に指定し、もう 1 つを GPU をライティングのベイク用に指定することができます。デフォルト GPU の使用できる VRAM 容量が、シーンのレンダリングとプログレッシブ GPU ライトマッパーによるべイクの両方を行うのに十分でない場合には、この方法が適している場合があります。
以下の手順で、Unity が ベイクに使用する GPU を変更できます。 1. Lighting ウィンドウを開きます (メニュー: Window > Rendering > Lighting)。
2. Workflow Settings セクションに移動します。
3. GPU Baking Device ドロップダウンメニューを使用して GPU を選択します。

プログレッシブライトマッパー
Enlighten によるベイクしたグローバルイルミネーションを使用したライトマッピング