こんにちは、エンジニアのオオバです。
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に頂点が送られます。頂点シェーダーでいろいろやりたいことがあり、バッチングされると困る時はこの設定を使うと良さそうです。
バッチングされなくなるため↑このようにFrameDebuggerはその原因を示してくれます。
CanUseSpriteAtlas
これはよくわからないので、調査いたします。
PreviewType
インスペクタ内だけの話なので、普通は無視でOKです。
デフォルト | Plane | Skybox |
---|
またデフォルトの場合は、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は実行されません。
この記事が気に入ったらフォローしよう