sign
sign
提取一个或多个数值的符号(正、负或零),将输入值分别转换为 1.0、-1.0 或 0.0,从而判断其“方向”而忽略其“大小”。
核心优势
在 GPU 上提供了一种无分支(branchless)的高性能方式来执行条件判断,避免了传统 if-else 语句可能带来的性能开销。
常见用途
在 SDF 中判断点在物体内部还是外部
创建硬边缘的卡通着色(Toon Shading)
生成对称或镜像的程序化图案
如何调整
调整其输入节点不会产生平滑渐变,而是直接移动值为 0 的“突变”边界。这会锐利地改变图案的几何形状,非常适合创造边缘清晰、对比强烈的视觉效果。
代码示例
1// 将 UV 坐标中心化到 [-0.5, 0.5] 范围
2const centeredUV = uv().sub( 0.5 );
3
4// 获取每个分量的符号,结果为 (-1,-1), (1,-1), (-1,1), 或 (1,1)
5const signNode = sign( centeredUV );