ld_raw(sm5 - asm)
원시 버퍼에서 1-4개의 32비트 성분을 임의 액세스하여 읽습니다.
ld_raw dest[.mask], srcByteOffset[.select_component], src0[.swizzle] |
---|
항목 | 설명 |
---|---|
dest |
[in] 작업 결과의 주소입니다. |
srcByteOffset |
[in] 읽을 오프셋을 지정합니다. |
src0 |
[in] 읽을 성분입니다. |
설명
src0은 다음과 같아야 합니다.
- 모든 셰이더 단계: SRV(t#)ld st
- 컴퓨팅 셰이더 또는 픽셀 셰이더: UAV(u#)
- 컴퓨팅 셰이더: 스레드 그룹 공유 메모리(g#)
srcByteOffset은 다른 매개 변수의 혼합 및 마스크에 따라 데이터를 읽을 수 있는 4개의 순차적 32비트 값 창에 대한 메모리의 기본 32비트 값을 지정합니다.
원시 버퍼에서 읽은 데이터는 다음 의사 코드와 동등합니다. 오프셋, 주소, 버퍼 콘텐츠에 대한 포인터, 원본의 스트라이드 및 선형으로 저장된 데이터가 있습니다.
BYTE *BufferContents; // from src0
UINT srcByteOffset; // from srcByteOffset
BYTE *ReadLocation; // value to calculate
ReadLocation = BufferContents
+ 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을 반환합니다.
지정된 32비트 성분에 대해 g#(모든 공유 메모리와 반대되는 특정 g#의 범위)에 대한 범위를 벗어난 주소 지정은 정의되지 않은 결과를 반환합니다.
cs_4_0 및 cs_4_1은 UAV 및 SRV에 대해 이 명령을 지원합니다.
이 명령은 다음 셰이더 단계에 적용됩니다.
꼭짓점 | 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에 대해 이 명령을 지원합니다.