numthreads
定义在调度计算着色器时要在单个线程组中执行的线程数 (请参阅 ID3D11DeviceContext::D ispatch) 。
numthreads(X, Y, Z)
X、Y 和 Z 值指示特定方向的线程组的大小,X*Y*Z 的总和表示组中的线程数。 跨三个维度指定线程组大小的功能允许以逻辑 2D 和 3D 数据结构的方式访问各个线程。
例如,如果计算着色器执行 4x4 矩阵加法,则可以将 numthreads 设置为 numthreads (4,4,1) 并且单个线程中的索引将自动匹配矩阵条目。 计算着色器还可以使用 numthreads (16,1,1) 声明具有相同线程数 (16) 线程组,但随后必须基于当前线程数计算当前矩阵条目。
numthreads 的允许参数值取决于计算着色器版本。
计算着色器 | 最大 Z | 最大线程数 (X*Y*Z) |
---|---|---|
cs_4_x | 1 | 768 |
cs_5_0 | 64 | 1024 |
下图显示了传递给 ID3D11DeviceContext::D ispatch 的参数之间的关系, 调度 (5,3,2) ,在 numthreads 属性中指定的值,numthreads (10,8,3) ,以及将传递给计算着色器的值的线程相关系统值 (SV_GroupIndex,SV_DispatchThreadID,SV_GroupThreadID,SV_GroupID) 。
以下类型的着色器支持此属性:
顶点 | 外壳 | 域 | Geometry | 像素 | 计算 |
---|---|---|---|---|---|
x |
相关主题