プログレッシブライトマッパーはパストレーシングに基づく高速のライトマッパーシステムで、エディターで段階的に更新されるベイクしたライトマップとライトプローブを提供します。これは、面積と角度の誤差が小さく重複しない UV を必要とし、チャート間に十分なパディングを必要とします。
プログレッシブライトマッパーは短い準備手順でジオメトリとインスタンスの更新を処理し、G バッファとチャートマスクを生成します。その後、すぐに出力して経時的に段階的に精錬し、大幅に改善されたインタラクティブなライティングワークフローを可能にします。さらに、プログレッシブライトマッパーはベイクしている間に予定時間を提示するため、ベイク時間の予測がずっと容易になりました。
プログレッシブライトマッパーは、アップサンプリング手法や放射キャッシュやその他のグローバルデータ構造に頼ることなく、ライトマップの解像度 (個々のテクセルごとに) でグローバルイルミネーション (GI) をベイクします。これによりプログレッシブマッパーはしっかりと安定し、ライトマップの選択した部分をベイクすることができます。これにより、シーンをテストしイテレーションを行う早さが増します。
In Development - Progressive Lightmapper (YouTube) のビデオは、インタラクティブなワークフローを詳しく紹介しています。
プログレッシブライトマッパーに対して 2 つのバックエンドから選択できます。プログレッシブ CPU ライトマッパーのバックエンドは、コンピューターの CPU とシステム RAM を使用するプログレッシブライトマッパーのバックエンドです。プログレッシブ GPU ライトマッパーは、コンピューターの GPU と VRAM を使用するプログレッシブライトマッパーのバックエンドです。
プログレッシブ GPU ライトマッパーは開発中のプレビュー機能であり、変更される可能性があります。プログレッシブ GPU ライトマッパーバックエンドについては、プログレッシブ GPU ライトマッパー (プレビュー) を参照してください。
プログレッシブライトマッパーを使用するには、以下を行います。
LightmapEditorSettings と Lightmapping API を使用して、このウィンドウで使用可能な多くの機能をスクリプト経由で実行できます。
項目 | 説明 | |
---|---|---|
Lightmapper | シーンのライトマップの計算に使用する内部のライティングの計算ソフトウェアを指定します。オプションは以下の通りです。 Progressive CPU Progressive GPU Enlighten (Deprecated) デフォルトは Progressive CPU です。 |
|
Prioritize View | これを有効にすると、プログレッシブライトマッパーは、現在シーンビューに表示されているテクセルに変更を適用し、それから、ビューに表示されていないテクセルに変更を適用します。 | |
Multiple Importance Sampling | これを有効にすると、環境をサンプリングするのに多重重点的サンプリングを使用するかどうかを指定します。通常、これはライトマップを生成するときの収束を早めますが、ある低周波数環境ではノイズの多い結果になる可能性があります。この機能は、デフォルトでは無効になっています。 | |
Direct Samples | 各テクセルからのサンプル (パス) の数。この設定は、プログレッシブライトマッパーが直接ライティングの計算に使用するサンプル数を制御します。この値を大きくすると、ライトマップの質は向上しますが、ベイク処理に要する時間が長くなります。 | |
Indirect Samples | 各テクセルからのサンプル (パス) の数。この設定は、プログレッシブライトマッパーが間接ライティングの計算に使用するサンプル数を制御します。一部のシーン、特に屋外のシーンでは、100 サンプルで十分です。エミッシブジオメトリのある屋内シーンでは、望む結果が得られるまで値を増やします。 | |
Environment Samples | The Environment Samples property determines the total number of environment rays that Unity fires toward the skybox to gather light directly. Unity fires these rays from the lightmap texel or light probe position depending on the context. The default value is 500. Higher values might yield smoother results, but at the cost of increased bake times. In Scenes with HDR skyboxes, more samples are often needed to reduce noise in the final lightmap or probe. Scenes with skyboxes that include bright singularities (such as the sun) or high-frequency details with significant contrast (such as backlit clouds) also benefit from a higher number of samples. |
|
Light Probe Sample Multiplier | サンプル数の乗数としてライトプローブに使用するサンプル数を制御します。値を大きくすると、ライトプローブの品質が向上しますが、ベイクにより長く時間がかかります。この機能を使用可能にするには、Project Settings > Editor の順に移動し、Use legacy Light Probe sample counts (古いライトプローブのサンプル数を使用する) を無効にします。デフォルトの値は 4 です。 | |
Bounces | この値を使用して、パスを追跡するときの間接的な反射の数を指定します。大抵のシーンで 2 つの反射で十分です。室内の状況で、それよりも多く必要な場合があります。 | |
Min Bounces | Progressive Lightmapperが間接照明の計算に含めることを許容するバウンスの最小数 デフォルト値:2. 範囲0–100 |
|
マックスバウンズ | プログレッシブライトマッパーが間接照明の計算に含めるバウンスの数 デフォルト値:2 範 囲。0–100. 各バウンスは、シーンのベイクに必要な計算リソースを増やします。屋内のシーンには高いバウンス値を、屋外のシーンや明るいサーフェイスが多いシーンには低いバウンス値を使用してください。 Min BouncesとMax Bouncesの間の範囲が広がると、ライトマップで見えるノイズの量が増えます。 |
|
Filtering | プログレッシブライトマッパーがライトマップにポストプロセスをライトマップに適用して、ノイズを制限する方法を設定します。ライトマップのポストプロセスの場合、ライトマップは Direct、Indirect、Ambient 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 を選択します。ターゲットのタイプは Direct、Indirect、Ambient 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 です。 |
設定 | 説明 | |
---|---|---|
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 | このオプションは、Filter が Gaussian に設定されている場合にのみ使用できます。Radius 値を使用して、ガウシアンフィルターのカーネルの半径をテクセル単位で設定します。Radius を大きくすると、ぼかしの強さが増し認識できるノイズが減少しますが、ライティングのディテールが失われる場合があります。 | |
Sigma | このオプションは、Filter が A-Trous に設定されている場合にのみ使用できます。Sigma の値を使用して、ディテールを維持する量やライティングをぼかす量を調整します。Sigma の値を高くするとぼかしの強さが増し、認識できるノイズが減少しますが、ライティングのディテールが失われる場合があります。 |
Auto Generate と Generate Lighting オプションの下にあるパネルには、以下を含むライトマッピングに関する統計情報が表示されます。
プログレッシブライトマッパーは、必要な場合に、進行中のベイクを監視し停止するためのオプションを提供します。
The progress bar that appears while Unity is baking the lightmap provides an estimated time of completion (displayed as ETA). This is the estimated time in seconds for the current bake to complete. This allows for much more predictable baking times, and allows you to quickly learn how much time baking takes with your current lighting settings.
手動でベイクするときは、いつでも Force Stop をクリックしてベイク処理を停止できます。これにより、満足な結果とわかったらすぐに処理を停止することができます。