Or, embed this snippet using GenerateWP WordPress Plugin.

Download

Clone

Shader outline fung guys

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "Outline2" {
	Properties {
		_Color ("Main Color", Color) = (.5,.5,.5,1)
		_OutlineColor ("Outline Color", Color) = (0,0,0,1)
		_Outline ("Outline width", Range (0.0, 10.0)) = 0
		_MainTex ("Base (RGB)", 2D) = "white" { }
		_BumpMap ("Bumpmap", 2D) = "bump" {}


		//metalic
		_MetallicMap("MetallicMap", 2D) = "metalic" { }
		_Glossiness("Smoothness", Range(0,1)) = 0.5
		_Metallic("Metallic", Range(0,1)) = 0.0

         //emission
		_EmissionMap("EmssionMap", 2D) = "emssion" {}
		_Emission("Emission", float) = 0
		_EmissionColor("EmissionColor", Color) = (1, 1, 1, 1)
	}
 
	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) {
		// just make a copy of incoming vertex data but scaled according to normal direction
		v2f o;
		o.pos = UnityObjectToClipPos(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 { "Queue" = "Transparent" }
 
			// note that a vertex shader is specified here but its using the one above
			Pass {
				Name "OUTLINE"
				Tags { "LightMode" = "Always" }
				Cull Off
				ZWrite Off
				ZTest Always
 
				// you can choose what kind of blending mode you want for the outline
				Blend SrcAlpha OneMinusSrcAlpha // Normal
				//Blend One One // Additive
				//Blend One OneMinusDstColor // Soft Additive
				//Blend DstColor Zero // Multiplicative
				//Blend DstColor SrcColor // 2x Multiplicative
 
				CGPROGRAM
				#pragma vertex vert
				#pragma fragment frag
	         	#include "UnityCG.cginc"
 
				half4 frag(v2f i) : COLOR {
					return i.color;
				}
				ENDCG
			}
 
 
			CGPROGRAM
			//#pragma surface surf Lambert
			#pragma surface surf Standard
			struct Input {
				float2 uv_MainTex;
				float2 uv_BumpMap;
				float2 uv_EmissionMap;
				float2 uv_MetallicMap;
			};

			sampler2D _MainTex;
			sampler2D _BumpMap;
			sampler2D _EmissionMap;
			sampler2D _MetallicMap;
			
			float _Emission;
			half _Glossiness;
			half _Metallic;
			fixed4 _Color;
			fixed4 _EmissionColor;

			void surf(Input IN, inout SurfaceOutputStandard o) {
				// Albedo comes from a texture tinted by color
				fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
				fixed4 b = tex2D(_EmissionMap, IN.uv_EmissionMap) * _EmissionColor;
				fixed4 d = tex2D(_MetallicMap, IN.uv_MetallicMap) * _Metallic;
				o.Albedo = c.rgb;
				// Metallic and smoothness come from slider variables
				o.Metallic = d.rbg * tex2D(_MetallicMap, IN.uv_MetallicMap).a *_Glossiness;;
				o.Smoothness = _Glossiness;
				o.Alpha = c.a;
				o.Emission = b.rgb * tex2D(_EmissionMap, IN.uv_EmissionMap).a * _Emission;
			}
			ENDCG
 
		}
 
		SubShader {
			Tags { "Queue" = "Transparent" }
 
			Pass {
				Name "OUTLINE"
				Tags { "LightMode" = "Always" }
				Cull Front
				ZWrite Off
				ZTest Always
				Offset 15,15
 
				// you can choose what kind of blending mode you want for the outline
				Blend SrcAlpha OneMinusSrcAlpha // Normal
				//Blend One One // Additive
				//Blend One OneMinusDstColor // Soft Additive
				//Blend DstColor Zero // Multiplicative
				//Blend DstColor SrcColor // 2x Multiplicative
 
				CGPROGRAM
				#pragma vertex vert
				ENDCG
				SetTexture [_MainTex] { combine primary }
			}
 
			CGPROGRAM
			#pragma surface surf Lambert
			struct Input {
				float2 uv_MainTex;
				float2 uv_BumpMap;
			};
			sampler2D _MainTex;
			sampler2D _BumpMap;
			uniform float3 _Color;
			void surf(Input IN, inout SurfaceOutput o) {
				o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb * _Color;
				o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
			}
			ENDCG
		}
		Fallback "Outline2"
}