ライトマップパラメータ
Lighting Data アセット

Directional ライトマッピング

Directional lightmaps は、ライティング環境に関して、通常のライトマップよりも詳細な情報を格納します。シェーダーでは、出射光の計算結果を向上させるために、入射光に追加データを使用することができます。これにより画面に描画される時のマテリアルの見え方が決まります。これは、テクスチャメモリの使用量とシェーディング時間を増加させます。

3つのモードのいずれかを選択できます: Non-directionalDirectional および Directional with Specular 。3つとも、realtimebaked ライトマップとして使用できます。

  • Non-directional: flat diffuse. このモードはただ一つのライトマップを使用しており、光が純粋に拡散すると仮定してどれだけ多くの光が表面から発するかという情報を保存します。オブジェクトはこの方法で照射すると、フラットに( normalmaps は使用されません)、(マテリアルが鏡面であっても)拡散して表示されますが、それでなければ、正常に照射されます。これらの樽は、ベイクされたライトマップを使用しています。唯一の詳細定義は、反射プローブとオクルージョンマップから来ています。
  • Directional: normalmapped diffuse. このモードは、第2のライトマップを追加します。そして、入ってくるドミナント光の方向と、最初のライトマップで、どれほど多くの光がドミナントな方向に沿って入ってくるかの比例係数を格納します。それから、残りは半球全体から均等に来ると想定します。その情報を基にマテリアルはノーマルマップされますが、それはまだ純粋に拡散されたように見えます。
  • Directional with Specular: full shading. 前のモードと同様に、これは2つのライトマップが使用されます。光と方向ですが、今回は、半分に分割しています。左側に直射光を、右側に間接光をストアしました。他の2つのモードとは異なり、光は入って来る強さとして保存されます。その付加情報は、通常、リアルタイムライトのために予約され、同じ BRDF を実行するためのシェーダーを可能にします。その結果、フル機能を備えたマテリアルの出現をもたらし、今も間接光との相互作用を出現させてます。

Performance: the Directional mode uses twice as much texture memory as Non-directional lightmaps and has a slightly higher shading cost. Directional with Specular uses twice as much texture memory as Directional (it also uses two textures per set, but they’re split in two, so twice as many sets are needed). Its shading cost is comparable to two un-shadowed lights, as it runs the BRDF twice - for direct and indirect light. Non-directional: one texture, one texture sample, a few extra shader instructions. Directional: two textures, two texture samples, a few more extra shader instructions. Directional with Specular: two textures, four texture samples, high extra shader cost (about two un-shadowed lights).

リアルタイムライトマップは、同じアプローチを活用して、同じシェーディングの品質とコストのトレードオフになります。上記のリストとの唯一の違いは、Specular lightmap による Realtime Directional が3つのテクスチャ(incoming intensity, direction, normal)を使用していることです。3つのテクスチャサンプルを持っていきます。一度だけ BRDF が実行され、1つの影のない光のシェーディングコストがかかります。それはリアルタイム直接光との組み合わせで動作しますが、もちろん、独自のシェーディングコストがかかります。

実際に(スペキュラーリアルタイムで、間接的な部分をベイクした、Directional な)間接光のために使用される BRDF は、わずかにコストのかからないバージョンです。UNITY_BRDF_PBS_LIGHTMAP_INDIRECTUnityPBSLighting.cginc で定義されています。

Specular モードによる Directional は lightmapper を GI テクニックの限界状態にしてしまい、ある場合にはアーティファクトにつながります。これらは、ほとんどの場合、誤ったドミナント光の方向や、ダークを引き起こしたり、または黒のシェーディングを引き起こすパッチです。これらの問題のいくつかは、Realtime/Indirect Resolution を増やして解決することができます。他のすべてが失敗した場合は、よりシンプルなライトマップモードの方がロバストなのでおすすめです。

ライトマップパラメータ
Lighting Data アセット