Version: 2020.2
言語: 日本語
ライトマッピング
プログレッシブ GPU ライトマッパー (プレビュー版)

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

プログレッシブライトマッパーはパストレーシングに基づく高速のライトマッパーシステムで、エディターで段階的に更新されるベイクしたライトマップとライトプローブを提供します。これは、面積と角度の誤差が小さく重複しない UV を必要とし、チャート間に十分なパディングを必要とします。

プログレッシブライトマッパーは短い準備手順でジオメトリとインスタンスの更新を処理し、G バッファとチャートマスクを生成します。その後、すぐに出力して経時的に段階的に精錬し、大幅に改善されたインタラクティブなライティングワークフローを可能にします。さらに、プログレッシブライトマッパーはベイクしている間に予定時間を提示するため、ベイク時間の予測がずっと容易になりました。

プログレッシブライトマッパーは、アップサンプリング手法や放射キャッシュやその他のグローバルデータ構造に頼ることなく、ライトマップの解像度 (個々のテクセルごとに) でグローバルイルミネーション (GI) をベイクします。これによりプログレッシブマッパーはしっかりと安定し、ライトマップの選択した部分をベイクすることができます。これにより、シーンをテストしイテレーションを行う早さが増します。

In Development - Progressive Lightmapper (YouTube) のビデオは、インタラクティブなワークフローを詳しく紹介しています。

プログレッシブ CPU ライトマッパーとプログレッシブ GPU ライトマッパー (プレビュー)

プログレッシブライトマッパーに対して 2 つのバックエンドから選択できます。プログレッシブ CPU ライトマッパーのバックエンドは、コンピューターの CPU とシステム RAM を使用するプログレッシブライトマッパーのバックエンドです。プログレッシブ GPU ライトマッパーは、コンピューターの GPU と VRAM を使用するプログレッシブライトマッパーのバックエンドです。

プログレッシブ GPU ライトマッパーは開発中のプレビュー機能であり、変更される可能性があります。プログレッシブ GPU ライトマッパーバックエンドについては、プログレッシブ GPU ライトマッパー (プレビュー) を参照してください。

レンダリングパイプラインのサポート

  • ビルトインレンダーパイプラインはプログレッシブライトマッパーをサポートします。
  • ユニバーサルレンダーパイプライン (URP) はプログレッシブライトマッパーをサポートします。
  • HD レンダーパイプライン (HDRP) はプログレッシブライトマッパーをサポートします。

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

プログレッシブライトマッパーを使用するには、以下を行います。

  1. Window > Rendering > Lighting の順に選択します。
  2. Lightmapping Settings に移動します。
  3. LightmapperProgressive CPUProgressive GPU に設定します。

LightmapEditorSettingsLightmapping API を使用して、このウィンドウで使用可能な多くの機能をスクリプト経由で実行できます。

設定

項目 説明
Lightmapper シーンのライトマップの計算に使用する内部のライティングの計算ソフトウェアを指定します。オプションは以下の通りです。

Progressive CPU
Progressive GPU
Enlighten (Deprecated)

デフォルトは Progressive CPU です。
Prioritize View これを有効にすると、プログレッシブライトマッパーは、現在シーンビューに表示されているテクセルに変更を適用し、それから、ビューに表示されていないテクセルに変更を適用します。
Multiple Importance Sampling これを有効にすると、環境をサンプリングするのに多重重点的サンプリングを使用するかどうかを指定します。通常、これはライトマップを生成するときの収束を早めますが、ある低周波数環境ではノイズの多い結果になる可能性があります。この機能は、デフォルトでは無効になっています。
Direct Samples 各テクセルからのサンプル (パス) の数。この設定は、プログレッシブライトマッパーが直接ライティングの計算に使用するサンプル数を制御します。この値を大きくすると、ライトマップの質は向上しますが、ベイク処理に要する時間が長くなります。
Indirect Samples 各テクセルからのサンプル (パス) の数。この設定は、プログレッシブライトマッパーが間接ライティングの計算に使用するサンプル数を制御します。一部のシーン、特に屋外のシーンでは、100 サンプルで十分です。エミッシブジオメトリのある屋内シーンでは、望む結果が得られるまで値を増やします。
Environment Samples ライトマッパーが環境ライティングの計算に使用するサンプルの数を定義します。値を大きくするとライトマップの品質が向上しますが、ベイクの完了に必要な時間が長くなります。デフォルトでは 500 に設定されています。
Light Probe Sample Multiplier サンプル数の乗数としてライトプローブに使用するサンプル数を制御します。値を大きくすると、ライトプローブの品質が向上しますが、ベイクにより長く時間がかかります。この機能を使用可能にするには、Project Settings > Editor の順に移動し、Use legacy Light Probe sample counts (古いライトプローブのサンプル数を使用する) を無効にします。デフォルトの値は 4 です。
Bounces この値を使用して、パスを追跡するときの間接的な反射の数を指定します。大抵のシーンで 2 つの反射で十分です。室内の状況で、それよりも多く必要な場合があります。
Russian Roulette Start Bounce Russian Roulette is a technique that decreases the bake time by randomly terminating the light path.

Use this setting to define the first bounce that Russian Roulette path termination can disable. Choose 2 to ensure at least 1 bounce, 3 to ensure at least 2 bounces, and so on. Choose Never to disable Russian Roulette.

Note that shorter paths may increase lightmap noise.
Filtering プログレッシブライトマッパーがライトマップにポストプロセスをライトマップに適用して、ノイズを制限する方法を設定します。ライトマップのポストプロセスの場合、ライトマップは DirectIndirectAmbient Occlusion のターゲットに分割され、Unity はポストプロセスを個別に適用してから、それらを 1 つのライトマップに合成します。

- Direct: ライトからセンサー (通常はカメラ) に直接到達するライト。
- Indirect: ライトからセンサー (通常はカメラ) に間接的に到達するライト。これは、他のゲームオブジェクトに反射するライトに最も一般的に当てはまります。
- Ambient Occlusion: ライティングシステムが計算するアンビエントライト。
None ライトマップにフィルターやノイズ除去を使用しない場合に選択します。
Auto ライトマップのポストプロセスにプラットフォーム依存のプリセットを使用する場合に選択します。
開発マシンが OptiX (NVIDIA OptiX AI-Accelerated Denoiser を実行するための要件を満たす場合、プログレッシブライトマッパーは、すべてのターゲットに対して半径 1 テクセルの ガウシアン (Gaussian) フィルターを備えたノイズ除去を使用します。
開発マシンが OptiX を実行できない場合、プログレッシブライトマッパーは、Direct に 1 テクセル半径、Indirect に 5 テクセル半径、Ambient Occlusion に 2 テクセル半径の ガウシアンフィルターを使用します。
Advanced 各タイプのライトマップターゲットのオプションを手動で設定する場合に、Advanced を選択します。ターゲットのタイプは DirectIndirectAmbient Occlusion です。詳細については、以下の フィルタリングの詳細設定 を参照してください。
Indirect Resolution ライトマッパーが間接ライティングの計算に使用するサンプルの数を定義します。値を大きくするとライトマップの品質が向上しますが、ベイクの完了に必要な時間が長くなります。
Lightmap Resolution ライトマップに使用するユニットごとのテクセル数を指定します。この値を上げると、ライトマップの品質を向上させます。しかし、ライトマップをベイクする時間も長くなります。この値を 2 倍にすると、テクセル数は 4 倍になります (値はライトマップの高さと幅の両方に適用されるため)。 Lighting ウィンドウの下部にある統計エリアの Occupied texels 数を参照してください。
Lightmap Padding ベイクしたライトマップで別々の形状を分けるすき間 (テクセル単位) を特定します。デフォルト値は 2 です。
Lightmap Size 個々のゲームオブジェクトのテクスチャの離れた領域を合併する完全なライトマップテクスチャのサイズ (ピクセル)。デフォルト値は 1024。
Compress Lightmaps 圧縮ライトマップは、必要な保存スペースが少なく済みます。しかし、圧縮処理によって、テクスチャに不要な視覚的エフェクトが発生する場合があります。このチェックボックスを有効にすると、ライトマップを圧縮します。無効にすると、圧縮しません。デフォルトではチェックボックスは有効になっています。
Ambient Occlusion これを有効にすると、ベイクしたアンビエントオクルージョン のサーフェスの相対輝度を制御する一群の設定が表示されます。値を高くすると、覆われたエリアと完全に照らされるエリアのコントラストがより大きくなります。このプロパティは GI システムに計算された間接ライティングにのみ適用されます。この設定は、デフォルトで有効になっています。
Max Distance オブジェクトにオクルージョンを適用するかどうかを判断するために、レイを投射するかを決める値を設定します。大きな値を指定するとより長いレイが生成され、ライトマップにより多くの影を作ります。一方、小さい値では短いレイを生成し、オブジェクトが互いに非常に近い場合にのみ影を作ります。0 の値を指定すると、最大距離のない無限に長いレイが投射されます。デフォルト値は 1 です。
Indirect Contribution スライダーを使って、完成したライトマップで表示される間接光 (アンビエントライト、オブジェクトにバウンドしたライト、オブジェクトから放出されたライト) の輝度を 0 から 10 の間で増減します。デフォルト値は 1 です。1 より小さい値にすると強度が下り、 1 より大きくすると強度は上がります。
Direct Contribution スライダーを使って、最終的なライトマップで表示される直接光の輝度を 0 から 10 の間で増減します。デフォルト値は 0 です。この値を大きくすると、直接光に適用されるコントラストが強くなりります。
Directional Mode ライトマップが、オブジェクトのサーフェスの各ポイントに入ってくる主要なライトに関する情報を持つように設定することが可能です。詳しくは 指向性ライトマップ を参照してください。デフォルトモードは Directional です。
Directional Directional モードでは、主要な入射光の方向に関する情報を保存するために 2 番目のライトマップを生成します。これによって、ディフューズ法線でマッピングされたマテリアルを GI に使用できます。Directional モードでは追加のライトマップデータのために、およそ 2 倍のストレージスペースを必要とします。Unity は SM2.0 ハードウェア、または GLES2.0 を使用する場合は、指向性ライトマップをデコードできません。それらを使うと、指向性ではないライトマップにフォールバックします。
Non-directional Non-directional モードでは、入射ライトの主な向きを格納するために 2 番目のライトマップを生成する機能を無効にします。
Indirect Intensity スライダーを使って、リアルタイムおよびベイクしたライトマップに保存されている間接光の輝度を 0 から 5 の値で制御します。1を超える値は間接光の強度を増加し、1 未満の値は間接光の強度を減少します。
Albedo Boost このスライダーを使用して、サーフェス間で跳ね返るライトの量を 1 から 10 の値で制御します。これを行うために、Unity はシーンのマテリアルのアルベドを強化します。これを増やすと、間接光の計算のアルベド値が白の値に近くなります。デフォルト値の 1 は物理的に正確です。
Lightmap Parameters Unity は Lighting ウィンドウのプロパティに加え、ライトマッピングに一群の標準パラメーターを使用します。このプロパティのメニューから 2–3 のデフォルトが使用できます。しかし、Create New オプションを使って独自のライトマップパラメーターを作成することも可能です。詳細は ライトマップパラメーター を参照してください。このプロパティのデフォルトは Default-Medium です。

高度なフィルタリング設定

Filtering がAdvanced に設定されている場合に使用可能なFiltering設定。
FilteringAdvanced に設定されている場合に使用可能なFiltering設定。
設定 説明 
Advanced 各タイプのライトマップターゲットのオプションを手動で設定するには、Filtering を Advanced に設定します。ターゲットタイプは以下の通りです。

ライトからセンサー (通常はカメラ) に直接到達するライト。
- Indirect: ライトからセンサー (通常はカメラ) に間接的に到達するライト。これは、他のゲームオブジェクトに反射するライトに最も一般的に当てはまります。
- Ambient Occlusion: ライティングシステムが計算するアンビエントライト。
Denoiser ライトマップターゲットに使用するノイズ除去を選択します。オプションは以下の通りです。

Optix: NVIDIA Optix は、ベイク処理されたライトマップのノイズを削減する AI 加速ノイズ消去です。4GB 以上の VRAM かつ、ドライバーバージョン 390 以上の NVIDIA GPU が必要であり、Windows プラットフォームでのみサポートされます。
RadeonPro: RadeonPro は、ベイク処理されたライトマップのノイズを削減する AI 加速ノイズ消去です。4GB 以上の VRAM を備えた OpenCL 対応の GPU が必要です。
- OpenImageDenoise: Intel Open Image は、ベイク処理されたライトマップのノイズを削減する AI 加速デノイザーです。
- None: ノイズ消去を使用しません。
Filter ライトマップターゲットに使用するフィルターを選択します。
- Gaussian: ライトマップターゲットにガウシアンフィルターを使用します。ガウシアンフィルターは、ライトマップにバイラテラルガウシアンフィルターを適用します。これにより、ライトマップがぼやけ、目に見えるノイズが減少します。
- A-Trous: ライトマップターゲットに A-Trous フィルターを使用します。A-Trous フィルターは、ライトマップの目に見えるノイズを取り除き、ぼかしの量を最小限に抑えます。
- None*: ライトマップターゲットのすべてのフィルタリングを無効にします。
Radius このオプションは、FilterGaussian に設定されている場合にのみ使用できます。Radius 値を使用して、ガウシアンフィルターのカーネルの半径をテクセル単位で設定します。Radius を大きくすると、ぼかしの強さが増し認識できるノイズが減少しますが、ライティングのディテールが失われる場合があります。
Sigma このオプションは、FilterA-Trous に設定されている場合にのみ使用できます。Sigma の値を使用して、ディテールを維持する量やライティングをぼかす量を調整します。Sigma の値を高くするとぼかしの強さが増し、認識できるノイズが減少しますが、ライティングのディテールが失われる場合があります。

統計

Auto GenerateGenerate Lighting オプションの下にあるパネルには、以下を含むライトマッピングに関する統計情報が表示されます。

  • Unity が作成したライトマップの数
  • メモリ使用量: 現在のライトマッピングに必要なメモリ量。
  • Occupied Texels: ライトマップの UV 空間で占有されるテクセルの数。
  • Lightmaps in view: シーンビューのライトマップの数。
  • Lightmaps Not in view: 非表示のライトマップの数。
    • Converged: すべての計算が完了したライトマップの数。
    • Not Converged: ベイクがまだ進行中のライトマップの数。
  • Bake Performance: 1 秒あたりのレイの数。これが低い場合 (つまり、2 より小さい場合) は、一度にもっと多くのレイを処理するように設定やハードウェアを調整する必要があります。 

ベイク中

プログレッシブライトマッパーは、必要な場合に、進行中のベイクを監視し停止するためのオプションを提供します。

ETA

Unity がライトマップをベイクしている間に表示されるプログレスバーは、“完了までの予定時間” (ETA と表示されます) を提供します。これは、現在のベイクが完了するまでの推定時間 (秒) です。これにより、ベイク時間を予測することがより容易になり、現在のライティング設定でベイクする時間がどれだけかかるかがすぐにわかります。

Force Stop

手動でベイクするときは、いつでも Force Stop をクリックしてベイク処理を停止できます。これにより、満足な結果とわかったらすぐに処理を停止することができます。

ライトマッピング
プログレッシブ GPU ライトマッパー (プレビュー版)