| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | 
							- Shader "FlatKit/LightPlane" {
 
- Properties
 
- {
 
-     [Header(Color alpha controls opacity)]
 
-     [HDR]_Color ("Color", Color) = (0.5, 0.5, 0.5, 1.0)
 
-     [Space(15)]
 
-     _Depth ("Depth Fade Distance", Range(1.0, 500.0)) = 100.0
 
-     [Space]
 
-     _CameraDistanceFadeFar("Camera Distance Fade Far", Float) = 10.0
 
-     _CameraDistanceFadeClose("Camera Distance Fade Close", Float) = 0.0
 
-     [Space]
 
-     _UvFadeX("UV Fade X", Range(0, 10)) = 0.1
 
-     _UvFadeY("UV Fade Y", Range(0, 10)) = 0.1
 
-     [ToggleOff]_AllowAlphaOverflow("Allow Alpha Overflow", Float) = 0.0
 
- }
 
- SubShader
 
- {
 
-     Tags{"Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent"}
 
-     LOD 200
 
-     Blend SrcAlpha OneMinusSrcAlpha
 
-     Lighting Off ZWrite Off
 
-     Pass
 
-     {
 
-         CGPROGRAM
 
-         #pragma vertex vert
 
-         #pragma fragment frag
 
-         #pragma shader_feature _ _ALLOWALPHAOVERFLOW_OFF
 
-         #pragma multi_compile_fog;
 
-         #pragma target 3.0
 
-         #include "UnityCG.cginc"
 
-         fixed4 _Color;
 
-         float _Depth;
 
-         float _CameraDistanceFadeFar, _CameraDistanceFadeClose;
 
-         float _UvFadeX, _UvFadeY;
 
-         UNITY_DECLARE_DEPTH_TEXTURE(_CameraDepthTexture);
 
-         struct appdata{
 
-             float4 vertex : POSITION;
 
-             float2 texcoord : TEXCOORD0;
 
-             UNITY_VERTEX_INPUT_INSTANCE_ID
 
-         };
 
-         struct v2f{
 
-             float2 uv : TEXCOORD0;
 
-             UNITY_FOG_COORDS(1)
 
-             float3 dist :TEXCOORD3;
 
-             float4 projPos : TEXCOORD2;
 
-             float4 vertex : SV_POSITION;
 
-             UNITY_VERTEX_OUTPUT_STEREO
 
-         };
 
-         v2f vert (appdata i){
 
-             v2f o;
 
-             UNITY_SETUP_INSTANCE_ID(i);
 
-             UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
 
-             o.vertex = UnityObjectToClipPos(i.vertex);
 
-             o.uv = i.texcoord;
 
-             UNITY_TRANSFER_FOG(o,o.vertex);
 
-             o.dist = UnityObjectToViewPos(i.vertex);
 
-             o.projPos = ComputeScreenPos(o.vertex);
 
-             UNITY_TRANSFER_DEPTH(o.projPos);
 
-             return o;
 
-         }
 
-         fixed4 frag(v2f i) : SV_TARGET
 
-         {
 
-             fixed4 c = _Color;
 
-             const float scene_depth = LinearEyeDepth(SAMPLE_DEPTH_TEXTURE_PROJ(_CameraDepthTexture, UNITY_PROJ_COORD(i.projPos)));
 
-             const float object_depth = i.projPos.z + length(i.dist);
 
-             const float depth_fade = saturate((scene_depth - object_depth) / _Depth);
 
-             c.a *= saturate((depth_fade * length(i.dist) - _CameraDistanceFadeClose) / (_CameraDistanceFadeFar - _CameraDistanceFadeClose));
 
-             const float fade_uv_x = pow(smoothstep(1, 0, abs(i.uv.x * 2 - 1)), _UvFadeX);
 
-             const float fade_uv_y = pow(smoothstep(1, 0, abs(i.uv.y * 2 - 1)), _UvFadeY);
 
-             c.a *= fade_uv_x * fade_uv_y;
 
- #ifdef _ALLOWALPHAOVERFLOW_OFF
 
-             c.a = saturate(c.a);
 
- #endif
 
-             UNITY_APPLY_FOG(i.fogCoord, c);
 
-             return c;
 
-         }
 
-     ENDCG
 
- }
 
- }
 
- FallBack "Diffuse"
 
- }
 
 
  |