{"title":"Custom/RippleEffect","Properties":{""_MainTex"":{"type":"2D","name":"Base","default":"white"},""_GradTex"":{"type":"2D","name":"Gradient","default":"white"},""_Reflection"":{"type":"Color","name":"Reflection Color","default":"(0, 0, 0, 0)"},""_Params1"":{"type":"Vector","name":"Parameters 1","default":"(1, 1, 0.8, 0)"},""_Params2"":{"type":"Vector","name":"Parameters 2","default":"(1, 1, 1, 0)"},""_Drop1"":{"type":"Vector","name":"Drop 1","default":"(0.49, 0.5, 0, 0)"},""_Drop2"":{"type":"Vector","name":"Drop 2","default":"(0.50, 0.5, 0, 0)"},""_Drop3"":{"type":"Vector","name":"Drop 3","default":"(0.51, 0.5, 0, 0)"},""_SeaLevel"":{"type":"Float","name":"SeaLevel","default":"-1.0","range":"-1, 1"}},"SubShader":{"Tags":{""RenderType"":"Transparent","Queue"":"Transparent"},"Pass":{"Stencil":{"Ref":"1","Comp":"Always"},"Blend":{"Src":"SrcAlpha","Dst":"OneMinusSrcAlpha"},"ZWrite":"Off","Cull":"Off","CGPROGRAM":{"pragma":"vertex vert\nfragment frag","include":"UnityCG.cginc","struct appdata":{"vertex":{"type":"POSITION","semantic":"POSITION"},"uv":{"type":"TEXCOORD0","semantic":"TEXCOORD0"}},"struct v2f":{"uv":{"type":"TEXCOORD0","semantic":"TEXCOORD0"},"vertex":{"type":"SV_POSITION","semantic":"SV_POSITION"}},"_MainTex":{"type":"sampler2D"},"_GradTex":{"type":"sampler2D"},"_Reflection":{"type":"float4"},"_Params1":{"type":"float4"},"_Params2":{"type":"float4"},"_Drop1":{"type":"float3"},"_Drop2":{"type":"float3"},"_Drop3":{"type":"float3"},"_SeaLevel":{"type":"float"},"wave":{"return_type":"float","parameters":"float2 position, float2 origin, float time","body":"float d = distance(position, origin);\nfloat t = time - d * _Params1.z;\nif (_SeaLevel > 0 && position.y > _SeaLevel)\n{\n return 0;\n}\nreturn (tex2D(_GradTex, float2(t, 0)).a - 0.5) * 2;"},"allwave":{"return_type":"float","parameters":"float2 position","body":"return\n wave(position, _Drop1.xy, _Drop1.z) +\n wave(position, _Drop2.xy, _Drop2.z) +\n wave(position, _Drop3.xy, _Drop3.z);"},"vert":{"return_type":"v2f","parameters":"appdata v","body":"v2f o;\no.vertex = UnityObjectToClipPos(v.vertex);\no.uv = v.uv * _Params1.xy;\nreturn o;"},"frag":{"return_type":"fixed4","parameters":"v2f i","semantic":"SV_Target","body":"float2 dx = float2(0.01, 0);\nfloat2 dy = float2(0, 0.01);\nfloat2 p = i.uv;\nfloat w = allwave(p);\nfloat2 dw = float2(allwave(p + dx) - w, allwave(p + dy) - w);\nfloat2 duv = dw * _Params2.xy * 0.2 * _Params2.z;\nfixed4 c = tex2D(_MainTex, i.uv + duv);\nfloat fr = pow(length(dw) * 3 * _Params2.w, 3);\nreturn lerp(c, _Reflection, fr);"},"ENDCG":"ENDCG"}}

Unity URP 水波纹渲染 Shader: RippleEffect

原文地址: https://www.cveoy.top/t/topic/ouHH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录