invocationLocalIndex
invocationLocalIndex
在计算着色器中,为当前线程提供其在本地工作组(Workgroup)内的一个从 0 开始的、一维的唯一整数索引。
核心优势
核心价值在于开启了工作组内线程间的高效协作。线程可利用此唯一索引来协调操作,尤其是在访问共享内存时,是实现并行归约等高性能并行算法的基石。
常见用途
在图像处理中,作为数据地址计算器,定位要处理的像素。
在粒子系统中,作为数据索引器,精确定位缓冲区中要读写的粒子数据。
在并行归约等算法中,作为算法协调者,判断线程在每一步应扮演的角色。
如何调整
此节点是只读的内置变量,无法调整。其效果可通过可视化来理解:将索引值归一化为灰度颜色并输出到纹理。结果将显示出在每个工作组区域内重复的、从黑到白的线性渐变图案,清晰地揭示了其“本地性”。
代码示例
1// 将 [0, 255] 范围的索引归一化到 [0.0, 1.0]
2const factor = invocationLocalIndex.tofloat().div( 255.0 );
3
4// 基于这个因子创建一个灰度颜色用于调试
5const debugColor = vec3( factor );