ro-webgl/Assets/Shaders/FX_Effect/AutoNoise-Mask-Fre.shader
2021-12-21 09:40:39 +08:00

102 lines
4.3 KiB
GLSL

// Made with Amplify Shader Editor
// Available at the Unity Asset Store - http://u3d.as/y3X
Shader "MoleGame/Efxadd/Additive/AutoNoise-Mask-Fre"
{
Properties
{
_DistortMap("DistortMap", 2D) = "white" {}
_Speed("Speed", Range( 0 , 1)) = 0.1
_Distrot("Distrot", Range( 0 , 0.1)) = 0.1
_DistortOffset("DistortOffset", Range( -2 , 2)) = -0.8
_MaskMap("MaskMap", 2D) = "white" {}
_Alpha("Alpha", Range( 0 , 5)) = 2
_Tiling("Tiling", Range( 0 , 5)) = 0
_DisFrePower("Dis-Fre-Power", Range( 0 , 30)) = 6.318185
_DisFreScale("Dis-Fre-Scale", Range( 0 , 2)) = 1.430902
[Toggle]_DisFreinvert("Dis-Fre-invert", Float) = 1
[HDR]_FreColor("Fre-Color", Color) = (1,1,1,1)
_ColorFrePower("Color-Fre-Power", Range( 0 , 30)) = 6.318185
_ColorFreScale("Color-Fre-Scale", Range( 0 , 2)) = 1.430902
[Toggle]_ColorFreinvert("Color-Fre-invert", Float) = 1
[HideInInspector] _texcoord( "", 2D ) = "white" {}
[HideInInspector] __dirty( "", Int ) = 1
}
SubShader
{
Tags{ "RenderType" = "Transparent" "Queue" = "Overlay+0" "IsEmissive" = "true" }
Cull Back
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
GrabPass{ }
CGPROGRAM
#include "UnityShaderVariables.cginc"
#pragma target 3.0
#pragma surface surf Unlit keepalpha noshadow
struct Input
{
float3 worldPos;
float3 worldNormal;
float4 screenPos;
float2 uv_texcoord;
float4 vertexColor : COLOR;
};
uniform float4 _FreColor;
uniform float _ColorFreinvert;
uniform float _ColorFreScale;
uniform float _ColorFrePower;
uniform sampler2D _GrabTexture;
uniform sampler2D _DistortMap;
uniform float _Tiling;
uniform float _Speed;
uniform float _DistortOffset;
uniform sampler2D _MaskMap;
uniform float _Alpha;
uniform float _Distrot;
uniform float _DisFreinvert;
uniform float _DisFreScale;
uniform float _DisFrePower;
inline half4 LightingUnlit( SurfaceOutput s, half3 lightDir, half atten )
{
return half4 ( 0, 0, 0, s.Alpha );
}
void surf( Input i , inout SurfaceOutput o )
{
float3 ase_worldPos = i.worldPos;
float3 ase_worldViewDir = normalize( UnityWorldSpaceViewDir( ase_worldPos ) );
float3 ase_worldNormal = i.worldNormal;
float fresnelNdotV61 = dot( ase_worldNormal, ase_worldViewDir );
float fresnelNode61 = ( 0.0 + _ColorFreScale * pow( 1.0 - fresnelNdotV61, _ColorFrePower ) );
float4 ase_screenPos = float4( i.screenPos.xyz , i.screenPos.w + 0.00000000001 );
float4 ase_screenPosNorm = ase_screenPos / ase_screenPos.w;
ase_screenPosNorm.z = ( UNITY_NEAR_CLIP_VALUE >= 0 ) ? ase_screenPosNorm.z : ase_screenPosNorm.z * 0.5 + 0.5;
float2 appendResult8 = (float2(ase_screenPosNorm.x , ase_screenPosNorm.y));
float2 temp_cast_0 = (_Tiling).xx;
float mulTime26 = _Time.y * _Speed;
float2 panner32 = ( 1.0 * _Time.y * float2( 0,0 ) + ( mulTime26 * float2( 0.24,0.24 ) ));
float2 uv_TexCoord27 = i.uv_texcoord * temp_cast_0 + panner32;
float4 tex2DNode9 = tex2D( _DistortMap, uv_TexCoord27 );
float2 temp_cast_1 = (_Tiling).xx;
float mulTime40 = _Time.y * _Speed;
float2 panner41 = ( 1.0 * _Time.y * float2( 0,0 ) + ( mulTime40 * float2( -0.24,0.1 ) ));
float2 uv_TexCoord37 = i.uv_texcoord * temp_cast_1 + panner41;
float4 tex2DNode34 = tex2D( _DistortMap, uv_TexCoord37 );
float2 appendResult17 = (float2(( tex2DNode9.r + tex2DNode34.r ) , ( tex2DNode9.g + tex2DNode34.r )));
float2 temp_output_42_0 = ( appendResult17 * _DistortOffset );
float4 tex2DNode4 = tex2D( _MaskMap, temp_output_42_0 );
float4 clampResult15 = clamp( ( ( tex2DNode4 * tex2DNode4.a * i.vertexColor.a ) * _Alpha ) , float4( 0,0,0,0 ) , float4( 1,1,1,0 ) );
float2 lerpResult2 = lerp( appendResult8 , temp_output_42_0 , saturate( ( clampResult15 * _Distrot ) ).rg);
float4 screenColor1 = tex2D( _GrabTexture, lerpResult2 );
o.Emission = ( ( _FreColor * lerp(saturate( ( 1.0 - fresnelNode61 ) ),saturate( fresnelNode61 ),_ColorFreinvert) ) + screenColor1 ).rgb;
float fresnelNdotV45 = dot( ase_worldNormal, ase_worldViewDir );
float fresnelNode45 = ( 0.0 + _DisFreScale * pow( 1.0 - fresnelNdotV45, _DisFrePower ) );
o.Alpha = ( lerp(saturate( ( 1.0 - fresnelNode45 ) ),saturate( fresnelNode45 ),_DisFreinvert) * clampResult15 ).r;
}
ENDCG
}
}