単純なアウトライン

1456 ワード

unity用の簡単な輪郭線効果ノートです.
Shader "Level4/Outline/SimpleOutlineOnly" {
	Properties {
		_OutlineColor("Outline Color",color) = (0,0,0,0)
		_Outline("Outline Width",float) = 0.01
	}
	
	CGINCLUDE
		#include "UnityCG.cginc"
		struct appdata_custom{
			float4 vertex:POSITION;
			float3 normal:NORMAL;
		};
		
		struct v2f{
			float4 pos:POSITION;
			float4 color:COLOR;
		};
		float4 _OutlineColor;
		float _Outline;
		/** 
			1  mvp .
			2  mvp xy _Outline , .
		*/
		v2f vert(appdata_custom i){
			v2f o;
			o.pos = mul(UNITY_MATRIX_MVP,i.vertex);
			float3 offset = mul((float3x3)UNITY_MATRIX_MVP,i.normal);
			
			o.pos.xy += offset.xy * _Outline;
			o.color = _OutlineColor;
			return o;
		}
		
		float4 frag(v2f i):COLOR{
			return i.color;
		}
	ENDCG
	
	SubShader{
		Tags{"Queue"="Transparent"}
		
		Pass{
			Name "outline"
			Tags{"LightMode"="Always"}
			Cull Front
			Blend One OneMinusSrcAlpha
			
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag
			ENDCG
		}
	}
	Fallback "Diffuse"
}

コントロール_OutLineColor(輪郭線の色)
_OutLine(輪郭線幅)
アニメーションを実現