グローバルイルミネーション

メッシュのジオメトリ及びシーンのライティングにより事前計算した情報に基づいて、直接光あるいは間接光による環境の照明効果を描画する。照明の変化をリアルタイムに反映する「リアルタイム 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 マニュアル [公式]

概要

参考:

グローバルイルミネーションの基礎知識 | LIGHT11

Global Illumination | Catlike Coding

導入

参考:

入門ライティング設定!- Qiita

ライティングを軽く触ってみた – Qiita

グローバルイルミネーション基礎知識/STYLY への反映方法 | STYLY

小林様にライティングについてご教示頂きました | ウーパの手習い

使い方

手順
  1. ベイクするモデルのインポート設定で、必要に応じて「Generate Lightmap UVs」を有効にしておく。
  2. ベイク対象のオブジェクト (環境モデルなど動かないオブジェクト) を全て選択して、「Static」に設定する。または、「Contribute GI」を有効にする。
  3. ベイク対象のオブジェクトで、必要に応じて「Scale in Lightmap」の大きさを調整する。
  4. GI に使用するライトのモードを、「Mixed」または「Baked」に設定する。
  5. シーンのライティング設定で、「Mixed Lighting > Baked Global Illumination」を有効にし、「Lighting Mode」を設定する。
  6. 必要に応じて「Lightmapping Setting」で各種パラメータの値を調整し、「Generate Lighting」を実行する。

設定

ドキュメント:

Lighting ウィンドウ | Unity マニュアル [公式]

参考:

ライトマップ設定の各項目の説明 | LIGHT11

室内シーンのライティング調整 | 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 Overlap の対処法 | おねむゲーマーの備忘録

UV の働きを検証する | Tsumiki Tech Times

Lightmap で使用される UV について (Unity 5) | ユニティ・テクノロジーズ・ジャパン株式会社 [公式]

ライトモード (Light Mode)

  • リアルタイム (Realtime)
  • 混合 (Mixed)
  • ベイク (Baked)

ドキュメント:

ライトモード | Unity マニュアル [公式]

ライティングモード | 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 マニュアル [公式]

ライティングモード | 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 する! | 黒猫洋品店

ライトのベイク方法簡易まとめ | mi

ライトマッピング/ライトマッパー (Lightmapper)

  • プログレッシブライトマッパー
    • CPU
    • GPU (プレビュー)
  • Enlighten (非推奨)
こちらのページを参照

ドキュメント:

ライトマッピング | Unity マニュアル [公式]

シャドウマスク (Shadowmask)

  • シャドウマスク (Shadowmask)静的オブジェクトは常にベイクした影を使用する。
  • 距離シャドウマスク (Distance Shadowmask)カメラから「シャドウディスタンス」 (Shadow Distance) で指定した距離より近い範囲ではリアルタイムの影を計算し、それより遠い範囲ではベイクした影を使用する。(デフォルト)
こちらのページを参照

ドキュメント:

Shadowmask – ライティングモード | Unity 2020.3 マニュアル [公式]

Shadowmask Mode – Quality | Unity マニュアル [公式]

シャドウディスタンス | Unity マニュアル [公式]

参考:

リアルタイムな影とベイクした影を混ぜる、Shadow Mask 特集号 | テラシュールブログ

Shadow Masks | Catlike Coding

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.11.0/デフォルト0.5)
  • Irradiance Budget 放射照度の量を指定する/各テクセルにおける照度計算の精度に影響する/値を大きくすると実行時のメモリ使用量、CPU 負荷が大きくなり、また照度の伝播速度が遅くなる (範囲32 ~ 2048/デフォルト128)
  • Irradiance Quality 照度計算に用いるレイの数を指定する/事前の計算時間及びライトマップの品質にのみ影響し、実行時の負荷には影響しない (範囲512131072/デフォルト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.01.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

資料

光と影 (PDF) | しずおかアプリ部

Unity のライティング機能のおさらい – SlideShare

より良い表現のためのライティング戦略 – SlideShare

フォーラム

Global Illumination | Unity Forum

ロードマップ

リンク:

Global Illumination | Unity Product Roadmap [Official]

チュートリアル

Lightmap (西条)

Advanced Global Illumination – Unity 5 (Unite 2015)

Sponza HDRP (Kristijonas Jalnionis)

Sponza HDRP

ライセンス:

CC0 1.0 Universal CC0

動画:

Sponza HDRP

リポジトリ:

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

H-Trace

参考:

H-Trace: Global Illumination and Occlusion | Unity Forum

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA