스레드 ID란 ?
컴퓨트 쉐이더는 자료구조를 입력받아서 자료구조를 출력하는데, 스레드 ID 는 그런 자료구조들을 다양한 방식으로 indexing (색인을 지정해서 특정 요소에 접근하는 것) 하는데 사용된다.
SV_GroupID
각 스레드 그룹에 배정된 ID (group ID)
G₁ × G₂ × G₃ 이면 그 범위는 ( 0 , 0 , 0 ) 에서 ( G₁-1, G₂-1,G₃-1) 가 된다.
지역 저장소 메모리를 색인화하는데 사용
SV_GroupThreadID
스래드 그룹 안의 각 스레드에 배정된 ID (group thread ID)
스레드 그룹의 크기가 X × Y × Z 라고 할때 ID 범위는 ( 0 , 0 , 0 ) 에서 ( X-1, Y-1, Z-1) 이 된다.
= 한 스레드 그룹 안의 특정 스레드 하나를 식별하는 값
SV_DispatchThreadID
Dispatch()로 배분 호출이 일어나면 스레드 그룹들이 배분되고
배분된 스레드 들은 고유한 dispatch thread ID 가 배정된다.
= 한 배분 호출의 모든 thread group의 모든 thread 중 특정 스레드 하나를 식별하는 값
dispatch thread ID 구하는공식
dispatchThreadID.xyz = groupID.xyz * ThreadGroupSize.xyz + groupThreadID.xyz
group thread ID : ( 3 , 3 , 0 )
group ID : ( 0 , 1 , 0 )
dispatch thread ID : ( 0 , 1 , 0 ) × ( 6 , 6 , 0 ) + ( 3 , 3 , 0 ) = ( 3 , 9 , 0 )
참고 : DirectX 12를 이용한 3D 게임 프로그래밍 입문
'study > computer graphics' 카테고리의 다른 글
GPGPU 개념정리 (0) | 2021.12.27 |
---|
댓글