Shader "Custom/Light"
{
Properties
{
_MainColor("MainColor", Color) = (1,1,1,1)
_ColorPow("ColorPow", float) = 1
_ColorIntensity("ColorIntensity", float) = 1
}
SubShader
{
pass
{
Tags{"Queue"="Transparent"}
Blend srcAlpha One
ZWrite Off
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
fixed4 _MainColor;
float _ColorIntensity;
float _ColorPow;
struct v2f
{
float4 pos : SV_POSITION;
float4 worldVertex : TEXCOORD0;
half3 worldNormal : TEXCOORD1;
};
v2f vert(appdata_base v)
{
v2f f;
f.pos = UnityObjectToClipPos(v.vertex);
f.worldVertex = mul(unity_ObjectToWorld, v.vertex);
f.worldNormal = UnityObjectToWorldNormal(v.normal);
return f;
}
fixed4 frag(v2f i) : SV_TARGET
{
fixed3 worldNormal = normalize(i.worldNormal);
fixed3 worldViewDir = normalize(UnityWorldSpaceViewDir(i.worldVertex));
float LightSize = pow(saturate(max(0, dot(worldNormal, worldViewDir))), _ColorPow) * _ColorIntensity;
return fixed4(_MainColor.rgb, LightSize);
}
ENDCG
}
}
}