smoothstep
smoothstep
在一个指定范围(low 到 high)内,基于输入值 x 生成一个平滑的 S 形插值(0 到 1),常用于创建自然的过渡效果。
核心优势
它生成的插值曲线在起点和终点的变化率都为零,能创造出比线性插值更优雅、更有机的“缓入缓出”效果,避免视觉上的突变。
常见用途
程序化生成软边遮罩或形状
平滑混合多种地形纹理或材质
为动画属性添加缓入缓出效果
如何调整
通过调整 `low` 和 `high` 参数的差值来控制过渡区域的宽度(柔和度)。缩小差值会使边缘变硬,增大差值则使边缘变模糊。交换两者的顺序会反转效果(从 1 插值到 0)。
代码示例
1// 计算距中心的距离 (0.0 to ~0.707)
2const dist = distance(uv(), vec2(0.5));
3
4// 当距离从 0.3 变到 0.2 时,进行反向平滑过渡
5// 效果: 距离 < 0.2 时为 1 (白), > 0.3 时为 0 (黑)
6// 从而绘制一个边缘柔和的圆形
7const circle = smoothstep(0.3, 0.2, dist);