Version: 2019.3
詳細な ShaderLab トピック
シェーダーを書く場合のパフォーマンスのヒント

Surface Shaders and rendering paths

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 パスは、追加のピクセルごとのライトに使用されます。このようなライトによって照らされるオブジェクトごとに 1 回の呼び出しが行われます。詳細については、フォワードレンダリング を参照してください。

フォワードレンダリングが使用され、シェーダーにフォワードレンダリングに適切なパスがない (つまりForwardBaseForwardAdd も存在しない) 場合には 、そのオブジェクトは、まるで頂点ライティングパスでレンダリングされたようにレンダリングされます。詳しくは後述を参照してください。

ディファードシェーディングパス

ディファード パスは、ライティングに必要なすべての情報 (ビルトインシェーダーの場合、ディフューズ色、スペキュラー色、スムースネス、 ワールド空間法線、エミッション) をレンダリングします。また、エミッションチャンネルに、ライトマップ、リフレクションプローブ、アンビエントライティングの情報も追加されます。詳細は ディファードシェーディング を参照してください。

古い (非推奨) ディファードライティングパス

PrepassBase パスは、法線およびスペキュラー指数をレンダリングします。PrepassFinal パスは、テクスチャと、ライティングマテリアル/放出マテリアルのプロパティーを混合することで最終的な色をレンダリングします。通常のシーン内のライティングはすべて、シーン空間で個別に行われます。詳細については、古いディファードライティング を参照してください。

古い (非推奨) 頂点ライティングレンダリングパス

頂点ライティングは、プログラム可能なシェーダーをサポートしないプラットフォームで使用されることが多いため、Unity が内部的に複数のシェーダーバリアントを作成して、ライトマップされた/ライトマップされていない場合を処理することができません。そのため、ライトマップされた/ライトマップされていないオブジェクトを処理するためには、複数のパスを明示的に作成する必要があります。

  • Vertex パスは、ライトマップされていないオブジェクトに使用されます。すべてのライトは、OpenGL/Direct3D ライティングモデルのデフォルト機能である (Blinn-Phong) を使用して、一度にレンダリングされます。
  • VertexLMRGBM パスは、ライトマップが RGBM エンコードされる場合 (PC とコンソール) に、ライトマップ使用オブジェクトに使用されます。リアルタイムライティングは適用されません。パスはテクスチャとライトマップの混合に使用されます。
  • VertexLMM パスは、ライトマップが 2 重に LDR エンコードされる場合 (モバイルプラットフォーム) に、ライトマップ使用オブジェクトに使用されます。リアルタイムライティングは適用されません。パスはテクスチャとライトマップの混合に使用されます。

参照

詳細な ShaderLab トピック
シェーダーを書く場合のパフォーマンスのヒント
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961