Clamp 演示

3 / 30
使用 clamp() 将数值限制在范围内。

颜色的每个通道必须在 0.0 到 1.0 之间,超出范围会被截断。clamp 函数显式地把值限制在指定范围内。


clamp 是什么

clamp(x, min, max)x 限制在 [min, max] 范围内:

  • x < min → 返回 min
  • x > 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。

GLSL 代码编辑器

正确代码预览

当前代码预览