多维工作组中的gl_SubgroupInvocationID计数

时间:2019-05-18 11:31:50

标签: opengl glsl compute-shader

关于GL_KHR_shader_subgroup扩展和计算着色器... gl_SubgroupInvocationID是一维的(单个uint),而工作组最多可以是3维的。所以我想知道gl_LocalInvocationID的3维数(工作组中的线程)在每个子组中。
例如:假设我有16x16x1工作组,而gl_SubgroupSize是32。如何确定当前工作组的哪些线程在子组0(gl_SubgroupInvocationID == 0)中?

1 个答案:

答案 0 :(得分:2)

将工作组划分为子组是实现定义的。此外,您不应该在意它。

子组功能的目的是促进子组之间的相互通信。询问与您的调用有关的其他子组中计算的值。唯一关心子组之间特定“物理”关系的函数是Quad函数,该函数处理片段着色器中2x2块上的操作。