問題
サーフェスシェーダで、半透明なシェーダを作っている際に描画順が崩れた。
元コード↓
Shader "hoge/hoge" { Properties { } SubShader { ZWrite On Tags { "Queue" = "Transparent" "RenderType" = "Transparent" } CGPROGRAM #pragma surface surf Lambert alpha struct Input { }; void surf (Input IN, inout SurfaceOutput o) { } ENDCG } Fallback "Diffuse" }
解決手段
下記のようにZWrite On
を記述していたところを、Pass
で囲って下記のようにする。
Pass { ZWrite On ColorMask 0 }
コード全体
Shader "hoge/hoge" { Properties { } SubShader { Pass { ZWrite On ColorMask 0 } Tags { "Queue" = "Transparent" "RenderType" = "Transparent" } CGPROGRAM #pragma surface surf Lambert alpha struct Input { }; void surf (Input IN, inout SurfaceOutput o) { } ENDCG } Fallback "Diffuse" }