summaryrefslogtreecommitdiff
path: root/Assets/Art/Vfx/Sword slash VFX/Shaders/Add_Fresnel.shader
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Art/Vfx/Sword slash VFX/Shaders/Add_Fresnel.shader')
-rw-r--r--Assets/Art/Vfx/Sword slash VFX/Shaders/Add_Fresnel.shader160
1 files changed, 160 insertions, 0 deletions
diff --git a/Assets/Art/Vfx/Sword slash VFX/Shaders/Add_Fresnel.shader b/Assets/Art/Vfx/Sword slash VFX/Shaders/Add_Fresnel.shader
new file mode 100644
index 00000000..893da7d2
--- /dev/null
+++ b/Assets/Art/Vfx/Sword slash VFX/Shaders/Add_Fresnel.shader
@@ -0,0 +1,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
+ }
+ }
+ }
+}