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_GroupIndex,SV_DispatchThreadID,SV_GroupThreadID,SV_GroupID) 。
以下类型的着色器支持此属性:
顶点 | 外壳 | 域 | 几何结构 | 像素 | 计算 |
---|---|---|---|---|---|
x |
相关主题