Unity では、リアルタイムグローバルイルミネーションに Enlighten というミドルウェアソリューションを使用しています。
デフォルトでは、リアルタイムライト はシーンへ直接ライティングの効果しか与えません。シーンで Realtime Global Illumination (Enlighten リアルタイムフローバルイルミネーション) を有効にすると、リアルタイムライトもシーンに間接ライティングの効果を与えるようになります。
レンダーパイプライン間での Enlighten を使ったリアルタイムグローバルイルミネーションのサポートについて詳しくは、レンダーパイプライン機能比較 を参照してください。
Enlighten リアルタイムグローバルイルミネーション (リアルタイム GI) は、ゆっくりと変化し、シーンに大きな影響を与えるライトに有効です。例えば、空を横切る太陽や、閉ざされた廊下でゆっくりと点滅するライトなどです。この機能は、必要な待ち時間と CPU サイクル数のため、特殊効果や急に変わるライトを目的とするものではありません。Enlighten リアルタイムグローバルイルミネーションは、ミッドレベルからハイエンドの PC システムやコンソールをターゲットにしたゲームに適しています。ハイエンドのモバイルデバイスは、この機能を使用するのに十分な性能を持っていますが、パフォーマンスを確保するために、シーンを小さくし、リアルタイムライトマップの解像度を低く保つ必要があります。
シーンで Enlighten リアルタイム GI を使用するには、Lighting を開き (Window > Rendering > Lighting)、Realtime Global Illumination を有効にします。
特定のライトで リアルタイム GI の効果を無効にするには Light ゲームオブジェクトを選択し、Light コンポーネントで _Indirect Multiplier___を 0 に設定します。つまり、ライトがシーンへ間接ライティングを行わないということです。
リアルタイム GI をまとめて無効にするには、Lighting ウィンドウを開き (Window > Rendering > Lighting)、Realtime Global Illumination のチェックを外します。
Enlighten リアルタイムグローバルイルミネーションの詳しい使い方は、Unity チュートリアルの Precomputed Realtime GI を参照してください。
Enlighten Realtime Global Illumination does the following:
At runtime, Enlighten Realtime Global Illumination uses this precomputed visibility information to approximate how Realtime Lights bounce in the Scene, saves the results in a set of lightmaps, and then uses these lightmaps to apply indirect lighting to the Scene. It is computationally intensive to update the lightmaps, and so the process is split across several frames. It takes Enlighten Realtime Global Illumination several frames to propagate changes to indirect lighting throughout the Scene.
Enlighten リアルタイム GI を有効にすると、ライトプローブ の動作が変わることに注意してください。
ランタイムのシーンライティングの変化に対応するため。ランタイムに反復的にライトをサンプリングします。
シーンでリアルタイム GI を無効にすると、ライトプローブはベイクしたライティングデータのみを使用します。つまり、ランタイムのシーンのライティングの変更に対応しません。
ライトが影も生成する場合、シーンの動的と静的ゲームオブジェクトの両方がライトの シャドウマップ に描画されます。静的ゲームオブジェクトと動的ゲームオブジェクトの両方の マテリアルシェーダー はこのシャドウマップをサンプリングして、これらのゲームオブジェクトが互いにリアルタイムの影を作るようにします。 Shadow Distance 設定は、影がフェードアウトし始めて完全に消えるまでの最大距離を決定します。これは、パフォーマンスと画質に影響します。
Enlighten リアルタイムグローバルイルミネーションの結果には、シーンが非常に小さい場合を除き、ソフトシャドウも含まれます。これらの影は、通常、ライトマッピングで実現できるものよりも粗い粒度です。
Shadow Distance の設定を変更するには、Edit > Project Settings > Quality > Shadows の順に移動します。
Enlighten リアルタイムグローバルイルミネーションは、一揃いのライトマップを使用して、リアルタイムの間接バウンスを保存します。このため、ベイクしたグローバルイルミネーションと一緒に使用する場合でも、Enlighten リアルタイムグローバルイルミネーションを有効にするとメモリ要件が増加します。
Enlighten リアルタイムグローバルイルミネーションを使用すると、ライトマップとライトプローブを余分にサンプリングするため、ライティング生成に必要なシェーダー計算の回数も増えます。
Enlighten リアルタイム GI がシーンのライティングの変化にすばやく反応しない場合は、この問題に対処する方法がいくつかあります。