ビルトインレンダーパイプラインでは、サーフェスシェーダーを使用する場合、ライティングの適用方法とシェーダーのどの パス が使用されるかは、使用される レンダリングパス によって異なります。シェーダーの各パスは、Pass タグ を通してそのライティングタイプを伝えます。
機能名 | ビルトインレンダーパイプライン | ユニバーサルレンダーパイプライン (URP) | HD レンダーパイプライン (HDRP) | カスタム SRP |
---|---|---|---|---|
サーフェスシェーダー | あり | 不可 URP で Shader オブジェクトを効率的に作成する方法については、Shader Graph を参照してください。 |
不可 HDRP で Shader オブジェクトを効率的に作成する方法については、Shader Graph を参照してください。 |
なし |
ForwardBase
と ForwardAdd
パスが使用されます。Deferred
パスが使用されます。Vertex
、VertexLMRGBM
、VertexLM
パスが使用されます。ShadowCaster
パスが使用されます。ForwardBase
パスは、アンビエント、ライトマップ、メインのディレクショナルライト、重要でない (頂点/球面調和) ライトを一度にレンダリングします。ForwardAdd
パスは、追加のピクセルごとのライトに使用されます。このようなライトによって照らされるオブジェクトごとに 1 回の呼び出しが行われます。詳細については、フォワードレンダリング を参照してください。
フォワードレンダリングが使用され、シェーダーにフォワードレンダリングに適切なパスがない (つまりForwardBase
も ForwardAdd
も存在しない) 場合には 、そのオブジェクトは、まるで頂点ライティングパスでレンダリングされたようにレンダリングされます。詳しくは後述を参照してください。
ディファード
パスは、ライティングに必要なすべての情報 (ビルトインシェーダーの場合、ディフューズ色、スペキュラー色、スムースネス、
ワールド空間法線、エミッション) をレンダリングします。また、エミッションチャンネルに、ライトマップ、リフレクションプローブ、アンビエントライティングの情報も追加されます。詳細は ディファードシェーディング を参照してください。
頂点ライティングは、プログラム可能なシェーダーをサポートしないプラットフォームで使用されることが多いため、Unity が内部的に複数のシェーダーバリアントを作成して、ライトマップされた/ライトマップされていない場合を処理することができません。そのため、ライトマップされた/ライトマップされていないオブジェクトを処理するためには、複数のパスを明示的に作成する必要があります。
Vertex
パスは、ライトマップされていないオブジェクトに使用されます。すべてのライトは、OpenGL/Direct3D ライティングモデルのデフォルト機能である (Blinn-Phong) を使用して、一度にレンダリングされます。VertexLMRGBM
pass is used for lightmapped objects, when lightmaps are RGBM encoded (PC and consoles). No real-time lighting is applied; pass is expected to combine textures with a lightmap.VertexLM
pass is used for lightmapped objects, when lightmaps are double-LDR encoded (mobile platforms). No real-time lighting is applied; pass is expected to combine textures with a lightmap.