Sorry if I'm in the wrong forum, but...
I'm editing a shader from the Unity3D asset store for a game Kirbypwnage and me are making, I love the colorful look of it, but.. it doesn't receive shadows all that well.
This is the code, for your information.
Shader "SolsticeShader"
{
Properties
{
_Color ("Main Color", Color) = (1,1,1,1)
_MainTex ("Base (RGB)", 2D) = "white" {}
_Ramp ("Toon Ramp (RGB)", 2D) = "gray" {}
_RimPower ("Rim Power", Float) = 1.8
_SColor ("Shadow Color", Color) = (0.0,0.0,0,0.5)
_LColor ("Highlight Color", Color) = (1,1,1,1)
}
SubShader
{
Tags {"Queue"="AlphaTest" "IgnoreProjector"="False" "RenderType"="TransparentCutout"}
LOD 200
Cull Off
CGPROGRAM
#pragma surface surf ToonRamp
sampler2D _MainTex;
sampler2D _Ramp;
float4 _Color;
float4 _LColor;
float4 _SColor;
float _RimPower;
// custom lighting function that uses a texture ramp based
// on angle between light direction and normal
#pragma lighting ToonRamp exclude_path:prepass
inline half4 LightingToonRamp (SurfaceOutput s, half3 lightDir, half atten)
{
#ifndef USING_DIRECTIONAL_LIGHT
lightDir = normalize(lightDir);
#endif
half d = dot (s.Normal, lightDir)*0.6 + 0.5;
half3 ramp = tex2D(_Ramp, float2(d,d)).rgb;
ramp = lerp(_SColor, _LColor, ramp);
half4 c;
c.rgb = s.Albedo * _LightColor0.rgb * ramp * (atten * 2);
c.a = 1;
return c;
}
struct Input
{
float2 uv_MainTex : TEXCOORD0;
float3 pos : POSITION0;
float3 viewDir;
};
void surf (Input IN, inout SurfaceOutput o)
{
half4 c = tex2D(_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb * _Color.rgb;
o.Alpha = c.a;
//Rim Outline
half rim = saturate( dot(normalize(IN.viewDir), o.Normal) );
o.Albedo *= smoothstep(1.0f - _RimPower, 1.0f, rim);
}
ENDCG
}
Fallback "VertexLit"
}
Go ahead and laugh at me, but I tried to fix it before, nothing works. I'm new to shaders, but I really want to learn how this works :-D But I don't know what I'm doing wrong. Could anyone help me? Even devs with some experience need a little support often, haha
Thanks in advance!
Greetings,
-Solstice / Bas