wangguan
2020-12-29 452c75675679c44cc39b04bdb7d330d7c5c14d5c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
Shader "EffectShader/Niuqu"
{
    Properties
    {
        _NoiseTex("NoiseTex", 2D) = "white" {}
        _X_speed("X_speed", Float) = 0
        _Y_speed("Y_speed", Float) = 0
        _NioseMask("NioseMask", 2D) = "white" {}
        _X_Maskspeed("X_Maskspeed", Float) = 0
        _Y_Maskspeed("Y_Maskspeed", Float) = 0
        [Enum(UnityEngine.Rendering.CullMode)]_CullModle("CullModle", Float) = 0
        _qianduo("qianduo", Float) = 0
    }
    
    SubShader
    {
        
        
        Tags { "RenderType"="Transparent" "Queue"="Transparent" }
        LOD 100
 
        CGINCLUDE
        #pragma target 3.0
        ENDCG
        Blend SrcAlpha OneMinusSrcAlpha
        Cull [_CullModle]
        ColorMask RGBA
        ZWrite Off
        ZTest LEqual
        
        
        GrabPass{ }
 
        Pass
        {
            Name "Unlit"
            
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #pragma multi_compile_instancing
            #include "UnityCG.cginc"
            #include "UnityShaderVariables.cginc"
 
 
            struct appdata
            {
                float4 vertex : POSITION;
                float4 color : COLOR;
                UNITY_VERTEX_INPUT_INSTANCE_ID
                float4 ase_texcoord : TEXCOORD0;
            };
            
            struct v2f
            {
                float4 vertex : SV_POSITION;
                UNITY_VERTEX_INPUT_INSTANCE_ID
                UNITY_VERTEX_OUTPUT_STEREO
                float4 ase_texcoord : TEXCOORD0;
                float4 ase_texcoord1 : TEXCOORD1;
                float4 ase_color : COLOR;
            };
 
            uniform float _CullModle;
            uniform sampler2D _GrabTexture;
            uniform sampler2D _NoiseTex;
            uniform float _X_speed;
            uniform float _Y_speed;
            uniform float4 _NoiseTex_ST;
            uniform float _qianduo;
            uniform sampler2D _NioseMask;
            uniform float _X_Maskspeed;
            uniform float _Y_Maskspeed;
            uniform float4 _NioseMask_ST;
            
            v2f vert ( appdata v )
            {
                v2f o;
                UNITY_SETUP_INSTANCE_ID(v);
                UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
                UNITY_TRANSFER_INSTANCE_ID(v, o);
 
                float4 ase_clipPos = UnityObjectToClipPos(v.vertex);
                float4 screenPos = ComputeGrabScreenPos(ase_clipPos);
                o.ase_texcoord = screenPos;
                
                o.ase_texcoord1.xy = v.ase_texcoord.xy;
                o.ase_color = v.color;
                
                //setting value to unused interpolator channels and avoid initialization warnings
                o.ase_texcoord1.zw = 0;
                float3 vertexValue =  float3(0,0,0) ;
                #if ASE_ABSOLUTE_VERTEX_POS
                v.vertex.xyz = vertexValue;
                #else
                v.vertex.xyz += vertexValue;
                #endif
                o.vertex = UnityObjectToClipPos(v.vertex);
                return o;
            }
            
            fixed4 frag (v2f i ) : SV_Target
            {
                UNITY_SETUP_INSTANCE_ID(i);
                fixed4 finalColor;
                float4 screenPos = i.ase_texcoord;
                float4 ase_screenPosNorm = screenPos / screenPos.w;
                ase_screenPosNorm.z = ( UNITY_NEAR_CLIP_VALUE >= 0 ) ? ase_screenPosNorm.z : ase_screenPosNorm.z * 0.5 + 0.5;
                float2 appendResult43 = (float2(_X_speed , _Y_speed));
                float2 uv0_NoiseTex = i.ase_texcoord1.xy * _NoiseTex_ST.xy + _NoiseTex_ST.zw;
                float2 panner38 = ( _Time.y * appendResult43 + uv0_NoiseTex);
                float2 appendResult48 = (float2(_X_Maskspeed , _Y_Maskspeed));
                float2 uv0_NioseMask = i.ase_texcoord1.xy * _NioseMask_ST.xy + _NioseMask_ST.zw;
                float2 panner50 = ( _Time.y * appendResult48 + uv0_NioseMask);
                float4 tex2DNode32 = tex2D( _NioseMask, panner50 );
                float4 screenColor25 = tex2D( _GrabTexture, ( ase_screenPosNorm + ( ( ( tex2D( _NoiseTex, panner38 ).r + -0.5 ) * ( _qianduo * i.ase_color.a ) ) * tex2DNode32.r * tex2DNode32.a ) ).xy );
                float4 appendResult30 = (float4(screenColor25.rgb , 1.0));
                
                
                finalColor = appendResult30;
                return finalColor;
            }
            ENDCG
        }
    }
    CustomEditor "ASEMaterialInspector"
    
    
}