ivec2
ivec2
将各种输入(如 vec2)的每个分量截断小数部分,从而转换为一个双分量整数向量(ivec2)。
核心优势
为严格要求整数坐标的 GPU 函数(如 `texelFetch`)保障类型安全。它将底层的 `ivec2()` 构造函数抽象化,以一种可读且跨后端兼容的方式,简化了离散化、基于网格的逻辑(如马赛克或棋盘格)的创建。
常见用途
为 `texelFetch` 提供精确的整数坐标以读取纹理中的特定像素
为棋盘格、瓷砖等程序化图案计算网格索引
通过将连续的 UV 坐标离散化来创建像素化或马赛克效果
从基于网格的数据纹理中访问数据
如何调整
其视觉效果由其输入控制。对于程序化图案,在 `ivec2` 节点前增大输入 UV 的乘法系数,会让最终的图案(如棋盘格)变得更密集、更小。在输入中加入 `timer` 会使整数网格随时间偏移,从而产生滚动的动画效果。
代码示例
1// 将连续的 UV 坐标放大并转换为整数索引,用于创建棋盘格
2const gridIndex = ivec2( uv().mul( 10 ) );
3
4// 根据整数索引的奇偶性来决定颜色
5const isEven = gridIndex.x.add( gridIndex.y ).mod( 2 ).equal( 0 );
6const finalColor = conditional( isEven, color('white'), color('black') );