Я пытаюсь создать шейдер, который позволяет объектам появляться только тогда, когда на данной точке перекрываются нечетные числа. В противном случае объект не должен отображаться. Однако, учитывая приведенный ниже код шейдера, он сначала хорошо работает с двумя перекрытиями, но начинает давать белый цвет, если есть четыре или более перекрытия. Вот демонстрационная картинка .
Код ниже:
Shader "Custom/FractionShader"
{
SubShader
{
Tags { "RenderType"="Opaque" "Queue" = "Geometry"}
LOD 200
Pass{
ZTest Always
Stencil{
Ref 2
Comp Equal
Pass DecrWrap
Fail IncrWrap
}
}
Pass {
ZTest Always
Stencil {
Ref 1
Comp Equal
}
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
struct appdata {
float4 vertex : POSITION;
};
struct v2f {
float4 pos : SV_POSITION;
};
v2f vert(appdata v) {
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
return o;
}
half4 frag(v2f i) : SV_Target {
return half4(0,0,0,1);
}
ENDCG
}
}
}