GLSL 效果示例

平滑并集:让两个液滴靠近时黏在一起

与硬并集并排展示,调节融合宽度能看到连接处的差别。

在线示例

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

观察什么

与硬并集并排展示,调节融合宽度能看到连接处的差别。

实现原理

左半屏使用硬并集,右半屏使用平滑并集。融合宽度控制连接颈部,而不是简单模糊最终颜色。

找到控制效果的代码

float a=length(p-vec2(-.3,.1*sin(u_time)))-.28,b=length(p-vec2(.3,-.1*sin(u_time)))-.28;float d=p.x<0.?min(a,b):smoothUnion(a,b,.05+.55*u_parameter);c=mix(c,vec3(.2,.8,.95),1.-smoothstep(-aa,aa,d));

动手修改

把平滑并集宽度 .05+.55*u_parameter 先设为 .1,再设为 .5。较大值会使右侧液滴间的连接颈变宽,左侧硬并集保持不变。

调试与成本

两个圆的距离先合并,再做一次抗锯齿颜色混合,因此这里混合的是几何场。把 smoothUnion(a,b,.05+.55*u_parameter) 换成 min(a,b),两半都会使用硬边界,平滑连接也会消失。

用到的内置函数

一步步学会这个效果