ld_structured (sm5 - asm)

구조화된 버퍼에서 1-4개 32비트 구성 요소를 임의로 읽습니다.

ld_structured dest[.mask], srcAddress[.select_component], srcByteOffset[.select_component], src0[.swizzle]
항목 설명
dest
[in] 작업 결과의 주소입니다.
srcAddress
[in] 읽을 구조체의 인덱스를 지정합니다.
srcByteOffset
[in] 읽어오기를 시작할 구조체에서 바이트 오프셋을 지정합니다.
src0
읽어올 버퍼입니다. 이 매개 변수는 SRV(t#), UAV(u#)여야 합니다. 컴퓨팅 셰이더에서는 스레드 그룹 공유 메모리(g#)일 수도 있습니다.

설명

구조체에서 읽은 데이터는 다음 의사 코드와 동등합니다. 오프셋, 주소, 버퍼 콘텐츠에 대한 포인터, 원본의 스트라이드 및 선형으로 저장된 데이터가 있습니다.

                    BYTE *BufferContents;         // from SRV or UAV
                    UINT BufferStride;            // from base resource
                    UINT srcAddress, srcByteOffset;   // from source registers
                    BYTE *ReadLocation;           // value to calculate
                    ReadLocation = BufferContents 
                                + BufferStride * srcAddress
                                + srcByteOffset;

                    UINT32 Temp[4];  // used to make code shorter

                    // apply the source resource swizzle on source data
                    Temp = read_and_swizzle(ReadLocation, srcSwizzle);

                    // write the components to the output based on mask
                    ApplyWriteMask(dstRegister, dstWriteMask, Temp);

이 의사 코드는 작업이 작동하는 방식을 보여 주지만 실제 데이터를 선형으로 저장할 필요는 없습니다. 데이터가 선형으로 저장되지 않은 경우, 명령의 실제 연산이 위 연산의 동작과 일치해야 합니다.

지정된 32비트 구성 요소의 u#/t#에 대해 범위를 벗어나는 주소를 지정하면 해당 구성 요소에 대해 0이 반환됩니다. 스위즐과 srcByteOffset으로 인해 u#/t#에 대해 범위를 벗어난 액세스가 발생하는 경우를 제외하고 모든 구성 요소에 대해 반환되는 값은 정의되어 있지 않습니다.

지정된 32비트 성분에 대해 g#(모든 공유 메모리와 반대되는 특정 g#의 범위)에 대한 범위를 벗어난 주소 지정은 정의되지 않은 결과를 반환합니다.

srcByteOffset은 일반적으로 리터럴이므로 srcAddress와 별개의 인수입니다. 이 매개 변수 분리는 구조적 메모리의 원자성에 대해 수행되지 않았습니다.

cs_4_0 및 cs_4_1은 UAV, SRV 및 TGSM에 대해 이 명령을 지원합니다.

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

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

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

꼭짓점 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은 UAV, SRV 및 TGSM에 대해 이 명령을 지원합니다.

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