step
step
根据一个阈值(edge),将一个连续的输入值(x)转换为一个二元结果。如果 x >= edge,返回 1.0,否则返回 0.0。
核心优势
在GPU上提供了一种无分支(branchless)的高性能方式来实现条件逻辑,是程序化生成硬边缘遮罩和形状的最高效工具之一。
常见用途
创建硬边缘的程序化形状(如圆形、条纹)
实现卡通渲染中的二值化光照
基于高度或距离创建区域选择遮罩
如何调整
调整阈值(第一个参数)会直接移动从 0 突变到 1 的“分界线”位置。增加阈值会缩小结果为 1 的区域,反之亦然。这用于控制程序化形状的大小或效果的触发点,而不会产生任何平滑过渡。
代码示例
1// 将屏幕在 x=0.5 的位置分割
2// 如果 uv().x >= 0.5,结果为 1.0 (白)
3// 否则结果为 0.0 (黑)
4const result = step(0.5, uv().x);