Shader "Effect/Halo"
|
{
|
Properties
|
{
|
_SwellSpd ("Swell Speed", Float ) = 1
|
_SwellFlu ("Swell Flux", Float ) = 0.2
|
_Color("Color",Color)=(1,1,1,1)
|
}
|
|
Subshader
|
{
|
LOD 300
|
|
Tags {
|
"Queue" = "Transparent+1"
|
"RenderType" = "Transparent"
|
"IgnoreProjector" = "True"
|
"LightMode" = "Always"
|
"ForceNoShadowCasting" = "True"
|
}
|
|
Pass
|
{
|
ZWrite Off
|
Blend SrcAlpha One
|
Cull Back
|
Lighting Off
|
Fog {Mode Off}
|
|
CGPROGRAM
|
#pragma target 3.0
|
#pragma vertex vert
|
#pragma fragment frag
|
|
#pragma multi_compile QUALITY_LOW QUALITY_MED QUALITY_HGH
|
#pragma fragmentoption ARB_precision_hint_fastest
|
#pragma exclude_renderers flash
|
|
#include "UnityCG.cginc"
|
#include "SnxxzCG.cginc"
|
|
struct VertInput
|
{
|
float4 vertex : POSITION;
|
float3 normal : NORMAL;
|
};
|
|
struct vertShader
|
{
|
float4 pos : SV_POSITION;
|
float4 glo : TEXCOORD0;
|
fixed fog : TEXCOORD1;
|
};
|
|
// properties
|
uniform float _SwellSpd;
|
uniform float _SwellFlu;
|
uniform float4 _Color;
|
|
vertShader vert ( VertInput v )
|
{
|
vertShader o;
|
o.pos = UnityObjectToClipPos (v.vertex);
|
o.glo = _Color* pow ( max ( 0, dot ( v.normal, normalize ( ObjSpaceViewDir ( v.vertex ) ) ) ), 2 );
|
o.glo *= 1 + sin ( _SwellSpd * _Time.z ) * _SwellFlu;
|
return o;
|
}
|
|
fixed4 frag ( vertShader i ) : SV_Target {
|
|
fixed4 outcolor = i.glo;
|
return outcolor;
|
}
|
|
ENDCG
|
}
|
}
|
//FallBack "Diffuse"
|
}
|