1つのMeshの半透明の各面の前後関係

Unityでの質問です。
1つのMeshで2つの四角形が描画されるように設定した頂点があり、z座標を使って前に描画するか後に描画するかを制御しています。

Cameraは座標(0,0,-10)に存在するため、zが0か-1であれば、-1の方が前に描画されると考え、最初の4つの頂点のz座標を-1に設定しています。

ですが、このmeshを描画するとなぜか後の頂点の四角形の方が上に描画されてしまいます。

別のmeshに分ければz座標による前後関係が思ったとおりになると思いますが、1つのmeshで起こるこの問題の理屈を教えていただきたいです。
よろしくお願いいたします。

cs

1var vertices = new Vector3[]2{3 new Vector3(0, 0, -1),4 new Vector3(2, 0, -1),5 new Vector3(0, 2, -1),6 new Vector3(2, 2, -1),7 8 new Vector3(1, 1, 0),9 new Vector3(3, 1, 0),10 new Vector3(1, 3, 0),11 new Vector3(3, 3, 0),12};

shader

1SubShader 2{ 3 Tags 4 { 5 "Queue" = "Transparent" 6 "RenderType" = "Transparent" 7 } 8 9ZTest LEqual 10 11ZWrite Off 12 13 Blend SrcAlpha OneMinusSrcAlpha 14 15 Pass 16 { 17 CGPROGRAM 18 #pragma vertex vert 19 #pragma fragment frag 20 #include "UnityCG.cginc" 21 22 struct appdata 23 { 24 float3 vertex : POSITION; 25 float4 color: COLOR; 26 }; 27 28 29 struct v2f 30 { 31 float4 vertex : SV_POSITION; 32 float4 color : COLOR; 33 }; 34 35 void vert(in appdata v, out v2f o) 36 { 37 o.vertex = UnityObjectToClipPos(v.vertex); 38 o.color = v.color; 39 } 40 41 void frag(in v2f i, out float4 col : SV_Target) 42 { 43 col = i.color; 44 } 45 ENDCG 46 } 47} 48

コメントを投稿

0 コメント