こんにちは、エンジニアのオオバです。

Unityのシェーダー ShaderLabのSubShaderセクション、Passセクションには、どちらもTagを設定することができます。
ただ、どちらも専用Tagです。

SubShaderセクション内のTagは、そのシェーダー全体を通した設定を行うもので、Passセクション内のTagはそのPassで使用、判定に使われます。

リファレンスを確認すると結構な種類のTagがあります。
個人的に一覧がほしかったので、軽い説明付きのリストをこのページに残しておきます。

👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!

SubShaderの中でしか使えないTag

Tag名説明
Queueレンダリング順Background, Geometry, AlphaTest, Transparent, Overlay, Geometry+3等
RenderType置き換えシェーダー時に使用される事が多い。※別途記事書きます。Opaque, Transparent
DisableBatchingバッチ可否False, True, LODFading
ForceNoShadowCastingシャドウの投影可否True, False
IgnoreProjectorプロジェクターが投影するかどうかフラグTrue, False
CanUseSpriteAtlasシェーダーがSpriteを使っていた場合に不具合ある場合はFalseを使用せよとのことTrue, False
PreviewTypeマテリアルインスペクタのPreview画面の3D形状Sphere, Plane, Skybox

DisableBatching

"DisableBatching"="True"とすると、バッチングされずにGPUに頂点が送られます。頂点シェーダーでいろいろやりたいことがあり、バッチングされると困る時はこの設定を使うと良さそうです。

SubShaderとPassの中で使用できるTagリスト_0

バッチングされなくなるため↑このようにFrameDebuggerはその原因を示してくれます。

CanUseSpriteAtlas

これはよくわからないので、調査いたします。

PreviewType

インスペクタ内だけの話なので、普通は無視でOKです。

デフォルトPlaneSkybox

SubShaderとPassの中で使用できるTagリスト_1

SubShaderとPassの中で使用できるTagリスト_2

またデフォルトの場合は、Skybox以外であれば切り替えることができます。
しかし切り替えた状態は保存されませんのでご注意を。

Passの中でしか使えないTag

Tag説明
LightModeライトの設定Always, ForwardBase, ForwardAdd, Deferred, ShadowCaster, PrepassBase, PrepassFinal, Vertex, VertexLMRGBM, VertexLM
PassFlagsデータ渡しのフラグ管理OnlyDirectional
RequireOptions条件をレンダリングSoftVegetation

LightMode, PassFlags

長くなりそうなのと、検証必要そうなので別記事で。

RequireOptions

QualitySettings.softVegetation = false;  

このように処理を書くと"RequireOptions"="SoftVegetation"が記述されたPassは実行されません。

オススメ記事
参考サイト