Version: 2019.3
言語: 日本語
ShaderLab: Blending
ShaderLab: ステンシル

ShaderLab: Pass 内のタグ

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

構文

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

TagName1 が値 Value1TagName2 が値 Value2 であることを指定します。タグの数に制限はありません。

詳細

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

LightMode タグ

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

LightMode で利用可能なタグは以下の通りです。

  • Always: 常にレンダリングされ、ライティングは適用されません。
  • ForwardBase: フォワードレンダリング で使用され、環境光、メインのディレクショナルライト、頂点/SH ライト、ライトマップが適用されます。
  • ForwardAdd: フォワードレンダリング で使用され、付加的なピクセルごとのライトが、ライトごとに 1 パス適用されます。
  • Deferred: ディファードシェーディング で使用され、g-buffer を描画します。
  • ShadowCaster: オブジェクトの深度をシャドウマップや深度テクスチャに描画します。
  • MotionVectors: オブジェクトごとのモーションベクターを計算するのに使用されます。
  • PrepassBase: 古い非推奨のライティング で使用され、法線やスペキュラー指数をレンダリングします。
  • PrepassFinal: 古い非推奨のライティング で使用され、テクスチャ、ライト、発光を合成することで最終的な色を描画します。
  • Vertex: 古い Vertex Lit レンダリング でオブジェクトがライトマップされてない場合に使用され、すべての頂点ライトが適用されます。
  • VertexLMRGBM: 古い Vertex Lit レンダリング でオブジェクトがライトマッピングされてる場合、ライトマップが RGBM エンコードされるプラットフォームで使用されます。
  • VertexLM: 古い Vertex Lit レンダリング でオブジェクトがライトマップされてる場合に、ライトマップが double-LDR エンコードされるプラットフォーム (モバイルプラットフォーム) で使用されます。

PassFlags タグ

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

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

RequireOptions タグ

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

  • SoftVegetation: Quality ウィンドウで Soft Vegetation が有効の場合にのみ、このパスをレンダリングします。

関連項目

SubShader にもタグを指定することが可能です。詳細は ShaderLab: SubShader 内の Tags を参照してください。

ShaderLab: Blending
ShaderLab: ステンシル