プログレッシブライトマッパー

公式サイト:

プログレッシブライトマッパー | Unity マニュアル [公式]

概要

参考:

開発中のプログレッシブライトマッパーのご紹介 | Unity Technologies Blog [公式]

プログレッシブライトマッパー 2019 (SangYun Yi) – SlideShare

導入

参考:

Progressive Lightmapper – 確認までに長い時間を要求するライトのベイクを、素早く確認する | テラシュールブログ

設定

  • Prioritize Viewビューに表示されている範囲を優先的に計算する。
  • Multiple Importance Sampling環境光のサンプリングに重み付けを行う。通常は収束が早くなるが、特定の条件でノイズが増える場合がある。(デフォルト無効)
  • Direct Samples直接光をサンプルするために各テクセルから投影されるレイの数 (デフォルト32)
  • Indirect Samples間接光をサンプルするために各テクセルから投影されるレイの数。屋外のシーンでは 100 程度で十分。Emission を使用した屋内シーンでは大きな値が必要。(デフォルト500)
  • Environment Samples環境光をサンプルするために各テクセルから投影されるレイの数 (デフォルト500)
  • Light Probe Sample Multiplierライトプローブのサンプル数に係数を掛ける。プロジェクトの設定で「Editor > Graphics > Use legacy Light Probes sample counts」 (従来のライトプローブサンプルカウントを使用する) を無効にした場合に使用される。(デフォルト4)
  • Bounces間接光の反射回数を指定する。通常は 2 で十分。一部の屋内シーンで多くのバウンスが必要となる場合がある。(デフォルト2)
  • Filteringノイズ除去フィルターの設定
    • Noneノイズ除去を使用しない。
    • Autoプラットフォーム毎に定義されたプリセットを使用する。OptiX が使用できる場合は半径が 1 テクセルのガウシアンフィルターを適用する。OptiX が使用できない場合は、直接光 1 テクセル、間接光 5 テクセル、アンビエントオクルージョン 2 テクセルの半径のガウシアンフィルターを適用する。
    • Advancedノイズ除去フィルターの設定を手動で構成する。
      • Direct Denoiser直接光の計算で使用するノイズ除去フィルター (OptiX / OpenImageDenoise / Radeon Pro / None)
      • Direct FilterGaussian / A-Trous / None
        • Radiusガウシアンフィルターの半径 (単位テクセル/デフォルト1)
        • SigmaA-Trous フィルターのシグマ (単位シグマ/デフォルト0.5)
      • Indirect Denoiser間接光の計算で使用するノイズ除去フィルター (OptiX / OpenImageDenoise / Radeon Pro / None)
      • Indirect FilterGaussian / A-Trous / None
        • Radiusガウシアンフィルターの半径 (単位テクセル/デフォルト5)
        • SigmaA-Trous フィルターのシグマ (単位シグマ/デフォルト2)
      • Ambient Occlusion Denoiser
      • Ambient Occlusion Filter
        • Radiusガウシアンフィルターの半径 (単位テクセル/デフォルト2)
        • SigmaA-Trous フィルターのシグマ (単位シグマ/デフォルト1)
  • Indirect Resolution間接光をサンプルする解像度 (単位単位距離当たりのテクセル数/デフォルト2)
  • Lightmap Resolutionライトマップの解像度 (単位距離当たりのテクセル数デフォルト40)
  • Lightmap Paddingライトマップに設ける隙間 (単位テクセル/デフォルト2)
  • Lightmap Sizeライトマップのサイズ (デフォルト1024)
  • Compress Lightmapsライトマップテクスチャを圧縮する。
  • Ambient Occulusionアンビエントオクルージョンの計算を行う。(計算負荷が高い)
    • Max Distanceオブジェクト間の距離が指定した値より小さい場合にアンビエントオクルージョンを生成する。0 を指定すると無限に長いレイが投影される。(デフォルト1)
    • Indirect Contribution間接光の影響度を 010 の間で指定する。(デフォルト1)
    • Direct Contribution直接光の影響度を 010 の間で指定する。(デフォルト0)
  • Directional Mode
    • Non-Directional単一のライトマップに全ての計算結果を格納する。
    • DirectionalMain Directional Light の方向を格納するライトマップを生成する。
  • Indirect Intensity間接光の影響度を 05 の間で指定する。(デフォルト1)
  • Albedo Boostマテリアル表面での反射光の強さを 110 の間で指定する。1 を指定した場合に物理的に正確な反射となる。(デフォルト1)
  • Lightmap Parametersライトマップパラメーターアセットを指定する。(デフォルトDefault-Medium)
ベイク

ライトマップをベイク中は完了までの予定時間 (ETA/Estimated Time of Arrival) が表示される。

参考:

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

室内シーンのライティング調整 | Shade3D チュートリアル

プログレッシブライトマッパー | Unity マニュアル [公式]

ライトマッピング – はじめに | Unity 2018.4 マニュアル [公式]

プログレッシブ CPU ライトマッパー | Unity 2018.4 マニュアル [公式]

GPU ライトマッパー

GPU 版の制限 (2018.3 ~)
  • 両面グローバルイルミネーションが無効 → 全てのジオメトリが片面のみと仮定して計算される。(2019.1 以降でサポート)
  • 影の投影は常に行われる → Cast Shadows / Receive Shadows の設定は無視される。(2019.1 以降でサポート)
  • LOD が設定されたオブジェクトではベイク済みライトマップは適用できない。(2020.1.0a20 以降でサポート)
  • A-Trous フィルタリングは無効 → ガウシアンフィルタリングが使用される。(2020.1a15 以降でサポート)
  • サブメッシュの複数マテリアルは考慮されない → ライトマッパーは最初のサブメッシュのマテリアルのみを用いてライトマップのベイクを実行する。(2019.3 以降でサポート)

参考:

Progressive Lightmapper の GPU Acceleration でライトマップのベイクが爆速に | テラシュールブログ

プログレッシブ GPU ライトマッパー (プレビュー版) | Unity 2019.4 マニュアル [公式]

プログレッシブ GPU ライトマッパー (プレビュー版) | Unity 2018.4 マニュアル [公式]

GPU プログレッシブライトマッパー | Unity [公式]

Progressive GPU Lightmapper Preview | Unity Forum

デノイズ

参考:

Denoise を使用してライトマップのベイク時間を劇的に抑える | テラシュールブログ

指向性モード (Directional Mode)

「Directional Mode」を Directional に設定すると、ライトマップの生成時にノーマルマップを考慮する。ライトマップの容量は2倍になり、ベイク時間が延び、実行時の描画負荷も大きくなる。

設定
  • Non-Directional
  • Directional
複数シーン

「Directional Mode」で Directional を使用する場合、複数シーンのロード時には全てのシーンが Directional として設定されていなければならない。

参考:

Directional Mode | LIGHT11

指向性モード | Unity マニュアル [公式]

使用する GPU を指定する

Unity 2020 以降の場合
  1. 「ライティング」 (Lighting) ウィンドウを開く。
  2. 「Workflow Settings > GPU Baking Device」で使用する GPU を選択する。
Unity 2018 / 2019 の場合
  1. 使用したい GPU のプラットフォームとデバイス番号を調べる。Unity エディターのログ (C:\Users\[User Name]\AppData\Local\Unity\Editor\Editor.log) を開いて「Listing OpenCL device(s)」が出力された箇所を見つけ、DEVICE_NAME = ... の欄が対象のグラフィックスカードとなっている項目の * OpenCL platform x, device yxy の数字をメモする。
  2. Unity Hub でプロジェクト項目の右端にある縦に連なった3点ドットアイコン をクリックし、「詳細なプロジェクト設定」を開く。Unity Hub 3.x の場合は、3点ドットアイコン をクリックし、メニューから「コマンドライン引数を加える」を選択して「コマンドライン引数」ダイアログを開く。
  3. 追加のコマンドライン引数として -OpenCL-PlatformAndDeviceIndices x y の形式でプラットフォームとデバイス番号を指定する。

参考:

Unity 2018 で VRChat ワールドを GPU ベイクしてみた – Qiita

どの GPU をライトマッパーに使用するかの設定 | Unity 2018.4 マニュアル [公式]

プログレッシブ GPU ライトマッパー (プレビュー版) | Unity マニュアル [公式]

The Progressive GPU Lightmapper (Preview) | Unity Manual [Official]

直接光の影

直接光の影をベイクする場合は、「混合ライティング」 (Mixed Lighting) の「ライティングモード」 (Lighting Mode) を、シャドウマスク (Shadowmask) または 減法 (Subtructive) に設定する。

直接光による影が粗くならないように、「Direct Samples」の値を 1632 程度に設定する。「Lightmap Resolution」を大きくしてはっきりとした影をベイクする場合、ある程度のサンプル数が必要となる。

参考:

Direct Samples | LIGHT11

ノイズ対策

室内で隙間から光が差すシーンなど、レイトレーシングでノイズが発生しやすい状況でライトマップを生成する場合、「Indirect Samples」を 128512 程度に大きくする必要がある。屋外の明るいシーンなどでは、816 程度で十分である。

参考:

Indirect Samples | LIGHT11

パストレーシングでノイズが生まれる原因/生まれやすいケース | LIGHT11

アンビエントオクルージョン (Ambient Occlusion / AO)

屋外の大規模シーンなどで、「Lightmap Resolution」が 15 程度の場合は、ほとんど効果がないので無効にしておいてよい。

設定
  • Max Distance
  • Indirect Contribution
  • Direct Contribution

参考:

Ambient Occlusion | LIGHT11

アンビエントオクルージョン | Unity 2020.3 マニュアル [公式]

チュートリアル

→ 「Lighting Optimization with Precomputed Realtime GI

入手:

Lighting Optimisation Tutorial | Unity Asset Store [Official]

参考:

7.5時間を約3分に/ライトマップのベイク時間を短縮する為のチュートリアル | テラシュールブログ

Lighting Optimization with Precomputed Realtime GI | Unity Learn [Official]

Tips

参考:

プログレッシブライトマッパーの最適化に役立つ8つのヒント | Unity for Pro

ベイク失敗例 | urebox

資料

プログレッシブライトマッパー 2019 (SangYun Yi) – SlideShare

プログレッシブライトマッパーの真価を発揮する秘訣 (Ciro Continisio) – SlideShare

Lightmapping for Beginners (Jennifer Nordwall) – SlideShare

Progressive Lightmapper: An Introduction to Lightmapping – SlideShare

チュートリアル

#1 リアルタイムライト

#2 ライトのベイク

Unity 2018.3b3 Progressive GPU Lightmapper (Preview)

In Development – the Progressive Lightmapper

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

コメントを残す

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

Protected by reCAPTCHA