- Home /
Specular in shader not working correctly.
I'm having trouble with this shader. I'm following this tutorial on www.creativetd.com to add specular lighting to my project. As far as I know I've followed him to a T but the results aren't correct. The specular seems to be inverted and the coloring is wonky. So now I'm asking for help because I can't find what's wrong, anything provided would be much appreciated.
Here is my code:
Shader "Learning/Diffuse_Simple"
{
Properties
{
//Color Properties
_Color("Color", Color) = (1,1,1,1)
_SpecColor ("Specular Color", Color) = (1,1,1,1)
//Texture Properties
_MainTex("Main Texture", 2D) = "white" {}
_BumpMap("Bump Map", 2D) = "bump" {}
//Lighting Properties
_RimColor ("Rim Color", Color) = (0.26,0.19,0.16,0.0)
_RimPower ("Rim Power", Range(0.1,8.0)) = 3.0
_Shininess ("Specular Power", Range(-1,2)) = 0.5
}
SubShader
{
Tags {"RenderType" = "Opaque"}
CGPROGRAM
#pragma surface surf BlinnPhong
#pragma target 3.0
struct Input
{
float4 color : COLOR;
float2 uv_MainTex;
float2 uv_BumpMap;
float3 viewDir;
};
float4 _Color;
sampler2D _MainTex;
sampler2D _BumpMap;
float4 _RimColor;
float _RimPower;
float _Shininess;
void surf (Input IN, inout SurfaceOutput o)
{
//Apply Color
IN.color = _Color;
//Apply Texture Map
fixed4 tex = tex2D(_MainTex, IN.uv_MainTex);
//Apply Normal Map
float3 bump = UnpackNormal (tex2D(_BumpMap, IN.uv_BumpMap));
o.Normal = bump.rbg;
//Apply Specular
o.Specular = _Shininess;
o.Gloss = tex.a;
//Apply Rim Lighting
half rim = 1.0 - saturate(dot (normalize(IN.viewDir), o.Normal));
o.Emission = _RimColor.rgb * pow (rim, _RimPower);
}
ENDCG
}
Fallback "Diffuse"
}
This is my result:

Thanks so much for your time!
Comment
here is another tutorial site : http://unitygems.com/noobshader1/
Your answer
Follow this Question
Related Questions
Coloured specularity mapping? 1 Answer
Bump Specular with Hue Shift 0 Answers
Cartoon specular, regular diffuse, fresnel reflective? 1 Answer
Spec only Shader, Again. 1 Answer
Fake specular shader for a sphere? 1 Answer