Forum Thread
  Posts  
Unity3D Custom Shader bugs (Forums : Coding & Scripting : Unity3D Custom Shader bugs) Locked
Thread Options
Oct 10 2014 Anchor

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 :P

Thanks in advance!

Greetings,
-Solstice / Bas

Reply to thread
click to sign in and post

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.