numthreads

定义在调度计算着色器时要在单个线程组中执行的线程数, (请参阅 ID3D11DeviceContext::D ispatch) 。

numthreads(X, Y, Z)    

X、Y 和 Z 值指示特定方向的线程组的大小,X*Y*Z 的总数为组中的线程数。 指定跨三个维度的线程组大小的功能允许以逻辑 2D 和 3D 数据结构的方式访问各个线程。

例如,如果计算着色器正在添加 4x4 矩阵,则可以将数字线程设置为 numthreads (4,4,1) ,并且单个线程中的索引将自动匹配矩阵项。 计算着色器还可以使用数字线程 (16,1,1) 来声明线程组 (16,16) ,但随后必须基于当前线程数计算当前矩阵条目。

numthread 的可允许参数值取决于计算着色器版本。

计算着色器 最大 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_GroupIndexSV_DispatchThreadID,SV_GroupThreadIDSV_GroupID)

illustration of the relationship between dispatch, thread groups, and threads

以下类型的着色器支持此属性:

顶点 外壳 几何结构 像素 计算
x

 

着色器模型 5 属性

着色器模型 5