// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

// Shader created with Shader Forge v1.27 
// Shader Forge (c) Neat Corporation / Joachim Holmer - http://www.acegikmo.com/shaderforge/
// Optimized by Blastom
Shader "Zhanyou/Particles/NiuquAdd" {
    Properties {
        _dif ("dif", 2D) = "white" {}
        _node_1489_copy ("node_1489_copy", 2D) = "white" {}
        _niuqu_01 ("niuqu_01", Range(0, 1)) = 0.2155751
        _alpha ("alpha", 2D) = "white" {}
        _node_6990 ("node_6990", Color) = (0.5,0.5,0.5,1)
        _Alpha ("Alpha", Range(0, 5)) = 0
		_uvSpeed("UvSpeed (xy for node_3491, zw for node_3745)", Vector) = (0.2, -0.3, 0, 0)
    }
    SubShader {
        Tags {
            "IgnoreProjector"="True"
            "Queue"="Transparent"
            "RenderType"="Transparent"
        }
		Lighting Off
        Pass {
			//BlendOp Add, Max
			Blend One One//, One One
            Cull Off
            ZWrite Off
			ColorMask RGB
            
            CGPROGRAM
			#include "UnityCG.cginc"
            #pragma vertex vert
            #pragma fragment frag
			#pragma multi_compile_fog
			#pragma multi_compile_particles
            uniform float4 _TimeEditor;
            uniform sampler2D _dif; uniform float4 _dif_ST;
            uniform sampler2D _node_1489_copy; uniform float4 _node_1489_copy_ST;
            uniform float _niuqu_01;
            uniform sampler2D _alpha; uniform float4 _alpha_ST;
            uniform float4 _node_6990;
            uniform float _Alpha;
			uniform half4 _uvSpeed;
            struct VertexInput {
                float4 vertex : POSITION;
                float2 texcoord0 : TEXCOORD0;
                float4 vertexColor : COLOR;
            };
            struct VertexOutput {
                float4 pos : SV_POSITION;
                float2 uv0 : TEXCOORD0;
				UNITY_FOG_COORDS(1)
                float4 vertexColor : COLOR;
            };
            VertexOutput vert (VertexInput v) {
				VertexOutput o;
				UNITY_INITIALIZE_OUTPUT(VertexOutput, o);
                o.uv0 = v.texcoord0;
                o.vertexColor = v.vertexColor;
                o.pos = UnityObjectToClipPos(v.vertex );
				UNITY_TRANSFER_FOG(o, o.pos); 
                return o;
            }
            float4 frag(VertexOutput i) : SV_TARGET {
                float4 node_97 = _Time + _TimeEditor;
                float2 node_2777 = TRANSFORM_TEX(i.uv0, _node_1489_copy);
                float4 _node_1489_copy_var = tex2D(_node_1489_copy, node_2777 + node_97.g * _uvSpeed.xy);
				float2 node_7041 = TRANSFORM_TEX((i.uv0 + _node_1489_copy_var.g * _niuqu_01), _dif);
				float4 _dif_var = tex2D(_dif, node_7041 + node_97.g * _uvSpeed.zw);
                float _alpha_var = tex2D(_alpha, TRANSFORM_TEX(i.uv0, _alpha)).a;
				_alpha_var = saturate(_dif_var.a * _alpha_var * i.vertexColor.a * _Alpha * _node_6990.a);
                float3 finalColor = _dif_var.rgb * i.vertexColor.rgb * _node_6990.rgb * _alpha_var;
                fixed4 c = fixed4(finalColor, 0.001);
				UNITY_APPLY_FOG_COLOR(i.fogCoord, c, fixed4(0,0,0,0)); // fog towards black due to our blend mode
				return c;
            }
            ENDCG
        }
    }
	// SM3.0���»������������ݻ��ӻع�������ȾShader
	SubShader
	{
		Tags {
	        "IgnoreProjector"="True"
	        "Queue"="Transparent"
			// ��ֹShader Replace��Ⱦ�������
	        "RenderType"="NoReplace"
		}
		Pass {
			ColorMask 0
		}
	}
}