Clamp 演示
3 / 30
使用 clamp() 将数值限制在范围内。
颜色的每个通道必须在 0.0 到 1.0 之间,超出范围会被截断。clamp 函数显式地把值限制在指定范围内。
clamp 是什么
clamp(x, min, max) 把 x 限制在 [min, max] 范围内:
x < min→ 返回minx > max→ 返回max- 否则 → 返回
x本身
这行先把 vUv.x 缩放偏移,让渐变只发生在画面中间部分,再用 clamp 确保值不超界。
不用 clamp 会发生什么
vUv.x * 1.6 - 0.3 的范围是 -0.3 到 1.3,超出了颜色的 0~1 范围:
- 左侧约 20% 会是负数 → GPU 截断到 0(黑色平台)
- 右侧约 20% 超过 1 → GPU 截断到 1(白色平台)
加上 clamp 之后,边界处的值被明确控制,渐变在特定位置开始和结束。
练习
练习代码里 t = 0.0(全黑)。用 clamp(vUv.x * 1.6 - 0.3, 0.0, 1.0) 计算 t,观察渐变的起始和结束位置。
答案解析
vUv.x * 1.6 - 0.3:缩放因子 1.6 让渐变更陡,偏移 -0.3 让它稍微往左移。
clamp(..., 0.0, 1.0) 把小于 0 的值拉回 0(左侧纯深色),把大于 1 的值压到 1(右侧纯亮色)。
试试把 1.6 改成 3.0,渐变过渡区域会变得更窄,更像 step。