涟漪_一

 

转载于:https://www.cnblogs.com/Minstrel223/p/10966952.html

以下是一个简单的Unity涟漪shader: ``` Shader "Custom/Ripple" { Properties { _MainTex ("Texture", 2D) = "white" {} _RippleCenter ("Ripple Center", Vector) = (0.5, 0.5, 0, 0) _RippleRadius ("Ripple Radius", Range(0, 1)) = 0.2 _RippleStrength ("Ripple Strength", Range(0, 1)) = 0.5 _RippleSpeed ("Ripple Speed", Range(0, 10)) = 0.5 } SubShader { Tags { "RenderType"="Opaque" } Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; sampler2D _MainTex; float2 _RippleCenter; float _RippleRadius; float _RippleStrength; float _RippleSpeed; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = v.uv; return o; } fixed4 frag (v2f i) : SV_Target { float2 rippleUV = i.uv - _RippleCenter.xy; float rippleDist = length(rippleUV); float ripple = smoothstep(_RippleRadius - 0.01, _RippleRadius, rippleDist); ripple *= sin(_Time.y * _RippleSpeed + rippleDist * 10) * _RippleStrength; fixed4 col = tex2D(_MainTex, i.uv + rippleUV * ripple); return col; } ENDCG } } FallBack "Diffuse" } ``` 该shader包括以下属性: - _MainTex:主纹理 - _RippleCenter:涟漪中心,用于确定涟漪的位置 - _RippleRadius:涟漪半径,用于确定涟漪的大小 - _RippleStrength:涟漪强度,用于控制涟漪的强度 - _RippleSpeed:涟漪速度,用于控制涟漪的速度 该shader使用smoothstep函数来计算涟漪的距离,并使用sin函数和时间变量来模拟涟漪的动态效果。最后,它使用tex2D函数从主纹理中获取颜色,并将涟漪效果应用于纹理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值