首页 > 解决方案 > 多维工作组中的 gl_SubgroupInvocationID 计数

问题描述

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

标签: openglglslcompute-shader

解决方案


将工作组划分为子组是实现定义的。此外,你不应该关心它。

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


推荐阅读