- Home /
Question by
CrippleYourself · Dec 08, 2012 at 09:41 AM ·
shaderlightdiffuse
Rim Light shader problem
I wrote a simple Rim Light shader, but it doesn't actually make the falloff effect, as expected. Instead, it just colors half the object in white, the other half in black and rotates is around as the light rotates. Here is my code :
Shader "Custom/DemoBRDF" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
//_Ramp2D("Ramp texture", 2D) = "grey"{}
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Ramp
#pragma target 3.0
sampler2D _MainTex;
sampler2D _Ramp2D;
fixed4 LightingRamp (SurfaceOutput s, fixed3 lightDir, fixed atten, fixed viewDir)
{
float NdotL = dot (s.Normal, lightDir);
float NdotE = 1.0 - saturate(dot (s.Normal,normalize(viewDir)));
fixed diff = (NdotL*0.5) + 0.5;
//float2 brdfUV = float2(NdotE * .8, diff);
//float3 BRDF = tex2D(_Ramp2D, brdfUV).rgb;
fixed4 c;
//c.rgb = s.Albedo * _LightColor0.rgb * (diff * atten * 2); - Default Lambert
c.rgb = NdotE; //float3(NdotE, NdotE, NdotE);
c.a = s.Alpha;
return c;
}
struct Input
{
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutput o)
{
half4 c = float4(.5, .5, .5, 1); //tex2D (_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
Comment
It appears that your viewdir is fixed rather than fixed3
You can do rim lighting in the surface function too BTW
Your answer
Follow this Question
Related Questions
How to make sprite to react to light? 1 Answer
How to add rim light for mobile in my shader? 0 Answers
Shader errors 0 Answers
Shader: Rim outer & Inner 1 Answer