globalId
globalId
在计算着色器中,为每个线程提供一个全局唯一的、三维的绝对坐标(ID),直接解决了在海量并行任务中如何精确定位数据的问题。
核心优势
核心优势是极大地简化了代码。它封装了 `workgroupId * workgroupSize + localId` 这一常用计算,让开发者能直观地获取全局坐标,从而使代码更简洁、易读,并减少了手动计算可能引入的错误。
常见用途
作为像素坐标,用于图像处理和程序化纹理生成。
作为一维数组索引,用于大规模粒子系统的物理模拟。
作为三维体素坐标,用于处理3D纹理或体积数据。
在通用并行算法(如矩阵乘法)中,作为唯一的工作项标识符。
如何调整
此节点是只读的内置变量,无法调整。其效果可通过可视化来理解:将 `globalId` 归一化后作为颜色输出到纹理,会看到一张覆盖整个任务区域的、平滑的颜色渐变图,直观地展示了全局坐标系。
代码示例
1// 将全局ID归一化为 [0, 1] 范围
2const normalizedId = globalId.xy.div( resolution );
3const finalColor = vec3( normalizedId.x, normalizedId.y, 0.5 ); // 可视化为颜色