In the Built-in Render Pipeline, when using a Surface Shader, how lighting is applied and which Passes of the shader are used depends on which Rendering Path is used. Each pass in a shader communicates its lighting type via Pass Tags.
ForwardBase
と ForwardAdd
パスが使用されます。Deferred
パスが使用されます。PrepassBase
と PrepassFinal
パスが使用されます。Vertex
、VertexLMRGBM
、VertexLM
パスが使用されます。ShadowCaster
パスが使われます。ForwardBase
パスは、アンビエント、ライトマップ、メインのディレクショナルライト、重要でない (頂点/球面調和) ライトを一度にレンダリングします。ForwardAdd
パスは、追加のピクセルごとのライトに使用されます。このようなライトによって照らされるオブジェクトごとに 1 回の呼び出しが行われます。詳細については、フォワードレンダリング を参照してください。
フォワードレンダリングが使用され、シェーダーにフォワードレンダリングに適切なパスがない (つまりForwardBase
も ForwardAdd
も存在しない) 場合には 、そのオブジェクトは、まるで頂点ライティングパスでレンダリングされたようにレンダリングされます。詳しくは後述を参照してください。
ディファード
パスは、ライティングに必要なすべての情報 (ビルトインシェーダーの場合、ディフューズ色、スペキュラー色、スムースネス、
ワールド空間法線、エミッション) をレンダリングします。また、エミッションチャンネルに、ライトマップ、リフレクションプローブ、アンビエントライティングの情報も追加されます。詳細は ディファードシェーディング を参照してください。
PrepassBase
パスは、法線およびスペキュラー指数をレンダリングします。PrepassFinal
パスは、テクスチャと、ライティングマテリアル/放出マテリアルのプロパティを混合することで最終的な色をレンダリングします。通常のシーン内のライティングはすべて、シーン空間で個別に行われます。詳細については、古いディファードライティング を参照してください。
頂点ライティングは、プログラム可能なシェーダーをサポートしないプラットフォームで使用されることが多いため、Unity が内部的に複数のシェーダーバリアントを作成して、ライトマップされた/ライトマップされていない場合を処理することができません。そのため、ライトマップされた/ライトマップされていないオブジェクトを処理するためには、複数のパスを明示的に作成する必要があります。
Vertex
パスは、ライトマップされていないオブジェクトに使用されます。すべてのライトは、OpenGL/Direct3D ライティングモデルのデフォルト機能である (Blinn-Phong) を使用して、一度にレンダリングされます。VertexLMRGBM
パスは、ライトマップが RGBM エンコードされる場合 (PC とコンソール) に、ライトマップ使用オブジェクトに使用されます。リアルタイムライティングは適用されません。パスはテクスチャとライトマップの混合に使用されます。VertexLMM
パスは、ライトマップが 2 重に LDR エンコードされる場合 (モバイルプラットフォーム) に、ライトマップ使用オブジェクトに使用されます。リアルタイムライティングは適用されません。パスはテクスチャとライトマップの混合に使用されます。Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.