다음을 통해 공유


dcl_uav_structured(sm5 - asm)

셰이더에서 사용할 UAV(정렬되지 않은 액세스 보기)를 선언합니다.

dcl_uav_structured[_glc] dstUAV, structByteStride
항목 설명
dstUAV
[in] UAV입니다.
structByteStride
[in] 구조체의 크기(바이트)입니다.

설명

dstUAV는 API에서 UAV 슬롯 #에 바인딩되어야 하는 지정된 스트라이드가 있는 구조화된 버퍼의 UnorderedAccessView에 대한 참조로 선언된 u# 레지스터입니다.

구조체의 콘텐츠에는 형식이 없습니다. 메모리에서 수행되는 작업은 데이터를 형식이 있는 것으로 암시적으로 해석할 수 있습니다.

structByteStride는 선언 중인 버퍼의 구조체 크기(바이트)입니다. 이 값은 0보다 커야 합니다. structByteStride는 uint 형식이며 4의 배수여야 합니다.

구조화된 u#을 참조하는 명령은 2D 주소를 사용합니다. 여기서 첫 번째 성분은 [struct]를 선택하고 두 번째 성분은 [구조체 내의 오프셋, 정렬된 바이트]를 선택합니다.

_glc 플래그는 "글로벌 일관성"을 의미합니다. _glc가 없다는 것은 UAV가 컴퓨팅 셰이더에서 "그룹 일관성" 또는 단일 픽셀 셰이더 호출에서 "로컬 일관성"으로만 선언되고 있음을 의미합니다.

_opc 플래그는 순서 보존 카운터입니다. UAV가 슬롯 #(u#)에 바인딩된 경우 COUNTER 플래그로 만들어져야 함을 나타냅니다. 이는 셰이더의 imm_atomic_alloc 또는 imm_atomic_consume 작업이 UAV의 위치에 대한 영구 참조로 셰이더에서 값을 사용할 수 있는 카운터를 조작함을 의미합니다. 셰이더가 끝난 후에는 데이터를 재정렬할 수 없습니다.

_opc 플래그가 없다는 것은 셰이더가 imm_atomic_alloc 또는 imm_atomic_consume 명령을 사용하고 UAV가 슬롯 #(u)에 바인딩된 경우 APPEND 플래그로 만들어져야 함을 의미합니다. 셰이더 호출 후 순서가 유지되는 것을 보장하지 않는 카운터를 제공합니다.

_opc 플래그가 없고 셰이더에 imm_atomic_alloc 또는 imm_atomic_consume 명령이 포함되어 있지 않은 경우 슬롯 번호(u)에 바인딩된 UAV는 COUNTER 플래그(카운터가 이 셰이더에 의해 사용되지 않음), 플래그 없음(카운터 없음)으로 만들 수 있지만 APPEND 플래그로는 만들 수 없습니다.

참고

cs_4_0 및 cs_4_1은 dcl_tgsm_structured를 지원하지만 dcl_tgsm_raw는 지원하지 않습니다.

이 명령은 다음 셰이더 단계에 적용됩니다.

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

UAV는 Direct3D 11.1의 모든 셰이더 단계에서 사용할 수 있으므로 이 명령은 Windows 8부터 사용할 수 있는 Direct3D 11.1 런타임의 모든 셰이더 단계에 적용됩니다.

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

최소 셰이더 모델

이 명령은 다음 셰이더 모델에서 지원됩니다.

셰이더 모델 지원됨
셰이더 모델 5
셰이더 모델 4.1 아니요
셰이더 모델 4 아니요
셰이더 모델 3(DirectX HLSL) 아니요
셰이더 모델 2(DirectX HLSL) 아니요
셰이더 모델 1(DirectX HLSL) 아니요

참고

이 명령은 cs_4_0 및 cs_4_1에서 지원됩니다.

셰이더 모델 5 어셈블리(DirectX HLSL)