硬边遮罩

25 / 30
通过 step() 函数构造一个具有明确边界的遮罩,掌握 GLSL 中的二值化处理。

mix 的因子通常是 0 到 1 的连续值,产生平滑渐变。step 函数让因子只输出 0 或 1,产生硬切边


step 是什么

step(edge, x) 只返回两个值:

  • x < edge → 返回 0.0
  • x >= edge → 返回 1.0

这行代码:左半边(vUv.x < 0.5)得到 0,右半边(vUv.x >= 0.5)得到 1。没有过渡,边界是硬的。


用 mask 选择颜色

mask 传给 mix,就能在两种颜色之间做硬切换:


试着改一改

把阈值从 0.5 改成其他值,切线会移动:

阈值效果
0.3左边只占 30%
0.7左边占 70%
0.5左右各一半(默认)

练习

练习代码里 mask = 0.0(画面全是 leftColor)。用 step(0.5, vUv.x) 计算 mask,让画面左半边和右半边颜色不同。

答案解析

step(0.5, vUv.x)vUv.x = 0.5 处从 0 跳到 1,产生垂直切线。

mix(leftColor, rightColor, mask) 用这个 0/1 值切换颜色:mask 为 0 时全是左边颜色,为 1 时全是右边颜色。

把阈值改成 step(vUv.y, 0.5) 试试,切线方向会变成水平的。

GLSL 代码编辑器

正确代码预览

当前代码预览