Toon Lighted Alpha

Hi there,

I’m using a cel-shaded style for my game through the Toon Lighted/Outline Shader and I need my enemies to fade out once killed.

Do any of you know how to add the alpha channel to a shader?

I know it’s been answered before but that was for the Toon Basic shader, and I’ve tried applying those concepts to the Lighted version, but Lighted seems to be a bit more complicated and I must be missing something.

Thanks,
Jordan

Here’s the Shader:

Shader "Toon/Lighted" {
	Properties {
		_Color ("Main Color", Color) = (0.5,0.5,0.5,1)
		_MainTex ("Base (RGB)", 2D) = "white" {}
		_Ramp ("Toon Ramp (RGB)", 2D) = "gray" {} 
	}

	SubShader {
		Tags {"Queue"="Transparent" "RenderType"="Transparent"}
		Blend SrcAlpha OneMinusSrcAlpha
		LOD 200
		
CGPROGRAM
#pragma surface surf ToonRamp

sampler2D _Ramp;

// 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.5 + 0.5;
	half3 ramp = tex2D (_Ramp, float2(d,d)).rgb;
	
	half4 c;
	c.rgb = s.Albedo * _LightColor0.rgb * ramp * (atten * 2);
	c.a = 0;
	return c;
}


sampler2D _MainTex;
float4 _Color;

struct Input {
	float2 uv_MainTex : TEXCOORD0;
};

void surf (Input IN, inout SurfaceOutput o) {
	half4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
	o.Albedo = c.rgb;
	o.Alpha = c.a;
}
ENDCG

	} 

	Fallback "Diffuse"
}

And here’s the outlined version.

    Shader "Toon/Lighted Outline" {
	Properties {
		_Color ("Main Color", Color) = (0.5,0.5,0.5,1)
		_OutlineColor ("Outline Color", Color) = (0,0,0,1)
		_Outline ("Outline width", Range (.002, 0.03)) = .005
		_MainTex ("Base (RGB)", 2D) = "white" {}
		_Ramp ("Toon Ramp (RGB)", 2D) = "gray" {} 
	}

	SubShader {
		Tags { "RenderType"="Opaque" }
		UsePass "Toon/Basic/FORWARD"
		UsePass "Toon/Basic Outline/OUTLINE"
	} 
	
	Fallback "Toon/Lighted"
}

Currently, the object with the shader on is transparent, but it is always transparent and I have no control on it with the alpha channel. Any help, please?

I think if you changed the line “c.a = 0;” in the function “inline” to “c.a = s.Alpha;” it should work. Here is a Lighted Toon Shader with Alpha that worked for me:

Shader "Toon/Lighted with Alpha" {
    	Properties {
    		_Color ("Main Color", Color) = (0.5,0.5,0.5,1)
    		_MainTex ("Base (RGB)", 2D) = "white" {}
    		_Ramp ("Toon Ramp (RGB)", 2D) = "gray" {} 
    	}
    
    	SubShader {
    		Tags {"Queue"="Transparent" "RenderType"="Transparent"}
    		Blend SrcAlpha OneMinusSrcAlpha
    		LOD 200
    		
    CGPROGRAM
    #pragma surface surf ToonRamp
    
    sampler2D _Ramp;
    
    // 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.5 + 0.5;
    	half3 ramp = tex2D (_Ramp, float2(d,d)).rgb;
    	
    	half4 c;
    	c.rgb = s.Albedo * _LightColor0.rgb * ramp * (atten * 2);
    	c.a = s.Alpha;
    	return c;
    }
    
    
    sampler2D _MainTex;
    float4 _Color;
    
    struct Input {
    	float2 uv_MainTex : TEXCOORD0;
    };
    
    void surf (Input IN, inout SurfaceOutput o) {
    	half4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
    	o.Albedo = c.rgb;
    	o.Alpha = c.a;
    }
    ENDCG
    
    	} 
    
    	Fallback "Diffuse"
    }

Any chance of this exact thign with outlines?
Can’t seem to find or figure it out.