User:Baozhenliang/Edge Outline Cutout

Shader "Outline/Cutout" { Properties { _Color ("Main Color", Color) = (1,1,1,1) _Cutout ("Alpha Cutout", Range (0,1)) = .5 _MainTex ("Base (RGB)", 2D) = "white" { } _OutlineColor ("Outline Color", Color) = (0,0,0,1)	//改变这个能改变轮廓边的颜色 _OutlineWidth ("Outline width", Range (0.0, 0.03)) = 0.008	//改变这个能改变轮廓边的粗细 _OutlineAlpha ("Outline Alpha", Range (0.0, 1)) = 1	//改变这个能改变轮廓边的透明度 } CGINCLUDE uniform float _OutlineWidth; uniform float4 _OutlineColor; uniform sampler2D _MainTex; uniform float4 _MainTex_ST; uniform float _OutlineAlpha; float _Cutout; float4 _Color; struct v2f { float4 pos : POSITION; float4 color : COLOR; float2 texcoord : TEXCOORD1; }; ENDCG SubShader { Pass { Name "CUTOUT" Tags { "Queue"="AlphaTest" "IgnoreProjector"="True" "RenderType"="TransparentCutout" } ZWrite On			ZTest LEqual Blend SrcAlpha OneMinusSrcAlpha CGPROGRAM #pragma vertex vert #pragma fragment frag v2f vert(appdata_base v) { // just make a copy of incoming vertex data but scaled according to normal direction v2f o;				o.pos = mul(UNITY_MATRIX_MVP, v.vertex); float3 norm  = mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal); o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex); return o;			} half4 frag(v2f i) :COLOR { half4 col= tex2D(_MainTex,i.texcoord)*_Color; clip(col.a - _Cutout); return col; }			ENDCG }		Pass { Name "OUTLINE" Tags { "LightMode" = "Always" "RenderType"="Transparent"} Cull Front ZWrite On			ColorMask RGB Blend SrcAlpha OneMinusSrcAlpha //Offset 50,50 CGPROGRAM #pragma vertex vert #pragma fragment frag v2f vert(appdata_base v) { // just make a copy of incoming vertex data but scaled according to normal direction v2f o;				o.pos = mul(UNITY_MATRIX_MVP, v.vertex); float3 norm  = mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal); float2 offset = normalize(TransformViewToProjection(norm.xy)); o.pos.xy += offset * o.pos.z * _OutlineWidth; o.color = _OutlineColor; return o;			} half4 frag(v2f i) :COLOR { half4 col = i.color; col.a *=_OutlineAlpha; return col; }			ENDCG }	} 	Fallback "Unlit/Transparent Cutout" }
 * 1) include "UnityCG.cginc"