Cocos Shader实现纹理的动态波浪效果

本文展示了如何使用Cocos Creator实现纹理的动态波浪效果,通过调节参数实现不同频率的波动,并提供了关键代码及完整源码链接。
摘要由CSDN通过智能技术生成

一 效果预览

209de2a0a3a26c4dead769d6e4b7abc5.png

通过滑动条可调节波浪频率的快慢。

二 实现原理

对当前uv坐标进行线性+三角函数的混合变换,结合动态变化的时间值,得到一个新的采样坐标,使纹理呈现出动态、起伏不定的波浪形态。

Shader中的关键代码如下。

// 得到波浪效果的新坐标
vec2 new_uv = wave(v_uv0) - wave(v_uv0+u_size);

// 2.0/u_size.x用来缩放波浪大小,控制水面形状
vec2 uv = v_uv0 + 2.0 / u_size.x * new_uv;
o *= CCSampleWithAlphaSeparated(cc_spriteTexture, uv);

其中,u_size参数由应用层传递给Shader,代表纹理的尺寸。wave是个自定义函数,根据当前位置返回波浪效果后的新坐标,代码如下。

// 计算出波浪效果的新坐标
vec2 wave(in vec2 p) {
  float range = 8.0; // 波浪效果的起伏幅度
  floa
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值