numthreads

컴퓨팅 셰이더가 발송될 때 단일 스레드 그룹에서 실행될 스레드 수를 정의합니다(ID3D11DeviceContext::Dispatch 참조).

numthreads(X, Y, Z)    

X, Y 및 Z 값은 특정 방향의 스레드 그룹 크기를 나타내고 X*Y*Z의 합계는 그룹의 스레드 수를 나타냅니다. 3차원에 걸쳐 스레드 그룹의 크기를 지정하는 기능을 통해 논리적으로 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::Dispatch에 전달된 매개 변수, Dispatch(5,3,2), numthreads 특성에 지정된 값, numthreads(10,8, 3) 및 스레드 관련 시스템 값(SV_GroupIndex,SV_DispatchThreadID,SV_GroupThreadID,SV_GroupID)에 대해 컴퓨팅 셰이더에 전달될 값 간의 관계를 보여 줍니다.

디스패치, 스레드 그룹 및 스레드 간의 관계 그림

이 특성은 다음 형식의 셰이더에서 지원됩니다.

꼭짓점 Hull 도메인 기하 도형 픽셀 컴퓨팅
x

 

셰이더 모델 5 특성

셰이더 모델 5