- Home /
Transparent Diffuse Specular Normal Shader problem
I'm trying to create a shader that uses separated alpha, specular and normal maps along with a color texture, but I'm having some strange problems with it and I can't figure out what's wrong.
Here's my shader:
Shader "Custom/DiffuseAlphaNormalSpecular" {
Properties {
_MainTex ("Diffuse", 2D) = "white" {}
_AlphaMap ("Alpha", 2D) = "white" {}
_BumpMap ("Normalmap", 2D) = "bump" {}
_SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)
_SpecularMap ("Specular", 2D) = "white" {}
_Shininess ("Shininess", Range (0.01, 1)) = 0.5
}
SubShader {
Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
LOD 300
CGPROGRAM
#pragma surface surf BlinnPhong alpha decal:blend
sampler2D _MainTex;
sampler2D _AlphaMap;
sampler2D _BumpMap;
sampler2D _SpecularMap;
half _Shininess;
struct Input {
float2 uv_MainTex;
float2 uv_AlphaMap;
float2 uv_SpecularMap;
float2 uv_BumpMap;
};
void surf (Input IN, inout SurfaceOutput o) {
half4 d = tex2D (_MainTex, IN.uv_MainTex);
half4 a = tex2D (_AlphaMap, IN.uv_AlphaMap);
half4 b = tex2D (_BumpMap, IN.uv_BumpMap);
half4 s = tex2D (_SpecularMap, IN.uv_SpecularMap);
o.Albedo = d.rgb;
o.Alpha = Luminance(a.rgb);
o.Normal = UnpackNormal(b);
o.Specular = _Shininess;
o.Gloss = s.rgb * o.Alpha;;
}
ENDCG
}
FallBack "Transparent/Diffuse"
}
and here is the problem:
Answer by KvanteTore · Mar 23, 2012 at 07:35 AM
This might be a bit late, but I found this question while looking for solutions to my own problems. The problem is (the lack of) self sorting when rendering a semi transparent mesh.
See http://forum.unity3d.com/threads/68636-Alpha-transparency-self-sorting-issue-help-really-appreciated
One solution that mentioned in the forum thread is to first draw a depth only pass with a non-transparent shader and then render the transparent shader on top. You might get other artifacts from that, including stuff not being rendered under the character, so it's probably best to render it after everything else setting "Queue"="Transparent+100"
Your answer
Follow this Question
Related Questions
Changing custom shader. Add alpha cutout 1 Answer
Shaders -- Tinting while respecting texture alpha 0 Answers
Transparent / Vertex Lit Ignore Sides 1 Answer
Cutout Shader getting Opaque when turning alpha off and on again 1 Answer
Simplest Unlit Instanced shader - how to enable switching it on/off (with AlphaTest)? 0 Answers