Unity はリアルタイム GI (グローバルイルミネーション) に Enlighten と呼ばれるミドルウェアを使用します。
デフォルトでは、リアルタイムライト はシーンへ直接ライティングしか与えません。シーンで リアルタイムグローバルイルミネーション を有効にすると、リアルタイムライトもシーンに間接ライティングを行います。
リアルタイム GI は、ゆっくりと変化し、シーンに大きな視覚的影響を与えるライト (空を横切る太陽の光や、閉じた廊下でゆっくりと脈打つライトなど) に役立ちます。リアルタイム GI は、パフォーマンスのコストと待ち時間がかかるため、急速に変化するライトや特殊効果を目的とするものではありません。
リアルタイム GI は、中間レベルからハイエンドの PC システムやコンソールをターゲットとしたゲームに適しています。一部のハイエンドモバイルデバイスでも十分この機能に適応するものもありますが、シーンを小さく、リアルタイムライトマップの解像度を低く保ち、システムリソースを節約する必要があります。
シーンでリアルタイム GI を使用するには、Lighting window を開き (Window > Rendering > Lighting)、Realtime Global Illumination を有効にします。
特定のライトで リアルタイム GI の効果を無効にするには Light ゲームオブジェクトを選択し、Light コンポーネントで _Indirect Multiplier___を 0 に設定します。つまり、ライトがシーンへ間接ライティングを行わないということです。
リアルタイム GI をまとめて無効にするには、Lighting ウィンドウを開き (Window > Rendering > Lighting)、Realtime Global Illumination のチェックを外します。
リアルタイム GI の使用に関する詳しい手順は、Unity チュートリアルの Precomputed Realtime GI を参照してください。
Unity エディターでは、Enlighten はシーンを小さなサーフェスパッチに分割し、これらのパッチが互いに見える度合いを決定します。ランタイムに、Enlighten はこの事前計算された可視性情報を使用して、シーン内でリアルタイムライトがどのように反射するかを概算し、結果を一群のライトマップに保存し、これらのライトマップを使用してシーンに間接ライティングを適用します。
ライトマップの更新は計算負荷が高いため、処理は複数のフレームに分割されます。言い換えると、Enlighten がシーンを通して間接ライティングに変更を伝播するには、2–3 フレームかかります。
リアルタイム GI を有効にすると、ライトプローブ の動作が異なることに注意してください。
シーンでリアルタイム GI を有効にすると、ライトプローブはランタイムにライティングを繰り返しサンプリングします。つまり、シーンライティングのランタイムの変更に対応します。
シーンでリアルタイム GI を無効にすると、ライトプローブはベイクしたライティングデータのみを使用します。つまり、シーンライティングのランタイムの変更に対応しません。
また、ライトが影を作る場合、Unity はシーン内の動的ゲームオブジェクトと静的ゲームオブジェクトの両方をライトの シャドウマップ にレンダリングします。静的ゲームオブジェクトと動的ゲームオブジェクトの両方の マテリアルシェーダー はこのシャドウマップをサンプリングし、リアルタイムのシャドウを互いに投影します。Shadow Distance (Edit > Project Settings の順に選択し、Quality カテゴリを選択し、Shadows セクションに移動) は、シャドウがフェードアウトして完全に消える最大距離を制御し、パフォーマンスと画質に影響します。
リアルタイム GI でもソフトシャドウが生成されますが、シーンが非常に小さい場合を除いて、通常、ライトマッピングで得られるよりも粗い粒子になります。
Enlighten は追加の一群のライトマップを使用してリアルタイムの間接の反射を格納するため、リアルタイム GI はメモリ要件を増加させる可能性があります。
Enlighten は追加の一群のライトマップとプローブをサンプリングするため、リアルタイム GI はシェーダー計算を増加させます。
リアルタイム GI がシーンのライティングの変化にすばやく反応しない場合は、この問題に対処する方法がいくつかあります。
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.