- Home /
How to add an alpha channel to Unity Toon shader?
Hi,
I was wondering how this might be done?
Thanks.
The code for the Toon shader is as follows (Basic Outline unlit version):
Shader "Toon/Basic Outline" {
Properties {
_Color ("Main Color", Color) = (.5,.5,.5,1)
_OutlineColor ("Outline Color", Color) = (0,0,0,1)
_Outline ("Outline width", Range (.002, 0.03)) = .005
_MainTex ("Base (RGB)", 2D) = "white" { }
_ToonShade ("ToonShader Cubemap(RGB)", CUBE) = "" { Texgen CubeNormal }
}
CGINCLUDE
#include "UnityCG.cginc"
struct appdata {
float4 vertex : POSITION;
float3 normal : NORMAL;
};
struct v2f {
float4 pos : POSITION;
float4 color : COLOR;
};
uniform float _Outline;
uniform float4 _OutlineColor;
v2f vert(appdata v) {
v2f o;
o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
float3 norm = mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal);
float2 offset = TransformViewToProjection(norm.xy);
o.pos.xy += offset * o.pos.z * _Outline;
o.color = _OutlineColor;
return o;
}
ENDCG
SubShader {
Tags { "RenderType"="Opaque" }
UsePass "Toon/Basic/BASE"
Pass {
Name "OUTLINE"
Tags { "LightMode" = "Always" }
Cull Front
ZWrite On
ColorMask RGB
Blend SrcAlpha OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
half4 frag(v2f i) :COLOR { return i.color; }
ENDCG
}
}
SubShader {
Tags { "RenderType"="Opaque" }
UsePass "Toon/Basic/BASE"
Pass {
Name "OUTLINE"
Tags { "LightMode" = "Always" }
Cull Front
ZWrite On
ColorMask RGB
Blend SrcAlpha OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma exclude_renderers shaderonly
ENDCG
SetTexture [_MainTex] { combine primary }
}
}
Fallback "Toon/Basic"
}
Thanks for the suggestions guys, I'll have a play around and let you know how it goes soon!
Answer by ScroodgeM · Aug 13, 2012 at 05:34 PM
this shader is opaque, by default it renders in opaque queue (from front to back, transparent objects should render from back to front), writes to z-buffer. it means that transparency on this shader my looks incorrect. also, objects behind this object will not be rendered at all cause z-buffer is filled by this object. if you understand all of this and this is exactly what you need, describe in which input data you want be able to add alpha data and how it must change the result rendered. i'll help.
Answer by Dragonlance · Aug 13, 2012 at 05:42 PM
Here is a tutorial that has three basic shaderlab shaders. One with only, one with and one with
http://games.powerword.de/2012/08/tutorial-healthbar-and-shieldbar/
Check out the difference and you can play with your shaders settings to get the result you want.
Your answer
Follow this Question
Related Questions
Toon shader and alphas 0 Answers
How can I add alpha-channel to this shader? 2 Answers
Adding Alpha-Transparency to Shader 0 Answers
Toon Lighted Alpha 1 Answer
My Dream Shader 0 Answers