texldl - ps

특정 샘플러로 텍스처를 샘플링합니다. 샘플링되는 특정 밉맵 세부 수준은 텍스처 좌표의 네 번째 성분으로 지정되어야 합니다.

Syntax

texldl dst, src0, src1

 

여기서

  • dst는 대상 레지스터입니다.
  • src0은 텍스처 샘플의 텍스처 좌표를 제공하는 원본 레지스터입니다. 텍스처 좌표 레지스터를 참조하세요.
  • src1은 원본 샘플러 레지스터(s#)를 식별합니다. 여기서 #은 샘플링할 텍스처 샘플러 번호를 지정합니다. 샘플러는 D3DSAMPLESTATETYPE 열거형(예: D3DSAMP_MINFILTER)에 의해 정의된 텍스처 및 컨트롤 상태와 연결되어 있습니다.

설명

픽셀 셰이더 버전 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
texldl x x

 

texldl은 src1이 참조하는 샘플러 단계에서 텍스처 집합을 조회합니다. 세부 수준은 src0.w에서 선택됩니다. 이 값은 음수가 될 수 있으며, 이 경우 선택된 세부 수준은 MAGFILTER가 있는 0번째(가장 큰 맵)입니다. src0.w는 부동 소수점 값이므로 소수 값은 두 밉 수준 사이를 보간하는 데 사용됩니다(MIPFILTER가 LINEAR인 경우). 샘플러 상태 MIPMAPLODBIAS 및 MAXMIPLEVEL이 적용됩니다. 샘플러 상태에 대한 자세한 내용은 D3DSAMPLESTATETYPE을 참조하세요.

셰이더 프로그램이 텍스처 집합이 없는 샘플러에서 샘플링하는 경우 대상 레지스터에서 0001을 가져옵니다.

다음은 참조 디바이스가 따르는 대략적인 알고리즘입니다.

LOD = src0.w + LODBIAS;
if (LOD <= 0 )
{
   LOD = 0;
   Filter = MagFilter;
   tex = Lookup( MAX(MAXMIPLEVEL, LOD), Filter );
}
else
{
   Filter = MinFilter;
   LOD = MAX( MAXMIPLEVEL, LOD );
   tex = Lookup( Floor(LOD), Filter );
   if( MipFilter == LINEAR )
   {
      tex1 = Lookup( Ceil(LOD), Filter );                        
      tex = (1 - frac(src0.w))*tex + frac(src0.w)*tex1;
   }
}

제한 사항:

  • 텍스처 좌표는 텍스처 크기에 따라 크기가 조정되지 않아야 합니다.
  • dst는 임시 레지스터(r#)여야 합니다.
  • dst는 쓰기 마스크를 허용할 수 있습니다. 대상 레지스터 쓰기 마스크를 참조하세요.
  • 누락된 성분의 기본값은 0 또는 1이며 텍스처 형식에 따라 다릅니다.
  • src1은 샘플러(Direct3D 9 asm-ps)(s#)여야 합니다. src1은 negate 한정자를 사용할 수 없습니다(대상 레지스터 쓰기 마스크 참조). src1은 샘플링 후 쓰기 마스크(대상 레지스터 쓰기 마스크 참조)가 적용되기 전에 적용되는 swizzle(원본 레지스터 Swizzling 참조)을 사용할 수 있습니다. 셰이더 시작 부분에서 샘플러가 선언되어 있어야 합니다(dcl_samplerType(sm2, sm3 - ps asm) 사용).
  • 텍스처 샘플을 수행하는 데 필요한 좌표의 수는 샘플러가 선언된 방식에 따라 다릅니다. 큐브로 선언된 경우 3-성분 텍스처 좌표(.rgb)가 필요합니다. 유효성 검사는 tex_ldl에 제공된 좌표가 샘플러에 대해 선언된 텍스처 차원에 충분하도록 강제합니다. 그러나 애플리케이션이 샘플러에 대해 선언된 차원과 동일한 차원으로 텍스처(API를 통해)를 실제로 설정한다고 보장할 수 없습니다. 이러한 경우 런타임은 불일치를 검색하려고 시도합니다(디버그에서만 가능). 텍스처 좌표에 있는 것보다 적은 차원으로 텍스처를 샘플링하는 것이 허용되며 추가 텍스처 좌표 성분을 무시하는 것으로 간주됩니다. 반대로 텍스처 좌표에 있는 것보다 더 많은 차원으로 텍스처를 샘플링하는 것은 불법입니다.
  • src0(텍스처 좌표)이 임시 레지스터인 경우 조회(위에 설명됨)에 필요한 성분이 미리 작성되어 있어야 합니다.
  • 부호 없는 RGB 텍스처를 샘플링하면 0.0과 1.0 사이의 부동 소수점 값이 생성됩니다.
  • 부호 있는 텍스처를 샘플링하면 -1.0에서 1.0 사이의 부동 소수점 값이 생성됩니다.
  • 부동 소수점 텍스처를 샘플링할 때 Float16은 데이터 범위가 MAX_FLOAT16 이내임을 의미합니다. Float32는 파이프라인의 최대 범위가 사용될 것임을 의미합니다. 범위 밖의 샘플링은 정의되지 않습니다.
  • 종속 읽기 제한이 없습니다.

픽셀 셰이더 명령