// Author: Blastom
// 仅用于摄像机拍摄UI面板的RenderTexture
// 该材质会向颜色Buffer中写入Alpha值,因此不会在没有背景时被剔除
Shader "Zhanyou/Particles/AdditiveAlphaWriteMask"
{
	Properties
	{
		_TintColor ("Tint Color", Color) = (0.5, 0.5, 0.5, 0.5)
		_MainTex ("Particle Texture", 2D) = "white" {}
		_UseMask("UseMask",Float) = 0
		_ClipRect("Clip Rect", Vector) = (0,0,0,0)
	}
	Category {
			Tags{ "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" "PreviewType" = "Plane" }
			//BlendOp Add, Max
			Blend One One//, One One
			Cull Off
			ColorMask RGB
			Lighting Off
			ZWrite Off
		
		SubShader {
			Pass {
				CGPROGRAM
				#pragma vertex vert
				#pragma fragment frag
				#pragma multi_compile_fog
				#pragma multi_compile_particles
				#include "UnityCG.cginc"
				#include "UnityUI.cginc"
	
				sampler2D _MainTex;
				fixed4 _TintColor;
				float _UseMask;
				float4 _ClipRect;
				struct appdata_t {
					float4 vertex : POSITION;
					fixed4 color : COLOR;
					float2 texcoord : TEXCOORD0;
				};
				
				struct v2f {
					float4 vertex : SV_POSITION;
					fixed4 color : COLOR;
					float2 texcoord : TEXCOORD0;
					float3 vpos : TEXCOORD2;
					UNITY_FOG_COORDS(1)
				};
				
				uniform float4 _MainTex_ST;
				
				v2f vert (appdata_t v)
				{
					v2f o;
					o.vpos = mul(unity_ObjectToWorld, v.vertex).xyz;
					o.vertex = UnityObjectToClipPos(v.vertex);
					o.color = v.color;
					o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex);
					UNITY_TRANSFER_FOG(o,o.vertex);
					return o;
				}
				fixed4 frag (v2f i) : SV_Target
				{
					fixed4 col = 2.0f * i.color * _TintColor * tex2D(_MainTex, i.texcoord);

					col.rgb *= col.a;

					UNITY_APPLY_FOG_COLOR(i.fogCoord, col, fixed4(0, 0, 0, 0));
					if (_UseMask >= 1)
						col *= UnityGet2DClipping(i.vpos.xy, _ClipRect);
					return col;
				}
				ENDCG 
			}
		}	
	}
}