Version: 2017.1
Deferred Shading レンダリングパス
旧 Deferred Lighting レンダリングパス

Forward Rendering パスの詳細

このページでは Forward レンダリングパス の詳細について説明します。

Forward Rendering パスは各オブジェクトを、オブジェクトに作用するライトにもとづいて、ひとつかそれ以上のパスにレンダリングします。ライトそのものは、設定および強度によって、Forward Rendering により別々に扱われます。

実装の詳細

Forward Rendering では、各オブジェクトに作用する、いくつかの最も明るいライトは、完全なピクセルライティングモードでレンダリングされます。次に最大で 4 つのポイントライトが頂点ごとに計算されます。他のライトは球面調和( SH )として計算され、近似値になりますがより速くなります。ライトがピクセルライティングとなるかどうかは次のことに依存します。

  • Render Mode を Not Important に設定したライトは常に頂点ライティングか SH となります。
  • 最も明るいディレクショナルライトは常にピクセルライティングです。
  • Render Mode を Important に設定したライトは常にピクセルライティングになります。
  • もし上の結果により、現在の Pixel Light Count 画質設定 より少ないライトの数となった場合、明るさを抑えるために、より多くのライトがピクセルライティングとなります。

各オブジェクトのライティングは次のように行われます:

  • Base Pass は 1つのピクセルディレクショナルライトおよびすべての頂点/ SH ライトを適用します。
  • 他のピクセルライトは、Additional Pass (追加のパス)でレンダリングされ、ひとつのライトごとにひとつのパスを使用します。

例えば、もし複数のライトにより影響を受けるオブジェクトがある場合(下の絵で丸をつけた部分がライト A から H に作用されている):

ライト A から H が同じカラーと強度であると仮定した場合、すべて自動レンダリングモードであるため、このオブジェクトにおいて、この順番のとおりにソートされます。最も明るい光( A から D )はピクセルライティングでレンダリングされ、4 つのライト( D から G )が頂点ライティングとなり、最後に残りのライト( G から H )が球面調和( SH )となります。

ライトグループは重複していることに注意してください、例えば最後のピクセルライティングは頂点ライティングモードにブレンドするため、オブジェクトやライトが動き回る際に “Light Popping” (急なライトの変化)は少なくなります。

Base Pass

ベースパスはオブジェクトを 1つのピクセルディレクショナルライトとすべての SH/頂点ライトでレンダリングします。このパスにはさらに他のライトマップ、シェーダーからのアンビエントライトと emissive なライトが追加されます。このパスでレンダリングされるディレクショナルライトには影があります。ライトマップされたオブジェクトは SH ライトから照らされないことに注意してください。

“OnlyDirectional” pass flag がシェーダーで使用されると、フォワードのベースパスは、メインのディレクショナルライト、アンビエント/ライトプローブ、ライトマップだけをレンダリングします (SH と 頂点ライトはパスデータに含まれません)。

追加のパス

追加のパスは、オブジェクトに影響する追加するピクセルライトごとにレンダリングされます。 multi_compile_fwdadd_fullshadows バリアントショートカットを使用しない限り、これらのパスのライトには影がありません(結果として、フォワードレンダリングは影を持つ 1つのディレクショナルライトをサポートします)。

パフォーマンスの考慮点

球面調和ライトは 非常に 速くレンダリングされます。CPU のコストが極小であり、GPU を適用する場合も 事実上コストなし です(すなわち、Base Pass は常に SH ライティングを計算します、しかし SH ライトの性質からいくつ SH ライトがあってもコストはまったく同じです)。

SH ライトの欠点は:

  • オブジェクトのピクセルでなく、頂点で計算されます。これにより、Light Cookie や法線マップはサポートしません。
  • SH ライトは非常に低周波です。急なライティングの遷移を行うことができません。また、拡散ライティングしか作用しません(鏡面ハイライトには低周波すぎます)。
  • SH ライトはローカルではありません。表面に近い、ポイントあるいはスポットの SH ライトは、“何か間違っているように見えます”。

まとめると、SH ライトは小さく動的なオブジェクトには向いてません。

Deferred Shading レンダリングパス
旧 Deferred Lighting レンダリングパス