GLSL 效果示例

水底焦散纹:让亮线在池底游动

生成细胞状聚光纹,明确这是程序化近似。

在线示例

修改右侧代码,左侧预览会实时更新。

观察什么

生成细胞状聚光纹,明确这是程序化近似。

实现原理

用域扭曲驱动细胞边界亮线,生成泳池底部常见的移动纹样;没有计算光线聚焦。

找到控制效果的代码

vec2 q=p*6.+vec2(sin(u_time*.3),cos(u_time*.4));float d=cellEdge(q+vec2(fbm(q+u_time*.15),fbm(q-u_time*.12)));c=vec3(.02,.22,.3)+vec3(.3,.9,.95)*exp(-d*18.);

动手修改

把亮度衰减 exp(-d*18.) 改为 exp(-d*35.)。池底亮线会变细,扭曲单元的边界仍沿原路径移动。

调试与成本

两次四层 fbm 先扭曲 q,再进行九邻居 cellEdge 搜索。把 q+vec2(fbm(q+u_time*.15),fbm(q-u_time*.12)) 换成 q,可去掉扭曲及其噪声计算,留下更规则的平移单元图案。

用到的内置函数

一步步学会这个效果