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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
Shader "Hovl/Particles/Add_Fresnel"
{
Properties
{
_MainTex("MainTex", 2D) = "white" {}
_Noise("Noise", 2D) = "white" {}
_Color("Color", Color) = (0.5,0.5,0.5,1)
_Emission("Emission", Float) = 2
_SpeedMainTexUVNoiseZW("Speed MainTex U/V + Noise Z/W", Vector) = (0,0,0,0)
_Flow("Flow", 2D) = "white" {}
_Mask("Mask", 2D) = "white" {}
_Distortionpower("Distortion power", Float) = 0.2
_Fresnelscale("Fresnel scale", Float) = 3
_Fresnelpower("Fresnel power", Float) = 3
_Depthpower("Depth power", Float) = 0.2
[Toggle]_Useonlycolor("Use only color", Float) = 0
[HideInInspector] _texcoord( "", 2D ) = "white" {}
}
Category
{
SubShader
{
Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" }
Blend SrcAlpha OneMinusSrcAlpha
ColorMask RGB
Cull Off
Lighting Off
ZWrite Off
ZTest LEqual
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
//#pragma target 2.0
#pragma multi_compile_particles
#pragma multi_compile_fog
#include "UnityShaderVariables.cginc"
#include "UnityCG.cginc"
struct appdata_t
{
float4 vertex : POSITION;
fixed4 color : COLOR;
float4 texcoord : TEXCOORD0;
UNITY_VERTEX_INPUT_INSTANCE_ID
float3 ase_normal : NORMAL;
};
struct v2f
{
float4 vertex : SV_POSITION;
fixed4 color : COLOR;
float4 texcoord : TEXCOORD0;
UNITY_FOG_COORDS(1)
#ifdef SOFTPARTICLES_ON
float4 projPos : TEXCOORD2;
#endif
UNITY_VERTEX_OUTPUT_STEREO
float4 ase_texcoord3 : TEXCOORD3;
float4 ase_texcoord4 : TEXCOORD4;
//float4 ase_texcoord5 : TEXCOORD5;
};
uniform sampler2D _MainTex;
uniform fixed4 _TintColor;
uniform float4 _MainTex_ST;
uniform sampler2D_float _CameraDepthTexture;
uniform float _Useonlycolor;
uniform float4 _SpeedMainTexUVNoiseZW;
uniform sampler2D _Mask;
uniform float4 _Mask_ST;
uniform sampler2D _Flow;
uniform float4 _Flow_ST;
uniform float _Distortionpower;
uniform sampler2D _Noise;
uniform float4 _Noise_ST;
uniform float4 _Color;
uniform float _Emission;
uniform float _Fresnelscale;
uniform float _Fresnelpower;
uniform float _Depthpower;
v2f vert ( appdata_t v )
{
v2f o;
UNITY_SETUP_INSTANCE_ID(v);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
float3 ase_worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
o.ase_texcoord3.xyz = ase_worldPos;
float3 ase_worldNormal = UnityObjectToWorldNormal(v.ase_normal);
o.ase_texcoord4.xyz = ase_worldNormal;
float4 ase_clipPos = UnityObjectToClipPos(v.vertex);
float4 screenPos = ComputeScreenPos(ase_clipPos);
//o.ase_texcoord5 = screenPos;
//setting value to unused interpolator channels and avoid initialization warnings
o.ase_texcoord3.w = 0;
o.ase_texcoord4.w = 0;
v.vertex.xyz += float3( 0, 0, 0 ) ;
o.vertex = UnityObjectToClipPos(v.vertex);
#ifdef SOFTPARTICLES_ON
o.projPos = ComputeScreenPos (o.vertex);
COMPUTE_EYEDEPTH(o.projPos.z);
#endif
o.color = v.color;
o.texcoord = v.texcoord;
UNITY_TRANSFER_FOG(o,o.vertex);
return o;
}
fixed4 frag ( v2f i , half ase_vface : VFACE ) : SV_Target
{
float fade = 1;
#ifdef SOFTPARTICLES_ON
float sceneZ = LinearEyeDepth (SAMPLE_DEPTH_TEXTURE_PROJ(_CameraDepthTexture, UNITY_PROJ_COORD(i.projPos)));
float partZ = i.projPos.z;
fade = saturate (_Depthpower * (sceneZ-partZ));
#endif
float2 appendResult186 = (float2(_SpeedMainTexUVNoiseZW.x , _SpeedMainTexUVNoiseZW.y));
float2 uv_MainTex = i.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;
float2 uv_Mask = i.texcoord.xy * _Mask_ST.xy + _Mask_ST.zw;
float2 appendResult177 = (float2(_SpeedMainTexUVNoiseZW.z , _SpeedMainTexUVNoiseZW.w));
float3 uv_Flow = i.texcoord.xyz;
uv_Flow.xy = i.texcoord.xyz.xy * _Flow_ST.xy + _Flow_ST.zw;
float4 tex2DNode203 = tex2D( _MainTex, ( ( ( appendResult186 * _Time.y ) + uv_MainTex ) - ( (( tex2D( _Mask, uv_Mask ) * tex2D( _Flow, ( ( _Time.y * appendResult177 ) + (uv_Flow).xy ) ) )).rg * _Distortionpower ) ) );
float2 uv_Noise = i.texcoord.xy * _Noise_ST.xy + _Noise_ST.zw;
float4 tex2DNode211 = tex2D( _Noise, uv_Noise );
float w199 = (1.0 + (uv_Flow.z - 0.0) * (128.0 - 1.0) / (1.0 - 0.0));
float4 temp_cast_3 = (tex2DNode203.a).xxxx;
float div207=256.0/float((int)w199);
float4 posterize207 = ( floor( temp_cast_3 * div207 ) / div207 );
float opac215 = (posterize207).a;
float3 ase_worldPos = i.ase_texcoord3.xyz;
float3 ase_worldViewDir = UnityWorldSpaceViewDir(ase_worldPos);
ase_worldViewDir = normalize(ase_worldViewDir);
float3 ase_worldNormal = i.ase_texcoord4.xyz;
float fresnelNdotV187 = dot( ase_worldNormal, ase_worldViewDir );
float fresnelNode187 = ( 0.0 + _Fresnelscale * pow( 1.0 - fresnelNdotV187, _Fresnelpower ) );
float clampResult193 = clamp( fresnelNode187 , 0.0 , 1.0 );
float switchResult206 = (((ase_vface>0)?(clampResult193):(0.0)));
float clampResult202 = clamp( fade , 0.0 , 1.0 );
float clampResult214 = clamp( ( (1.0 + (clampResult202 - 0.0) * (0.0 - 1.0) / (1.0 - 0.0)) - switchResult206 ) , 0.0 , 1.0 );
float4 appendResult224 = (float4(( lerp(float4( (( tex2DNode203 * tex2DNode211 * _Color * i.color )).rgb , 0.0 ),_Color,_Useonlycolor) * _Emission ).rgb , ( opac215 * tex2DNode211.a * _Color.a * i.color.a * ( switchResult206 + clampResult214 ) )));
fixed4 col = appendResult224;
UNITY_APPLY_FOG(i.fogCoord, col);
return col;
}
ENDCG
}
}
}
}
|