- Home /
Depth issues with a shader
Hi! I am using the shader below to render objects in the scene, but having depth issues with the objects even when Transparent tag is added. This is not a clipping plane issue either.
Shader "VertexColor Transparent Specular" {
Properties {
_Shininess ("Shininess", Range (0.03, 1)) = 0.078125
_SpecularColor("_SpecularColor", Color) = (1,1,1,0)
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
_GlossColor ("_GlossColor", Color) = (1,1,1,0)
}
SubShader {
Tags { "Queue"="Transparent" }
ZWrite On
Alphatest Greater 0
Blend SrcAlpha OneMinusSrcAlpha
ColorMask RGB
LOD 250
CGPROGRAM
#pragma surface surf MobileBlinnPhong exclude_path:prepass nolightmap noforwardadd alpha
half4 _GlossColor;
half4 _SpecularColor;
inline fixed4 LightingMobileBlinnPhong (SurfaceOutput s, fixed3 lightDir, fixed3 halfDir, fixed atten)
{
fixed diff = max (0, dot (s.Normal, lightDir));
fixed nh = max (0, dot (s.Normal, halfDir));
fixed spec = pow (nh, s.Specular*128) * _GlossColor;
fixed4 c;
c.rgb = (s.Albedo * _LightColor0.rgb * diff + _LightColor0.rgb * spec * _SpecularColor.rgb) * (atten*2);
c.a = 0.0;
return c;
}
sampler2D _MainTex;
half _Shininess;
struct Input {
float2 uv_MainTex;
float4 color : COLOR;
};
void surf (Input IN, inout SurfaceOutput o) {
fixed4 tex = tex2D(_MainTex, IN.uv_MainTex);
o.Albedo = tex.rgb * IN.color.rgb;
o.Alpha = IN.color.a;
o.Specular = _Shininess;
}
ENDCG
}
FallBack "Mobile/VertexLit"
}
Comment
Hi, did you find a solution for this by any chance? I have the same issue. When my shader does alpha rendering it doesn't let through any depth information.
Answer by ScroodgeM · Jul 19, 2012 at 07:55 AM
it's a wrong way to write to z-buffer in transparent shader. z-buffer will disable any other renders behind it even if you object is transparent
Your answer
Follow this Question
Related Questions
Change Z offset of lines 1 Answer
Shader depth order 0 Answers
ZBuffer and Object Depth 1 Answer
How to force the compilation of a shader in Unity? 5 Answers
Thickness Surface Shader 0 Answers