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 リアルタイムグローバルイルミネーションは、シーンを小さなサーフェスパッチに分割し、これらのパッチがお互いにどの程度見えるかを決定します。ランタイムに、Enlighten リアルタイムグローバルイルミネーションは、この事前に計算された可視性の情報を使って、リアルタイムのライトがシーンでどのように跳ね返るかを近似し、結果を一揃いのライトマップに保存し、これらのライトマップを使ってシーンに間接照明を適用します。 ライトマップの更新は計算量が多いので、いくつかのフレームに分割して処理されます。Enlighten リアルタイムグローバルイルミネーションは、間接照明の変更をシーン全体に伝えるのに、数フレームかかります。
Enlighten リアルタイム GI を有効にすると、ライトプローブ の動作が変わることに注意してください。
ランタイムのシーンライティングの変化に対応するため。ランタイムに反復的にライトをサンプリングします。
シーンでリアルタイム GI を無効にすると、ライトプローブはベイクしたライティングデータのみを使用します。つまり、ランタイムのシーンのライティングの変更に対応しません。
ライトが影も生成する場合、シーンの動的と静的ゲームオブジェクトの両方がライトの シャドウマップ に描画されます。静的ゲームオブジェクトと動的ゲームオブジェクトの両方の マテリアルシェーダー はこのシャドウマップをサンプリングして、これらのゲームオブジェクトが互いにリアルタイムの影を作るようにします。 Shadow Distance 設定は、影がフェードアウトし始めて完全に消えるまでの最大距離を決定します。これは、パフォーマンスと画質に影響します。
Enlighten リアルタイムグローバルイルミネーションの結果には、シーンが非常に小さい場合を除き、ソフトシャドウも含まれます。これらの影は、通常、ライトマッピングで実現できるものよりも粗い粒度です。
Shadow Distance の設定を変更するには、Edit > Project Settings > Quality > Shadows の順に移動します。
Enlighten リアルタイムグローバルイルミネーションは、一揃いのライトマップを使用して、リアルタイムの間接バウンスを保存します。このため、ベイクしたグローバルイルミネーションと一緒に使用する場合でも、Enlighten リアルタイムグローバルイルミネーションを有効にするとメモリ要件が増加します。
Enlighten リアルタイムグローバルイルミネーションを使用すると、ライトマップとライトプローブを余分にサンプリングするため、ライティング生成に必要なシェーダー計算の回数も増えます。
Enlighten リアルタイム GI がシーンのライティングの変化にすばやく反応しない場合は、この問題に対処する方法がいくつかあります。
Unity は、自動的に アンビエントプローブ と デフォルトのリフレクションプローブ を生成することで、環境ライティングがデフォルトでシーンとその中のゲームオブジェクトに影響を与えるようにします。
手動作成のライトマップとライトプローブがないシーンやゲームオブジェクトで、ライティング結果への環境ライティングの寄与を無効にするには、デフォルトのリフレクションプローブとアンビエントプローブを無効化します。詳細は SkyManager の無効化 を参照してください。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.