StandardShaderでは、PassによってBlendやZWriteが以下のように記述されていて、外部から設定可能になっています(ただし、ここに出てくる_SrcBlendなどのプロパティはインスペクタ上は非表示なのでユーザーは直接変更できません。)
Name "FORWARD" Tags { "LightMode" = "ForwardBase" } Blend [_SrcBlend] [_DstBlend] ZWrite [_ZWrite]
ShaderLabではプロパティを"["〜"]"で囲むことでその値を使用できるんですが、具体的にどんな値が入っているのかが気になったので調べました。
結論だけ書くと、Blend/ZWriteの引数は数値(小数点以下は切り捨て)を取ります。ユーザーが直接数値を設定する場合は、下記の対応する列挙体を参考にします(保証された方法ではないですが、StandardShaderがやってるんだから、問題ないかと思います)。
Cull [_Cull]
UnityEngine.Rendering.CullMode
https://docs.unity3d.com/ScriptReference/Rendering.CullMode.html
ZTest [_ZTest]
UnityEngine.Rendering.CompareFunction
https://docs.unity3d.com/ScriptReference/Rendering.CompareFunction.html
ZWrite [_ZWrite]
対応する列挙体無し。以下のようなプロパティを作る。
[Enum(Off, 0, On, 1)] _ZWrite("ZWrite", Float) = 0
Blend [_SrcFactor][_DstFactor]
SrcFactor/DstDactorそれぞれ適用可能
https://docs.unity3d.com/ScriptReference/Rendering.BlendMode.html
参考記事
下記サイトを参考にさせていただきました。ありがとうございます(しかしこれどうやって確認したんだろう? すごい)
[Unity]ZTestやBlend等をシェーダー外から設定する
https://qiita.com/Fuji0k0/items/f5e5d3651391f9b16327