子组调用索引是否映射到 gl_LocalInvocationIndex?

Do subgroup invocation indices map to gl_LocalInvocationIndex?

我需要计算 gl_SubgroupID*gl_SubgroupSize+gl_SubgroupInvocationID,还是可以使用 gl_LocalInvocationIndexgl_SubgroupInvocationID 中单个子组内的调用是否连续?

Do I need to calculate gl_SubgroupID*gl_SubgroupSize+gl_SubgroupInvocationID, or can I use gl_LocalInvocationIndex?

这些是不同的东西。本地调用索引是工作组内调用的索引。子组是不大于工作组的调用分组,但可能 更小 。因此,子组调用索引与本地调用索引不同。

正如标准所说:

There is no direct relationship between SubgroupLocalInvocationId and LocalInvocationId or LocalInvocationIndex.


Are invocations within a single subgroup consecutive in gl_SubgroupInvocationID?

是的,它们是连续的,但只是在半开范围 [0, SubgroupSize) 的意义上。因此,可能具有相邻本地调用索引的两个调用可能没有相邻的子组索引。