ライトマップパラメータ
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: Directional モードは Non-directional ライトマップなどの多くのテクスチャメモリを2倍使用し、そしてシェーディングコストがわずかに高くかかります。スペキュラーとの方向性は、Directional の二倍多くのテクスチャメモリを使用します(それはセットごとに2つのテクスチャを使用していますが、それらは2つに分割するので、倍の数のセットが必要なのです)。そのシェーディングコストは、BRDF を二回実行し、直接的および間接的な光のために、2つのシャドウのない光と同等になります。 Non-directional: 1つのテクスチャ、1つのテクスチャ・サンプル、いくつかの付加的なシェーダー命令。 Directional: 2つのテクスチャ、2つのテクスチャ・サンプル、もういくつかの付加的なシェーダー命令。 Directional with Specular: 2つのテクスチャ、4つのテクスチャサンプル、高い追加シェーダーコスト(およそ2つの影のない光)。

リアルタイムライトマップは、同じアプローチを活用して、同じシェーディングの品質とコストのトレードオフになります。上記のリストとの唯一の違いは、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 アセット