我需要计算gl_SubgroupID*gl_SubgroupSize+gl_SubgroupInvocationID
,还是可以使用gl_LocalInvocationIndex
?gl_SubgroupInvocationID
中单个子组内的调用是连续的吗?
我需要计算
gl_SubgroupID*gl_SubgroupSize+gl_SubgroupInvocationID
,还是可以使用gl_LocalInvocationIndex
?
这是不同的东西。本地调用索引是工作组内调用的索引。子组是不大于工作组的调用分组,但可能小于。因此,子组调用索引与本地调用索引不同。
如标准所述:
SubgroupLocalInvocationId
之间没有直接的关系和LocalInvocationId
或LocalInvocationIndex
。
gl_SubgroupInvocationID
中单个子组内的调用是连续的吗?
是的,它们是连续的,但只是在它们将处于半开范围[0,SubgroupSize
)的意义上。因此,可能具有相邻本地调用索引的两个调用可能没有相邻的子组索引。