Enlighten
LOD とリアルタイム GI

事前計算されたライティングの使用

Unity では、事前計算によるライティングは自動処理として、または、手動で開始して、バックグラウンドで計算されます。いずれの場合も、これらのプロセスがバックグラウンドで実行されている間、エディターで作業を続けることが可能です。

事前計算している間は、青色のプログレスバーがエディターの右下に表示されます。Baked GI か、Precomputed Realtime GI か、どちらを有効にしているかによって、完了するまでに必要な段階が異なります。現在の進行状況はプログレスバーの上に表示されています。

Unity による事前計算の現在の進行状況を示すプログレスバー

上の例では、現在、全部で 11 ある事前計算処理の 5 番目の「Clustering」(クラスタリング) という処理中で、それが完了して次の処理に移る前に 6 つのジョブが残っていることがわかります。以下はさまざまな処理段階です。

Precomputed Realtime GI

  1. Create Geometry (ジオメトリの作成)
  2. Layout Systems (システムのレイアウト)
  3. Create Systems (ベイクしたシステムの作成)
  4. Create Atlas (アトラスの作成)
  5. Clustering (クラスタリング)
  6. Visibility
  7. Light Transport (ライトトランスポート)
  8. Tetrahedralize Probes (プローブの四面体分割)
  9. Create ProbeSet (プローブセットの作成)

Probes (プローブ)

  1. Ambient Probes (アンビエントプローブ)
  2. Baked/Realtime Ref. Probes (ベイクした/リアルタイムのリフレクションプローブ)

Baked GI (ベイクした GI)

  1. Create Geometry (ジオメトリの作成)
  2. Atlassing (アトラス化)
  3. Create Baked Systems (ベイクしたシステムの作成)
  4. Baked Resources (ベイクしたリソース)
  5. Bake AO (AO をベイク)
  6. Export Baked Texture (ベイクしたテクスチャをエクスポート)
  7. Bake Visibility (Visibility のベイク)
  8. Bake Direct (Direct のベイク)
  9. Ambient and Emissive (アンビエントと Emissive)
  10. Create Bake Systems (ベイクシステムの作成)
  11. Bake Runtime (Runtime のベイク)
  12. Upsampling Visibility (Visibility のアップサンプリング)
  13. Bake Indirect (Indirect のベイク)
  14. Final Gather (ファイナルギャザー)
  15. Bake ProbesSet (プローブセットのベイク)
  16. Compositing (コンポジット)

事前計算の開始

Unity のライティング事前計算では、静的なジオメトリしか考慮しません。ライティングの事前計算を始めるためには、シーン内にあるゲームオブジェクトの少なくとも 1 つを static にする必要があります。設定はヒエラルキーウィンドウ上でオブジェクト個別に行うか、シフト選択で複数のゲームオブジェクトを選択して、まとめて設定することができます。

Static チェックボックスを、インスペクターウィンドウで選びます (Inspector > Static)。こうすることによりすべてのゲームオブジェクトを static に設定します。これにより、不要に、ナビゲーションやバッチを静的にしてしまう場合もあります。事前計算によるリアルタイム GI には、Lightmap Static を有効にすることのみが必要です。

さらに細かい制御が必要な場合は、インスペクターウィンドウの Static チェックボックスの右側にあるドロップダウンリストによって、個々の static オプションを設定できます。また、オブジェクトもライティングウィンドウの Object エリアで Static に設定できます。

If you set your Scene to Auto Generate (menu: Window > Rendering > Lighting Settings > Scene > Auto Generate), Unity’s lighting precompute begins automatically, and updates automatically when any static geometry in your Scene changes. If you do not enable Auto Generate, you must start the lighting precompute manually.

自動/手動の事前計算

If you have checked Auto Generate in the bottom of Unity’s Lighting panel (menu: Window > Rendering > Lighting Settings > Scene > Auto Generate), this precompute begins automatically as a background process whenever the static geometry within your Scene changes.

ただし、Auto Generate を有効にしていない場合は、その横にある Build ボタンをクリックして、ライティングの事前計算処理を手動で開始する必要があります。こうすることにより、事前計算を同じように開始し、処理を開始する時間を制御することができます。

Auto Generate __ はより小さめの複雑でないシーンで作業する場合に便利です。なぜなら、Auto Generate __ はシーンの静的なゲームオブジェクトを移動または編集している間に、素早く正確なライティングの結果を生成するからです。ただし、大きな、または、複雑なシーンで作業する場合は、手動オプションに切り替える方がよい場合があります。そうすることにより、シーンを変更するたびにコンピューターの CPU 使用率が高くなったり、ライティングの事前計算が繰り返し開始されることを避けることができます。

When you manually initiate a precompute, all aspects of your Scene lighting are evaluated and computed. To recalculate and bake just the Reflection Probes by themselves, click the drop-down menu attached to the Generate Lighting button (menu: Window > Lighting Settings > Scene > Generate Lighting) and select Bake Reflection Probes.

Auto Generate を使用すると、Unity はライティングデータを限られたサイズの一時的なキャッシュに保存します。つまり、キャッシュのサイズを超えると、Unity は古いライティングデータを削除します。シーンの中に、削除された自動生成のライティングデータに依存しているものがあると、プロジェクトをビルドするときに問題が発生することがあります。この場合、ビルドされたプロジェクトのシーンでライティングが正しくない場合があります。したがって、ゲームをビルドする前に、 Auto Generate のチェックを外し、すべてのシーンのライティングデータを手動で生成します。すると、Unity は、ライティングデータをアセットファイルとして Project フォルダーに保存します。つまり、プロジェクトの一部として保存し、ビルドに加えます。

Baked GI か Realtime GI を有効にする

Unity はデフォルトで Baked GIRealtime GI の両方を有効にします。Baked GI はすべて事前計算されています。Realtime GI は、間接照明を使用する場合に事前計算を実行します。両方を有効にすると、シーンの個々のライトでどちらの GI システムを使用するかを制御します (これを行うには、ライトコンポーネントで Mode 設定を使用します)。詳細は、Lighting ウインドウグローバルイルミネーション に関するドキュメントを参照してください。

ライティングシステムを使用する最も柔軟な方法は、Baked GIRealtime GI を一緒に使用することです。ただし、これは最もパフォーマンス負荷の高いオプションでもあります。ゲームのリソース負荷をより軽くするために、Baked GI か __Realtime GI__を無効にすることができます。これにより、ライティングシステムの柔軟性と機能性は低下します。

To manually enable or disable Global Illumination, open the Lighting window (Window > Lighting Settings > Scene). Tick Realtime Global Illumination to enable Realtime GI, and tick Baked Global Illumination to enable Baked GI. Untick these checkboxes to disable the respective GI system. If any Lights are set to the mode you have disabled, they are are overridden and set to the active GI system.

ライトごとの設定

各ライトのプロパティーを設定するには、シーンまたは Hierarchy ウィンドウでそれを選択し、インスペクターウィンドウの Light コンポーネント の設定を編集します。

各ライトのデフォルトの ModeDynamic です。つまり、ライトはシーンに直接ライティングを与え、Unity の Realtime GI が間接ライティングを処理します。

Light の ModeStatic に設定すると、そのライトは Unity の Baked GI システムにのみライティングを与えます。ライトからの直接ライティングと間接ライティングの両方がライトマップにベイクされ、ゲーム中に変更することはできません。

If you set the Light’s Mode to Stationary, GameObjects marked as Static still include this light in their Baked GI light maps. However, unlike Lights marked as Static, Stationary Lights still contribute real-time lighting, based on the stationary bake mode in the Lighting window (menu: Window > Lighting Settings). This is useful if you are using light maps in a static environment, but you still want a good integration between dynamic and light map static geometry.

Mode を Dynamic に設定したディレクショナルライト
ModeDynamic に設定したディレクショナルライト

詳細については、ライティングモード に関するドキュメントを参照してください。

GI キャッシュ

Baked GI または Precomputed Realtime GI のいずれかで、Unity はシーンライティングに関するデータを GI Cache にキャッシュ (保存) し、可能な限りこのデータを再利用して事前計算中に時間を節約しようとします。シーンに加えた変更の数と性質によって、このデータをどれだけ再利用できるかどうかが決まります。

このキャッシュは Unity プロジェクトの外に保存され、Preference > GI Cache > Clear Cache で削除できます。これを削除すると、事前計算のすべての段階を最初から再計算する必要があるため時間がかかります。ただし、ある場合、おそらくディスク使用量を減らす必要がある場合などでは、これが役に立ちます。

ベイクした GI の LOD

Unity がベイクしたライトマップを生成するとき、Level-of-detail (LOD) を考慮する必要があります。直接照明はすべての LOD の実際の表面を使用して計算されます。LOD の値が低いと、間接光をフェッチするためにライトプローブを使用します。その結果のライトはライトマップにベイクされます。

つまり、間接照明をキャプチャするためには、ライトプローブを LOD の周辺に置かなくてはならない、という事です。完全にベイクした GI を使用する場合は、オブジェクトが実行時にライトプローブを使用する事はありません。


  • 2017–06–08 限られた 編集レビュー でパブリッシュされたページ

  • Light Modes、 5.6に追加

Enlighten
LOD とリアルタイム GI