最近逛论坛时,看到一位大佬在分享各种 shader 特效。基于其中的水波 shader ,白玉无冰写了一个玩水效果!文章底部获取完整代码!还可以试试水哦!
先一起看看效果~
点击任意位置,会在该位置生成一个水纹,就像是雨水落在水洼中一样~
如何使用 effect 文件?新建一个 material ,Effect 属性选择 water , 接着将纹理图片拖到相应参数。
最后为你的模型节点选择材料。
水纹片元着色器实现原理:通过计算与点击点的距离和方向,用 sin 函数模拟水纹效果。通过计算点击时间戳和当前时间与距离,判断是否添加水纹效果。再将多个点击点叠加起来,得到 texture 最终 uv 。 主要代码如下。
for(int i = 0; i < 10; i ){
vec2 uvDir = normalize(v_uv - center[i].xy);
float dis = distance(v_uv, cent