ShaderJoy —— “震荡波” 的实现【GLSL】
【摘要】
效果如图:
核心原理:
设震荡波的参数为 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)
-
// uv 坐标到中心点的距离
-
float dist = distance(uv, center);
-
...
-
-
dist <= time + waveParams.z && dist >= time - waveParams.z
代码中的畸变差值计算
-
float diff = (dist - time);
-
-
// 1.-\left |x*a \right |^{b}, x\epsilon [-c, c]
-
float diffPow = (1.0 - pow(abs(diff * waveParams.x), waveParams.y));
-
-
// x*(1.-\left |x*a \right |^{b}), x\epsilon [-c, c]
-
float diffTime = (diff * diffPow);
我们可以令畸变的差值 diff 为 x &#x
文章来源: panda1234lee.blog.csdn.net,作者:panda1234lee,版权归原作者所有,如需转载,请联系作者。
原文链接:panda1234lee.blog.csdn.net/article/details/103583179
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)