ShaderJoy —— “震荡波” 的实现【GLSL】

举报
ShaderJoy 发表于 2021/11/19 00:08:42 2021/11/19
【摘要】 效果如图:   核心原理: 设震荡波的参数为 a=10, b=0.8, c=0.2 如果我们着眼于某一个时刻 time(time 不变) ,有一段到中心距离为 dist 的像素处于 [time -c, time+c] 这个范围内,即它们处在畸变的范围内, 代码中的形式为(waveParam.z 简化为 ...

效果如图:

 

核心原理:

设震荡波的参数为 a=10, b=0.8, c=0.2

如果我们着眼于某一个时刻 time(time 不变) ,有一段到中心距离为 dist 的像素处于 [time -c, time+c] 这个范围内,即它们处在畸变的范围内,

代码中的形式为(waveParam.z 简化为 c)


  
  1. // uv 坐标到中心点的距离
  2. float dist = distance(uv, center);
  3. ...
  4. dist <= time + waveParams.z && dist >= time - waveParams.z

代码中的畸变差值计算 


  
  1. float diff = (dist - time);
  2. // 1.-\left |x*a \right |^{b}, x\epsilon [-c, c]
  3. float diffPow = (1.0 - pow(abs(diff * waveParams.x), waveParams.y));
  4. // x*(1.-\left |x*a \right |^{b}), x\epsilon [-c, c]
  5. float diffTime = (diff * diffPow);

 我们可以令畸变的差值 diff 为 x &#x

文章来源: panda1234lee.blog.csdn.net,作者:panda1234lee,版权归原作者所有,如需转载,请联系作者。

原文链接:panda1234lee.blog.csdn.net/article/details/103583179

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。