numthreads
Definiert die Anzahl der Threads, die in einer einzelnen Threadgruppe ausgeführt werden sollen, wenn ein Compute-Shader bereitgestellt wird (siehe ID3D11DeviceContext::D ispatch).
numthreads(X, Y, Z)
Die Werte X, Y und Z geben die Größe der Threadgruppe in einer bestimmten Richtung an, und die Summe von X Y Z gibt die Anzahl der Threads * * in der Gruppe an. Die Möglichkeit, die Größe der Threadgruppe über drei Dimensionen hinweg anzugeben, ermöglicht den Zugriff auf einzelne Threads auf eine Weise, die logisch 2D- und 3D-Datenstrukturen ermöglicht.
Wenn ein Compute-Shader z. B. 4x4-Matrix-Additionen vor sich geht, können numthreads auf numthreads(4,4,1) festgelegt werden, und die Indizierung in den einzelnen Threads würde automatisch mit den Matrixeinträgen übereinstimmen. Der Compute-Shader könnte auch eine Threadgruppe mit der gleichen Anzahl von Threads (16) mit numthreads(16,1,1) deklarieren, müsste dann jedoch den aktuellen Matrixeintrag basierend auf der aktuellen Threadnummer berechnen.
Die zulässigen Parameterwerte für Numthreads hängen von der Version des Compute-Shaders ab.
| Compute-Shader | Maximum Z | Maximale Anzahl von Threads (X * Y * Z) |
|---|---|---|
| cs _ 4 _ x | 1 | 768 |
| cs _ 5 _ 0 | 64 | 1024 |
Die folgende Abbildung zeigt die Beziehung zwischen den an ID3D11DeviceContext::D ispatch ,Dispatch(5,3,2) übergebenen Parametern, den im numthreads-Attribut angegebenen Werten, numthreads(10,8,3) und Werten, die an den Compute-Shader für die threadbezogenen Systemwerte übergeben werden (SV _ GroupIndex,SV _ DispatchThreadID,SV _ GroupThreadID,SV _ GroupID).

Dieses Attribut wird in den folgenden Shadertypen unterstützt:
| Scheitelpunkt | Rumpf | Domain | Geometrie | Pixel | Compute |
|---|---|---|---|---|---|
| x |