Bakery マニュアル 原文記事
この和訳は2021年09月01日に作成されました。
目次
Render Mode
どのようにLightmapをベイクするかの設定です。
Full Lighting
すべてのBakeryライトの直接光及び間接光をベイクします。
Indirect
基本的な混合モード。これは、全てのライトの Baked Contribution を参照します。Direct And Indirect に設定されている場合は、Full Lighting モードど同じようにベイクします。Indirect Only に設定されている場合は、このライトからの間接光のみベイクします。後者の場合は、UnityライトとBakeryライトを同じオブジェクトに置いておき、一方はリアルタイム処理で影響し、もう一方はベイクされたGIに影響します。
Shadowmask
より発展的な混合モードです。これは、二種類のライトマップを生成することで機能します。一つはベイクされた色(Indirectモードのような)で、もう一つは静的なオブジェクトからの影です。これにはいくつかの利点があります。
- リアルタイムな影は、シーン全体ではなく一握りの動的なオブジェクトでのみ計算されます。
- リアルタイムな影とベイクされた影は正しくブレンドれます。
- リアルタイムライトは、法線や鏡面反射などの表面効果をレンダリングしながら、高品質なベイクされた影によって遮蔽させることができます。
Shadowmask が設定できるライトは DIrectional, Poit, Spot ライトのみです(これらのライトのみがUnityがリアルタイム処理に対応している為です)。この動作を有効にするには、UnityとBakeryの両方のライトが同じオブジェクトにあり、Baked Contribution がIndirect And Shadowmaskに設定されている必要があります。設定されていないライトは、Indirect モードのようにベイクされます。
Distance Shadowmask
このチェックボックスは、shadowmask を選択した場合にのみ表示され、プロジェクトの Quality Settings で同名の設定を単純に切り替えます。詳細はこちらをご覧ください。
Subtractive
Subtractive モードを有効にします。
このオプションはライトマップに特別なことは何もせず、実際には Full Lighting と同じように動作します。
唯一の違いは、リアルタイムのUnityライトが減算モードで動作するように設定される点です(UIからは変更できない為)。
Unityの Lighting ウィンドウで、global subtractive パラメータ(global shadow color など)を追加設定する必要があります。
Ambient Occlusion Only
AOのみをベイクします。必ずAOオプションを設定してください。
Directional mode
方向性の情報をどのようにベイクするかを定義します。標準的なライトマップはテクセルごとに単一の色しか保存しませんが、指向性ライトマップは、テクセルを中心とした半球上で照明がどのように変化するかの情報をシェーダーに与えます。このデータは、完全にライトマップ化されたエリアを法線マップと組み合わせるために必要です。また、内蔵のBakeryシェーダにこのデータを差し込むと、おおよその鏡面反射が得られます。
None
方向性情報はありません。テクセルごとの色だけです。
Baked Normal Maps
指向性データはありませんが、ライトマップのレンダリング時に法線マップが考慮されます。ランタイムの負荷は増えません。ライトマップは通常、法線マップよりも解像度が低いため、結果がぼやけて見えることがあります。その他の問題としては、ミップマッピングが行われないことによる距離方向のエイリアシングや、ノイズ除去によるディテールの不鮮明さなどがあります。このモードでプロシージャル法線を持つカスタムシェーダーを使用する方法については、法線マッピングのセクションを参照してください。
Dominant Direction
このモードは、Unityの Enlighten や Progressive bakeに似ています。ほとんどのシェーダーと互換性があり、追加のマップを1つ生成するだけで、ランタイムの負荷は最小限に抑えられます。デメリットとしては、バンプマッピングの見た目が薄くグレーがかったものになり、同じオブジェクトをリアルタイムでライティングした場合に比べてかなり違ったものになってしまいます。
RNM
HL2(スライド)のために考案され、その後多くのゲーム(Mirror’s Edgeなど)で使用されたラジオシティ法線マッピング技術をベースにしています。合計3枚のHDRマップを生成しますが、最もメモリを消費するモードです。ランタイム負荷は比較的低いです。このモードは、DOMINANT DIRECTION よりも精度が高いです。表面のコントラストの再現や、異なる角度の法線マップに影響を与えるカラーライトの処理に優れています。
SH
“Precomputed Global Illumination in Frostbite” という論文に基づいています。これは最高品質のモードで、表面のコントラストが非常に良くなり、異なる方向から来る異なる色の照明を表現します。合計で4つのマップを生成しますが、そのうち1つだけがHDRであるため、RNMよりも少ないメモリで済みます。ランタイム負荷はRNMよりも若干大きいです。
制限事項
- RNMおよびSHは、Bakeryシェーダか、調整されたシェーダーが必要です。
- RNMおよびSHモードでは、標準的なカラーライトマップは作成されません。シーン内のすべてのマテリアルにBakeryシェーダを適用するか、ライトマップグループを使用してRNM/SHオブジェクトを他のオブジェクトから分離する必要があります。
- RNMマップとSHマップはMaterialPropertyBlockを使ってオブジェクトに適用されるので、UnityのLightingウィンドウでは完全に表示されないことがあります。
- Dominant Direction、RNM、SHの各モードでは、同等の品質を得るためにGIとLight Meshのサンプル数を若干増やす必要があります。
Texels per unit
ワールド ユニットあたりのライトマップ テクセルのおおよその量。生成されるライトマップの量と解像度に影響を与えます。
参考となる値の例
- 大規模な屋外エリア(都市):1~5
- 中規模の屋外エリア(いくつかの路地):10~20
- 高品質のインテリア:100
シーンのスケールは、おおよそ1ユニット=1メートルと仮定しています。Unityで作業する場合は、ナビゲーションや物理シミュレーションのために、このようなスケールを推奨します。スケールが異なる場合は、それに応じてTexelsを乗じてください。
Texels Per Unitは基本的な解像度ですが、すべてのオブジェクトは、メッシュレンダラーのScale in Lightmapオプションや、BakeryウィンドウのScale per map typeを使って、追加で調整することができます。
Max resolution
ライトマップの最大サイズの制限。オブジェクトが1つのライトマップに収まらない場合(現在のTexels Per Unit値が与えられている場合)、追加のライトマップが割り当てられます。同じ4つの正方形のオブジェクトでも、512×512のマップを4つ生成する方法と、1024×1024のマップを1つ生成方法があります。
Bounces
光線が表面で何回反射するかを定義します。通常、屋外のシーン(都市部など)では低い値で十分ですが、より閉鎖的なシーン(屋内や洞窟など)では高い値が必要です。
Samples
GIの品質に影響します。代表的な値は16~32です。
GPU Priority
GPUがライトマップを処理している間、OSやその他のソフトウェアの反応が悪くなることがあります。このオプションでは、ベイク速度とシステムの応答性のバランスをとることができます。
Render
開いているすべてのシーンのライトマップを作成します。ライトプローブモードがL1に設定されている場合、ライトプローブも作成されます。
Render Light Probes
開いているすべてのシーンのライトプローブを作成します。
なお、Shadowmask モードで動的オブジェクトに正確なミックスライティングを行うには、オクルージョンプローブを有効にする必要があります。
Render Reflection Probes
開いている全てのシーンのリフレクションプローブを作成します。このボタンは利便性のためのもので、通常のリフレクションプローブ更新を呼び出します。
Update Skybox Probe
現在のスカイボックス用のグローバルなディフューズとリフレクションプローブをベイクします。Render Reflection Probes と同様に、エンジンの組み込み関数を呼び出すだけです。
Occlusion Probes
Render Light Probes を押すと、現在選択されている内蔵ライトマッパーを使って、Unityにオクルージョンプローブを焼き付けることができます。オクルージョンプローブとは、通常のライトプローブの中に保存されている追加データのことで、ダイナミックオブジェクトが影の部分に照らされてしまうのを防ぎます。現在、Unityではカスタムオクルージョンプローブを使用する方法はなく、代わりに独自のライトマッパーを呼び出して作業を行う必要があります。
Warnings
これらのオプションは、Renderボタンのいずれかが押された後にシーンを検証し、ベイク処理の継続または停止を求める警告ダイアログボックスを表示します。
- UV validation:すべてのモデルのライトマップUVが完全に正しいかどうかをチェックします。具体的には、0~1の範囲内にあり、オーバーラップしていないかどうかです。
- Overwrite check:どのライトマップファイルが上書きされるのかを確認します。
- Memory check:必要なビデオメモリのおおよその量がわかります。
- Sample count check:GPUが利用可能なリソースを使い果たしてしまうような不合理なサンプルカウントを持つライト、GI、AOがあるかどうかをチェックします。
- Lightmapped prefab validation:ライトマップされたプレハブを検証し、一部のプレハブが上書きされそうな場合に通知します