diff options
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.shader | 160 |
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 + } + } + } +} |