渋谷ほととぎす通信

完全趣味でやってるUnityメモ。説明できないところを説明できるようにするための個人ブログ。昨日の自分より少しでも大きくなれるように。。。 ※所属団体とは一切関係がありません

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


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

目次

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

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

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に頂点が送られます。頂点シェーダでいろいろやりたいことがあり、バッチングされると困る時はこの設定を使うと良さそうです。

f:id:esakun:20170525150601p:plain

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

CanUseSpriteAtlas

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

PreviewType

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

デフォルト Plane Skybox
f:id:esakun:20170526093640p:plain f:id:esakun:20170526093654p:plain f:id:esakun:20170526093718p:plain

f:id:esakun:20170526094114g:plain
またデフォルトの場合は、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は実行されません。

参考