ShaderLab: Blending
ShaderLab: ステンシル

ShaderLab : Pass 内の Tags

Pass はタグを使用していつどのようにしてレンダリングエンジンによりレンダリングすべきかを指定します。

文法

    Tags { "TagName1" = "Value1" "TagName2" = "Value2" }

タグの TagName1 が値として Value1、タグの TagName2 が値として Value2 であることを指定します。タグは好きなだけ指定できます。

詳細

タグは基本的に Key-Value ペアです。Pass の中でタグは、当該パスがライティングパイプライン(環境光、頂点ライティング、ピクセルライティング)の中でどの役割であるかを制御したり、他のパラメーターを判定するのに使用します。次のタグは Unity により認識され、SubShader の中でなく 必ず Pass セクションの中とする、ことに注意ください。

LightMode タグ

LightMode タグはライティングパイプラインでのパスの役割を定義します。詳細については Unity のレンダリングパイプライン を参照してください。これらのタグは手動で使用されることは稀で、ライティングと相互作用のあるほとんどのシェーダーは Surface Shader で記述され、そういった詳細はその中で処理されます。

LightMode で利用可能なタグは、

  • Always : 常にレンダリングされ、ライティングは適用されません。
  • ForwardBase : Forward Rendering で使用され、環境光、メインのディレクショナルライト、頂点/SH ライトが適用されます。
  • ForwardAdd : Forward Rendering で使用され、ライトごとに一つのパスで、Additive ピクセルライティングが適用されます。
  • Deferred : Deferred Shading で使用され、g-バッファを描画します。
  • ShadowCaster : オブジェクトのデプスをシャドウマップや深度テクスチャに描画します。
  • PrepassBase : 旧 Deferred Lighting で使用され、法線やスペキュラーをレンダリングします。
  • PrepassFinal : 旧 Deferred Lighting で使用され、最終的なカラーについて、テクスチャ、ライト、および自己発光、を合成することでレンダリングします。
  • Vertex : Vertex Lit レンダリング でオブジェクトがライトマップされてない場合に使用され、すべての頂点ライトが適用されます。
  • VertexLMRGBM : Vertex Lit レンダリング でオブジェクトがライトマップされてる場合、ライトマップが RGBM エンコードされるプラットフォームにおいて使用されます。
  • VertexLM : Vertex Lit レンダリング でオブジェクトがライトマップされてる場合に、ライトマップが doub-LDR エンコードされるプラットフォームにおいて(一般にモバイル向けに)使用されます。

PassFlags タグ

パスは レンダリングパイプライン がどのようにデータを渡すかをフラグで示すことができます。これには、スペースで区切られたフラグ名を値としてもつ PassFlags タグが使用されます。現在、以下のフラグがサポートされています。

  • OnlyDirectional ForwardBase パスで使用される場合、このフラグはメインのディレクショナルライトとアンビエント/ライトプローブのデータのみをシェーダーに渡します。つまり、あまり重要でないライトは頂点ライトや球面調和のシェーダー変数に渡され ません。詳細は Forward rendering を参照してください。

RequireOptions タグ

特定の外部条件が満たされた場合のみレンダリングされることを、パスで指定することができます。これは RequireOptions により実現され、値はスペースで区切られた文字列によるオプションです。現在、以下のオプションがUnityでサポートされています。

  • SoftVegetation : もし 画質設定 で Soft Vegetation が有効である場合のみ、このパスをレンダリングします。

関連項目

SubShader にタグを割り当てることが可能です。詳細は SubShader タグを参照してください。

ShaderLab: Blending
ShaderLab: ステンシル