uvec2
uvec2
将浮点向量、布尔值或单个数字等其他类型数据,转换为一个由两个无符号整数组成的二维向量 (uvec2)。转换通过截断(丢弃)小数部分完成,主要用于处理离散的、非负的坐标,如网格索引或屏幕像素坐标。
核心优势
实现坐标的离散化逻辑。通过将连续的浮点坐标(如 UV)转换为整数坐标,可以轻松确定一个点所属的网格单元,是实现棋盘格、像素化滤镜等一切基于网格或像素算法的基础。
常见用途
创建程序化网格图案(如棋盘格)
像素化/马赛克后处理滤镜
使用 `texelFetch` 进行精确纹理读取
如何调整
uvec2 的输出完全取决于输入值。其核心行为是“截断”而非“四舍五入”,例如 uvec2(vec2(9.99, 0.01)) 会得到 uvec2(9, 0)。若输入单个值(如 uvec2(5.8)),节点会将其截断后应用到两个分量,得到 uvec2(5, 5)。
代码示例
1// 将连续的UV坐标(0-1)放大,以定义网格密度
2const scaledUV = uv().mul( 10 );
3
4// 转换为整数坐标,如 vec2(5.7, 2.3) -> uvec2(5, 2)
5const gridCoord = uvec2( scaledUV );