Shader "URP/Postprocess/ParticleAdd"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _BloomFactor("Bloom Fator", Range(0, 1)) = 0.0
    }
        SubShader
        {
            Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "PreviewType" = "Plane" "RenderType" = "Effect" }
            LOD 100

            Pass
            {
                Name "RGB"
                Tags{ "LightMode" = "UniversalForward" }
                Lighting Off 
                Cull Off
                ZWrite Off
                Blend SrcAlpha OneMinusSrcAlpha
                ColorMask RGB

                CGPROGRAM
                #pragma vertex vert
                #pragma fragment frag
                // make fog work
                #pragma multi_compile_fog

                #include "UnityCG.cginc"

                float _BloomFactor;

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                return o;
            }

            fixed4 frag (v2f i) : SV_Target
            {
                // sample the texture
                fixed4 col = tex2D(_MainTex, i.uv);
                return col;
            }
            ENDCG
        }


            Pass
            {
                Name "a"
                Tags{ "LightMode" = "SRPDefaultUnlit" }
                Cull Off
                Lighting Off
                ZWrite Off
                //ZTest Off
                Blend SrcAlpha  OneMinusSrcAlpha
                ColorMask A
                CGPROGRAM
                #pragma vertex vert
                #pragma fragment frag
                // make fog work
                #pragma multi_compile_fog

                #include "UnityCG.cginc"

                float _BloomFactor;

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;

            v2f vert(appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                return o;
            }

            fixed4 frag(v2f i) : SV_Target
            { 
                // sample the texture
            fixed4 col = tex2D(_MainTex, i.uv);
            col.w = col.w * _BloomFactor + 0.5f; // 0.5f 是为了覆盖掉之前渲染物体的_Bloom Factor
            return col;
        }
        ENDCG
    }

    }
}
