다음을 통해 공유


ld(sm4 - asm)

제공된 정수 주소를 사용하여 필터링(예: 포인트 샘플링) 없이 지정된 버퍼 또는 텍스처에서 데이터를 가져옵니다. 원본 데이터는 TextureCube 이외의 모든 리소스 종류에서 가져올 수 있습니다.

ld[_aoffimmi(u,v,w)] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle]
항목 설명
dest
[in] 연산 결과의 주소입니다.
srcAddress
[in] 샘플을 수행하는 데 필요한 텍스처 좌표입니다.
srcResource
[in] 가져올 텍스처 또는 버퍼를 식별하는 선언이 있어야 하는 텍스처 레지스터(t#)입니다.

설명

이 명령은 sample 명령에 대한 간단한 대안입니다. sample과 달리 ld는 버퍼에서 데이터를 가져올 수도 있습니다. ld는 다중 샘플 리소스(픽셀 셰이더에서만)에서 가져올 수도 있습니다.

srcAddress는 샘플을 수행하는 데 필요한 텍스처 좌표 집합을 부호 없는 정수 형식으로 제공합니다. srcAddress가 범위[0...(차원 -1의 #texels)]를 벗어나면 범위를 벗어난 동작이 호출됩니다. 여기서 ldsrcResource 형식의 누락되지 않은 모든 성분에서 0을 반환하고 누락된 성분의 기본값을 반환합니다. 범위를 벗어난 주소 동작에 대한 보다 유연한 컨트롤을 원하는 애플리케이션은 대신 sample 명령을 사용해야 합니다. 샘플러 상태로 정의된 주소 래핑/미러/클램프/테두리 동작을 따르기 때문입니다.

srcAddress.a(POS-swizzle)는 항상 부호 없는 정수 밉맵 수준을 제공합니다. 값이 범위 [0...(num miplevels in resource-1)])을 벗어나면 범위를 벗어난 동작이 호출됩니다. 리소스가 mipmap 을 가질 수 없는 버퍼인 경우 srcAddress.a 는 무시됩니다.

srcAddress.gb(POS-swizzle)는 버퍼 및 texture1D(배열 아님)에 대해 무시됩니다. srcAddress.b(POS-swizzle)는 texture1D 배열 및 texture2D에 대해 무시됩니다.

texture1D 배열의 경우 srcAddress.g(POS-swizzle)는 배열 인덱스를 부호 없는 정수로 제공합니다. 값이 사용 가능한 배열 인덱스 [0...(배열 크기-1)] 범위를 벗어나면 범위를 벗어난 동작이 호출됩니다.

texture2D 배열의 경우 srcAddress.b(POS-swizzle)가 배열 인덱스를 제공하며 그렇지 않으면 texture1D와 동일한 의미 체계를 사용합니다.

바인딩된 것이 없는 t#에서 가져오면 모든 성분에 대해 0이 반환됩니다.

주소 오프셋

선택적 [_aoffimmi(u,v,w)] 접미사(직접 정수로 오프셋된 주소)는 ld의 텍스처 좌표가 제공된 바로 텍셀 공간 정수 상수 값 집합으로 오프셋됨을 나타냅니다. 리터럴 값은 정수 범위가 [-8,7]인 4비트 2의 보수 집합입니다. 이 한정자는 버퍼가 아닌 배열을 포함하여 texture1D/2D/3D에 대해서만 정의됩니다.

오프셋은 ld에서 액세스하는 밉수준을 기준으로 텍셀 공간에서 텍스처 좌표에 추가됩니다.

주소 오프셋은 texture1D/2D 배열의 배열 축을 따라 적용되지 않습니다.

_aoffimmi v,w 성분은 texture1D에 대해 무시됩니다.

_aoffimmi w 성분은 texture2D에 대해 무시됩니다.

ld의 텍스처 좌표는 부호 없는 정수이므로 오프셋으로 인해 주소가 0 아래로 내려가면 큰 주소로 래핑되어 범위를 벗어난 액세스가 발생합니다.

반환 형식 제어

ld에 의해 대상 레지스터로 반환되는 데이터 서식은 sample 명령에 대해 설명된 것과 동일한 방식으로 결정됩니다. srcResource 매개 변수(t#)에 바인딩된 형식을 기반으로 합니다.

sample 명령과 마찬가지로 ld에 대해 반환된 값은 형식에 없는 성분에 대한 형식별 기본값이 있는 4-벡터입니다. srcResource의 swizzle은 텍스처 로드에서 반환되는 4개 성분 결과를 다시 구성하는 방법을 결정한 후 dest의 .mask가 dest의 어떤 성분이 업데이트되는지 결정합니다.

32비트 부동 소수점 값이 ld에 의해 32비트 레지스터로 읽히면 비트는 그대로 유지됩니다. 즉, 비정규 값은 비정상으로 유지됩니다. 이는 sample 명령과 다릅니다.

기타 세부 정보

ld 명령과 관련된 필터링이 없으므로 LOD 바이어스와 같은 개념이 ld에 적용되지 않습니다. 따라서 샘플러 s# 매개 변수가 없습니다.

제한

  • srcResource는 TextureCube가 아닌 t# 레지스터여야 합니다. srcResource도 t# 레지스터에 바인딩할 수 없는 상수 버퍼가 될 수 없습니다.
  • srcResource에 대한 상대 주소 지정은 허용되지 않습니다.
  • srcAddress는 임시(r#/x#), 상수(cb#) 또는 입력(v#) 레지스터여야 합니다.
  • dest는 임시(r#/x#) 또는 출력(o*#) 레지스터여야 합니다.

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

꼭짓점 셰이더 기하 도형 셰이더 픽셀 셰이더
x x x

최소 셰이더 모델

이 함수는 다음 셰이더 모델에서 지원됩니다.

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

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