- Home /
Question by
jameskyle · Feb 13, 2014 at 05:40 PM ·
shadershaderlabsurface shader
Surface Shaders have Slight Trasparency. Why?
I'm trying to make a simple surface shader that will allow for the use of a transparency map. It seems to be fine until a view the "donut" type sample on the bottom left of the Unity UI. I can see a slight transparency to it, even when there's no map added, an all white map is used or I just set o.Alpha to 1;
My code:
Shader "James Kyle/Surface Shaders/007 - Colour Ramp Transparency Normal Rim Lighting"
{
Properties
{
_ColorTint ("Texture Tint", Color) = (1,1,1,1)
_MainTex ("Texture", 2D) = "white" {}
_AlphaTex ("Alpha Map", 2D) = "white" {}
_Ramp ("Shader Ramp", 2D) = "gray" {}
_BumpTex ("Normal Map", 2D) = "bump" {}
_RimColor ("Rim Colour", Color) = (1,1,1,1)
_RimPower ("Rim Power", Range(0.5, 8.0)) = 3.0
}
SubShader
{
Tags
{
"Queue"="Transparent"
"RenderType"="Opaque"
}
CGPROGRAM
#pragma surface surf Ramp alpha
struct Input {
float2 uv_MainTex;
float2 uv_AlphaTex;
float2 uv_BumpTex;
float3 viewDir;
};
float4 _ColorTint;
sampler2D _MainTex;
sampler2D _AlphaTex;
sampler2D _Ramp;
sampler2D _BumpTex;
float4 _RimColor;
float _RimPower;
// Custom lighting model...
half4 LightingRamp (SurfaceOutput s, half3 lightDir, half atten)
{
half NdotL = dot (s.Normal, lightDir);
half diff = NdotL * 0.5 + 0.5;
half3 ramp = tex2D (_Ramp, float2(diff,diff)).rgb;
half4 c;
c.rgb = s.Albedo * _LightColor0.rgb * ramp * (atten * 2);
c.a = s.Alpha;
return c;
}
void surf (Input IN, inout SurfaceOutput o)
{
o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb * _ColorTint.rgb;
o.Alpha = tex2D(_AlphaTex, IN.uv_AlphaTex).a;
o.Normal = UnpackNormal(tex2D(_BumpTex, IN.uv_BumpTex));
half rim = 1 - saturate(dot(normalize(IN.viewDir), o.Normal));
o.Emission = _RimColor.rgb * pow(rim, _RimPower);
}
ENDCG
}
FallBack "Diffuse"
}
Digging around the only thing I can find that seems similar is this, but I've added the "Queue" = "Transparent" tag to no improvement. Can anyone see any reason why this is working like this? I'm at a total loss.
Comment