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,可去掉扭曲及其噪声计算,留下更规则的平移单元图案。