次の項目は別ページに分割しました。
関連ページ:
グローバルイルミネーション
メッシュのジオメトリ及びシーンのライティングにより事前計算した情報に基づいて、直接光あるいは間接光による環境の照明効果を描画する。照明の変化をリアルタイムに反映する「リアルタイム GI」と、ベイクした照明効果をオブジェクトのライティングに反映させる「ベイク済み GI」の各モードを必要に応じて切り替えることができる。高品質かつ高パフォーマンスなリアルタイム描画を実現するためには、グローバルイルミネーションを有効にして各パラメータを綿密に調整する必要がある。
リアルタイム GI
Enlighten を使用してリアルタイムに GI の影響を計算する。「ライティング」 (Lighting) ウィンドウの「シーン」 (Scene) タブで、「リアルタイムライティング > リアルタイムグローバルイルミネーション」 (Realtime Lighting > Realtime Global Illumination) を有効にする。
**DEPRECATED**
Enlighten が廃止されるため、リアルタイム GI も廃止される。
※廃止予定であったが代替手段がすぐに用意されず、Unity 2024 LTS まではサポートが予定されている。
ベイク済み GI
「ライティング」 (Lighting) ウィンドウの「シーン」 (Scene) タブで、「混合ライティング > ベイクしたグローバルイルミネーション」 (Mixed Lighting > Baked Global Illumination) を有効にする。
公式サイト:
グローバルイルミネーション | Unity 2018.4 マニュアル [公式]
概要
参考:
Global Illumination | Catlike Coding
導入
参考:
グローバルイルミネーション基礎知識/STYLY への反映方法 | STYLY
小林様にライティングについてご教示頂きました | ウーパの手習い
使い方
手順
- ベイクするモデルのインポート設定で、必要に応じて「Generate Lightmap UVs」を有効にしておく。
- ベイク対象のオブジェクト (環境モデルなど動かないオブジェクト) を全て選択して、「Static」に設定する。または、「Contribute GI」を有効にする。
- ベイク対象のオブジェクトで、必要に応じて「Scale in Lightmap」の大きさを調整する。
- GI に使用するライトのモードを、「Mixed」または「Baked」に設定する。
- シーンのライティング設定で、「Mixed Lighting > Baked Global Illumination」を有効にし、「Lighting Mode」を設定する。
- 必要に応じて「Lightmapping Setting」で各種パラメータの値を調整し、「Generate Lighting」を実行する。
設定
ドキュメント:
Lighting ウィンドウ | Unity マニュアル [公式]
参考:
室内シーンのライティング調整 | Shade3D チュートリアル
Lightmap UVs
継ぎ目の縫合 (Stitch Seams)
ライトマップの継ぎ目が目立つのを解消したい場合は、ゲームオブジェクトの Mesh Renderer コンポーネントで、「Lighting > Lightmap Settings > Stitch Seams」を有効にする。(プログレッシブライトマッパーで使用できる。)
Generate Lightmap UVs
- Hard Angle: 三角ポリゴンの成す角度が指定した角度より大きい (鋭い) 場合にハードエッジ (ライトマップ UV の継ぎ目) として扱う。
180
度に設定すると全てのエッジを滑らかにする。(デフォルト:88
度) - Pack Margin: ライトマップをパッキングする際のマージンを指定する。(デフォルト:
4
ピクセル) - Angle Error: UV 展開において許容する角度の歪みを指定する。(デフォルト:
8
%) - Area Error: UV 展開において許容する面積変化の比率を指定する。(デフォルト:
15
%)
ドキュメント:
ライトマップ UV | Unity 2020.3 マニュアル [公式]
ライトマップ UV の生成 | Unity 2020.3 マニュアル [公式]
UV の重複 | Unity 2020.3 マニュアル [公式]
ライトマップの継ぎ目の縫合 | Unity 2020.3 マニュアル [公式]
参考:
Generate Lightmap UVs で綺麗になるか? | ウーパの手習い
Generate Lightmap UVs On/Off の考察 | ウーパの手習い
ライトをベイクした結果が汚い (Unity 5) | おもちゃラボ
ライトマップ用 UV の作り方 (UV2) | バーチャルマーケット2021
UV の働きを検証する | Tsumiki Tech Times
Lightmap で使用される UV について (Unity 5) | ユニティ・テクノロジーズ・ジャパン株式会社 [公式]
ライトモード (Light Mode)
- リアルタイム (Realtime)
- 混合 (Mixed)
- ベイク (Baked)
ドキュメント:
ライティングモード | Unity 2018.4 マニュアル [公式]
リアルタイムライティング | Unity 2018.4 マニュアル [公式]
混合ライティング | Unity 2018.4 マニュアル [公式]
ベイクしたライティング | Unity 2018.4 マニュアル [公式]
事前計算
- Realtime GI
- Probes
- Ambient Probes
- Reflection Probes
- Baked GI
ドキュメント:
事前計算されたライティングの使用 | Unity マニュアル [公式]
Generating Lighting Data | Unity マニュアル [公式]
参考:
リアルタイムライトが Static なオブジェクトに対し、妙に強く反映される問題の解決法 | テラシュールブログ
Precomputed Realtime GI の事前計算はいつなのかという話 | 土屋つかさの技術ブログは今か無しか
リアルタイムライティング
- カメラから「シャドウディスタンス」で指定された距離より近い範囲で影を生成する。
- リアルタイム GI によって間接光の影響を反映させる。(負荷が高い)
ドキュメント:
リアルタイムライティング | Unity 2018.4 マニュアル [公式]
参考:
Unity の Realtime GI を試してみる/Emission のオンオフをしよう – Qiita
混合ライティング (Mixed Lighting)
- ベイク済み間接光 (Baked Indirect): 間接光としてベイク済み間接光を使用し、直接光はリアルタイムに計算する。アンビエントオクルージョンのようなぼやけた陰影のみがベイクされる。
- 減法混色 (Subtractive): 静的オブジェクトに対して直接光をテクスチャにベイクする。動的オブジェクトの直接光はリアルタイムに計算する。静的オブジェクトの影と動的オブジェクトの影が異なる色調で描画されたり、構造物の影の中でキャラクターの影が描画され、二重の影になったりして違和感が生じる場合がある。
- シャドウマスク (Shadowmask): 「シャドウディスタンス」 (Shadow Distance) の距離より近い範囲はリアルタイムに直接光を計算し、範囲外の遠い場所はベイク済みのシャドウを使用する。(負荷が高い)
ライティングモード | ベイク済み 間接光 (Baked Indirect) |
シャドウマスク (Shadowmask) |
減法混色 (Subtractive) |
|
---|---|---|---|---|
動的ゲームオブジェクト | 直接 ライティング |
リアルタイム | リアルタイム | リアルタイム |
間接 ライティング |
ライトプローブ | ライトプローブ | ライトプローブ | |
動的オブジェクトが投影する影 | シャドウマップ | シャドウマップ | シャドウマップ | |
静的オブジェクトが投影する影 | シャドウマップ | シャドウマップ/ ライトプローブ |
ライトプローブ | |
静的ゲームオブジェクト | 直接 ライティング |
リアルタイム | リアルタイム | ライトマップ |
間接 ライティング |
ライトマップ | ライトマップ | ライトマップ | |
動的オブジェクトが投影する影 | シャドウマップ | シャドウマップ | シャドウマップ | |
静的オブジェクトが投影する影 | シャドウマップ | シャドウマップ/ シャドウマスク |
ライトマップ |
ドキュメント:
混合ライティング | Unity 2018.4 マニュアル [公式]
Baked Indirect – ライティングモード | Unity マニュアル [公式]
Shadowmask – ライティングモード | Unity 2020.3 マニュアル [公式]
ライティングモード | Unity 2018.4 マニュアル [公式]
参考:
表現方法から見た実践的なライトとベイクの設定方法 | LIGHT11
ライトモードを Mixed にした時の設定について | LIGHT11
ベイクした影とリアルタイムな影を混ぜる新しい幾つかの手法と、その他諸々 | テラシュールブログ
ベイク済み間接光 (Baked Indirect)
ドキュメント:
Baked Indirect – ライティングモード | Unity マニュアル [公式]
参考:
Static lighting in Unity 2018.3 – polycount
減法混色 (Subtractive)
特徴
- 直接光をベイクする。(静的オブジェクトでランタイムに直接光を計算しない。)
- 静的オブジェクトはスペキュラーを表示しない。(視点に依存するため事前計算ができない。)
- 静的オブジェクト上に落ちる動的オブジェクトの影は、主なディレクショナルライト (Main Directional Light) に限られる。
動的オブジェクト
- リアルタイム直接光
- リアルタイムシャドウ (Main Directional Light)
- ライトプローブ (Light Probe) による間接光及びシャドウ
静的オブジェクト
- ライトマップによる直接光、間接光、静的なシャドウ
- 動的オブジェクトのシャドウ (Main Directional Light)
設定
- リアルタイムのシャドウカラー (Realtime Shadow Color):リアルタイムに計算されるシャドウの色
ドキュメント:
Subtractive | Unity 2018.4 マニュアル [公式]
ライトマップをベイクする (Lightmap)
参考:
表現方法から見た実践的なライトとベイクの設定方法 | LIGHT11
Lightmap を使用して雰囲気のある影を作成 | PointCloudConsortium
Unity 2018 で Lightmap を綺麗に Bake する! | 黒猫洋品店
ライトマッピング/ライトマッパー (Lightmapper)
- プログレッシブライトマッパー
- CPU
- GPU (プレビュー)
- Enlighten (非推奨)
ドキュメント:
シャドウマスク (Shadowmask)
- シャドウマスク (Shadowmask):静的オブジェクトは常にベイクした影を使用する。
- 距離シャドウマスク (Distance Shadowmask):カメラから「シャドウディスタンス」 (Shadow Distance) で指定した距離より近い範囲ではリアルタイムの影を計算し、それより遠い範囲ではベイクした影を使用する。(デフォルト)
ドキュメント:
Shadowmask – ライティングモード | Unity 2020.3 マニュアル [公式]
Shadowmask Mode – Quality | Unity マニュアル [公式]
参考:
リアルタイムな影とベイクした影を混ぜる、Shadow Mask 特集号 | テラシュールブログ
Shadowmask and Baked Indirect Modes | Kemal Akay
指向性モード (Directional Modes)
- Directional:光源の指向性を考慮して反射を計算する。余分にテクスチャメモリを使用し、計算量も多くなるためシェーディング負荷が高い。
- Non-Directional:ノーマルマップを使用せず均一な拡散を仮定するために計算負荷は低いが、面はフラットに表現される。
ドキュメント:
指向性のモード | Unity 2018.4 マニュアル [公式]
ライトマップパラメーター (Lightmap Parameters)
Realtime GI
- Resolution: 相対的な解像度/シーンの解像度に係数を掛けて最終的なテクセル密度を決定する (デフォルト:
1.0
) - Cluster Resolution: クラスター解像度 (範囲:
0.1
~1.0
/デフォルト:0.5
) - Irradiance Budget: 放射照度の量を指定する/各テクセルにおける照度計算の精度に影響する/値を大きくすると実行時のメモリ使用量、CPU 負荷が大きくなり、また照度の伝播速度が遅くなる (範囲:32 ~ 2048/デフォルト:
128
) - Irradiance Quality: 照度計算に用いるレイの数を指定する/事前の計算時間及びライトマップの品質にのみ影響し、実行時の負荷には影響しない (範囲:
512
~131072
/デフォルト:8192
) - Modelling Tolerance: レイが通り抜ける隙間の大きさを指定する/オブジェクトの接触面で、周囲にアーティファクトが生じる場合に調整する (単位:m/デフォルト:
0.01
) - Edge Stitching: UV チャートの継ぎ目を結合する (デフォルト:
有効
) - Is Transparent: サーフェスを透明として扱う (デフォルト:
無効
) - System Tag: ライトマップを共有するグループの ID を指定する (デフォルト:
-1
)
Baked GI
- Blur Radius: ぼかしフィルターの半径 (Enlighten でのみ有効/デフォルト:
2
) - Anti-aliasing Samples: アンチエイリアスの度合い (Enlighten)/スーパーサンプリングする回数 (プログレッシブライトマッパー/デフォルト:
8
) - Direct Light Quality: 直接光を計算するレイの数 (Enlighten でのみ有効/デフォルト:
64
) - Pushoff: サーフェスを押し出す距離/値を大きくすると、細かいアンビエントオクルージョンなどが無効となる/アーティファクトの除去に用いる (範囲:
0.0
~1.0
/デフォルト:0.0001
) - Baked Tag: ライトマップを共有するグループの ID を指定する (デフォルト:
-1
) - Limit Lightmap Count: 同じ設定に対してライトマップを分割する最大数 (プログレッシブライトマッパーでのみ有効/デフォルト:
無効
)
Baked AO
- Quality: アンビエントオクルージョンの計算に用いるレイの数 (デフォルト:
256
) - Anti-aliasing Samples: アンチエイリアスの計算に用いるサンプル数 (デフォルト:
16
)
General GI
- Backface Tolerance: 裏面公差/表面からのレイが指定した割合より多い場合に、テクセルにおける照度計算を有効と見なす (デフォルト:
0.9
)
ドキュメント:
Lightmap Parameters アセット | Unity 2020.3 マニュアル [公式]
ライトマップパラメーター | Unity 2018.4 マニュアル [公式]
テレイン (Terrain)
Basic Terrain
- Cast Shadows: 影の生成方法を指定する
- Off: 影を生成しない
- On: 影を生成する
- Two Sided: 両方向に影を生成する (Enlighten および プログレッシブライトマッパーは両面シャドウをサポートしない)
- Shadows Only: 影のみを生成する/テレイン自体は描画されない
- Reflection Probes: リフレクションプローブの適用方法を指定する
- Off: リフレクションプローブを使わない (リフレクションにスカイボックスを使用する)
- Blend Probes: リフレクションプローブを有効にする。プローブ間でのみブレンドを適用する。近くにリフレクションプローブがない場合は、デフォルトのリフレクションが適用される。デフォルトのリフレクションとプローブの間でブレンドは適用されない。
- Blend Probes and Skybox: リフレクションプローブを有効にする。プローブ間またはプローブとデフォルトのリフレクションの間でブレンドが適用される。
- Simple: リフレクションプローブを有効にする。プローブ間でブレンドは適用されない。
Tree and Detail Objects
- Bake Light Probes for Trees: 各樹木の位置に内部的なライトプローブを生成し、樹木のライティングに適用する。内部的なプローブは、シーン内の他のレンダラーには影響しない。このオプションが無効であっても、樹木は通常のライトプローブグループに影響される。このオプションは、樹木のプロトタイププレハブが保持しているライトプローブを有効化するために用いる。
- Remove Light Probe Ringing: ライトプローブによるオーバーシュートを除去する。
Lighting
- Contribute Global Illumination: グローバルイルミネーションの計算に含める
- Receive Global Illumination: 「Contribute Global Illumination」が有効な場合、ライトマップを用いてグローバルイルミネーションが計算される。「Contribute Global Illumination」が有効な場合は、ライトプローブからグローバルイルミネーションの影響を受ける。
Lightmapping
- Scale in Lightmap: ライトマップ内の相対的な大きさを指定する。(デフォルト:
1.0
) - Lightmap Parameters
ドキュメント:
Terrain Settings | Unity 2020.3 マニュアル [公式]
参考:
GI (realtime or baked) on terrain… is anyone getting good results? – Unity Forum
資料
Unity のライティング機能のおさらい – SlideShare
より良い表現のためのライティング戦略 – SlideShare
フォーラム
Global Illumination | Unity Forum
ロードマップ
リンク:
Global Illumination | Unity Product Roadmap [Official]
チュートリアル
Advanced Global Illumination – Unity 5 (Unite 2015)
Sponza HDRP (Kristijonas Jalnionis)
ライセンス:
CC0 1.0 Universal
動画:
リポジトリ:
radishface/Sponza: HDRP Remaster of the Classic Sponza Scene – GitHub
参考:
Sponza HDRP | Kristijonas Jalnionis
H-Trace
Screen-Space Horizon-Based Tracing Algorithm
- Realtime GI
- Ambient Occlusion
- Single Pass
- HDRP
参考: