unity labシェーダー タグについて


https://docs.unity3d.com/ja/2019.4/Manual/SL-SubShaderTags.html
をもとに、シェーダーのタグのkeyをメモする。

Queue タグ

描画順を決定する。(手動で数値を設定しても同じことが可能だが、役割を明確にするためにつける?)
↓上から順に処理させる
・Background 背景
・Geometry 不透明なオブジェクト
・AlphaTest アルファテスト。(アルファテストってなんだ?透明化のことか?)透明かつそこにないもの。葉っぱなど。(⇔アルファ 透明だかそこにあるもの。ガラスなど)(https://tsumikiseisaku.com/blog/shader-tutorial-transparent/より引用)
・Transparent 
 透明なもの(ガラスなど)。(アルファと同じか?)
・Overlay 最後に描画するもの。(レンズフレアなど)

RenderType タグ

"概ね、そのシェーダがどのような目的で利用 されているかを示すためのタグです。"(Unity Shader Programming Vol.01より引用)
必要なコードというよりは役割を明示するためのものだろうか?

DisableBatching タグ

ForceNoShadowCasting タグ

IgnoreProjector タグ

CanUseSpriteAtlas タグ

PreviewType タグ


LightMode タグ

以下引用 https://docs.unity3d.com/ja/2019.4/Manual/SL-PassTags.html

  • Always: 常にレンダリングされ、ライティングは適用されません。

  • ForwardBase: フォワードレンダリング で使用され、環境光、メインのディレクショナルライト、頂点/SH ライト、ライトマップが適用されます。←とりあえず環境光と書いてあるからこれを使っているという理解にしておく(暫定)。教科書で解説が割愛されている。ややこしい話なのだろう。ただこれが一番基本的なようだ。

  • ForwardAdd: フォワードレンダリング で使用され、付加的なピクセルごとのライトが、ライトごとに 1 パス適用されます。

  • Deferred: ディファードシェーディング で使用され、g-buffer を描画します。

  • ShadowCaster: オブジェクトの深度をシャドウマップや深度テクスチャに描画します。

  • MotionVectors: オブジェクトごとのモーションベクターを計算するのに使用されます。

  • PrepassBase: 古い非推奨のライティング で使用され、法線やスペキュラー指数をレンダリングします。

  • PrepassFinal: 古い非推奨のライティング で使用され、テクスチャ、ライト、発光を合成することで最終的な色を描画します。

  • Vertex: 古い Vertex Lit レンダリング でオブジェクトがライトマップされてない場合に使用され、すべての頂点ライトが適用されます。

  • VertexLMRGBM: 古い Vertex Lit レンダリング でオブジェクトがライトマッピングされてる場合、ライトマップが RGBM エンコードされるプラットフォームで使用されます。

  • VertexLM: 古い Vertex Lit レンダリング でオブジェクトがライトマップされてる場合に、ライトマップが double-LDR エンコードされるプラットフォーム (モバイルプラットフォーム) で使用されます。

引用終わり

わからん