numthreads
コンピューティング シェーダーがディスパッチされたときに 1 つのスレッド グループで実行されるスレッドの数を定義します ( 「ID3D11DeviceContext::D ispatch」を参照)。
numthreads(X, Y, Z)
X、Y、Z の値は、特定の方向のスレッド グループのサイズを示し、X*Y*Z の合計は、グループ内のスレッドの数を示します。 3 次元にわたってスレッド グループのサイズを指定する機能を使用すると、論理的に 2D および 3D データ構造の方法で個々のスレッドにアクセスできます。
たとえば、計算シェーダーが 4x4 行列加算を実行している場合、numthreads を numthreads(4,4,1) に設定すると、個々のスレッドのインデックス作成は自動的にマトリックス エントリと一致します。 計算シェーダーでは、numthreads(16,1,1) を使用して同じスレッド数 (16) のスレッド グループを宣言することもできますが、現在のスレッド番号に基づいて現在のマトリックス エントリを計算する必要があります。
numthread の許容されるパラメーター値は、コンピューティング シェーダーのバージョンによって異なります。
計算シェーダー | 最大 Z | 最大スレッド数 (X*Y*Z) |
---|---|---|
cs_4_x | 1 | 768 |
cs_5_0 | 64 | 1024 |
次の図は、 ID3D11DeviceContext::D ispatch、Dispatch(5,3,2)、numthreads 属性で指定された値、numthreads(10,8,3)、スレッド関連のシステム値 (SV_GroupIndex、SV_DispatchThreadID、SV_GroupThreadID、SV_GroupID) の計算シェーダーに渡される値の関係を示しています。
この属性は、次の種類のシェーダーでサポートされています。
Vertex | Hull | Domain | ジオメトリ | ピクセル | Compute |
---|---|---|---|---|---|
x |
関連トピック