平滑边缘
29 / 30
学习使用smoothstep函数创建平滑的边缘过渡效果,对比step函数的硬边缘。
step 产生硬切边,但很多效果需要柔和的过渡。smoothstep 在两个阈值之间做平滑插值。
smoothstep 是什么
smoothstep(edge0, edge1, x) 在 edge0 和 edge1 之间平滑地从 0 过渡到 1:
x <= edge0→ 返回0.0x >= edge1→ 返回1.0- 中间 → 平滑过渡
d < 0.2:mask = 1.0(圆心,白色)d > 0.3:mask = 0.0(圆外,黑色)0.2 < d < 0.3:柔和过渡
对比 step 和 smoothstep
step 在边界处突变,smoothstep 在 edge0~edge1 之间慢慢过渡。过渡宽度 = edge1 - edge0,越小越接近硬边。
练习
练习代码里 mask = 0.0(全黑)。用 smoothstep(0.2, 0.3, d) 计算软边圆形遮罩。
答案解析
smoothstep(0.2, 0.3, d) 在 d = 0.2 处开始从 0 增长,到 d = 0.3 时变成 1。用 1.0 - 反转:圆心为白,圆外为黑。
过渡范围是 0.3 - 0.2 = 0.1。把 0.3 改成 0.25,过渡变窄,边缘更硬;改成 0.5,过渡变宽,边缘更模糊。