Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Shader "Rimlight_Base"
- {
- Properties
- {
- _Color ( "Main Color", Color ) = ( 1, 1, 1, 1 )
- _LamPower ("Lambert Power", Range(0.5,32.0)) = 3.0
- _RimColor ("Rim Color", Color) = ( 0.89, 0.945, 1.0, 0.0 )
- _RimPower ("Rim Power", Range(0.5,32.0)) = 3.0
- _RimPowerSecondary ("Rim Power - Secondary", Range(0.5,32.0)) = 3.0
- _RimLevel ("Rim Level", Range(0.0,1.0)) = 0.0
- _RimLevelSecondary ("Rim Level - Secondary", Range(0.0,1.0)) = 0.0
- _SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)
- _Shininess ("Shininess", Range (0.00, 1)) = 0.078125
- _SpecPower ("Spec Power", Range (0.00, 64.0)) = 48.0
- }
- SubShader
- {
- Tags { "RenderType"="Opaque" }
- CGPROGRAM
- #pragma surface surf SimpleSpecular noambient
- float _Shininess;
- float _SpecPower;
- float _LamPower;
- float4 LightingSimpleSpecular (SurfaceOutput s, half3 lightDir, half3 viewDir, half atten)
- {
- float3 h = normalize (lightDir + viewDir);
- float diff = 0.5 + dot( s.Normal, lightDir ) * 0.5;
- diff *= diff;
- diff = pow( diff, _LamPower );
- float nh = dot( s.Normal, h );
- float spec = pow(nh, _SpecPower);
- float4 c;
- c.rgb = (s.Albedo * _LightColor0.rgb * diff + _LightColor0.rgb * spec * _Shininess * _SpecColor) * atten;
- c.a = 1.0;
- return c;
- }
- struct Input
- {
- float3 viewDir;
- };
- float4 _RimColor;
- float _RimPower;
- float _RimLevel;
- float _RimPowerSecondary;
- float _RimLevelSecondary;
- float4 _Color;
- void surf (Input IN, inout SurfaceOutput o)
- {
- o.Albedo = _Color.rgb;
- float rim = 1.0 - saturate( dot( normalize( IN.viewDir ), o.Normal ) );
- float rimpower = pow( rim, _RimPower ) * _RimLevel;
- rimpower += pow( rim, _RimPowerSecondary ) * _RimLevelSecondary;
- o.Emission = _RimColor.rgb * rimpower;
- }
- ENDCG
- }
- Fallback "Diffuse"
- }
Advertisement
Add Comment
Please, Sign In to add comment