vs_3_0의 꼭짓점 텍스처(DirectX HLSL)

꼭짓점 셰이더 3.0 모델은 texldl 및 텍스처 로드 문을 사용하여 꼭짓점 셰이더에서 텍스처 조회를 지원합니다. 꼭짓점 엔진에는 D3DVERTEXTEXTURESAMPLER0, D3DVERTEXTEXTURESAMPLER1, D3DVERTEXTEXTURESAMPLER2 및 D3DVERTEXTEXTURESAMPLER3이라는 네 개의 텍스처 샘플러 단계가 포함되어 있습니다. 이러한 샘플은 픽셀 엔진의 변위 맵 샘플러 및 텍스처 샘플러와는 다릅니다.

이러한 4단계에서 설정된 텍스처를 샘플링하려면 꼭짓점 엔진을 사용하고 CheckDeviceFormat 메서드를 사용하여 스테이지를 프로그래밍할 수 있습니다. 스테이지 인덱스 D3DVERTEXTEXTURESAMPLER0부터 D3DVERTEXTEXTURESAMPLER3까지 SetTexture를 사용하여 해당 단계에서 텍스처를 설정합니다. 꼭짓점 텍스처 샘플러를 나타내는 새 레지스터가 꼭짓점 셰이더인 샘플러 레지스터(예: ps_2_0)에 도입되었습니다. 이 레지스터를 사용하려면 셰이더에서 정의해야 합니다.

애플리케이션은 D3DUSAGE_QUERY_VERTEXTEXTURE있는 CheckDeviceFormat을 호출하여 형식이 꼭짓점 텍스처로 지원되는지 여부를 쿼리할 수 있습니다.

참고

이 플래그는 쿼리 플래그이므로 Createxxx 함수에서 허용되지 않습니다. 기본 풀에서 만든 꼭짓점 텍스처는 픽셀 텍스처로 설정하고 그 반대로 설정할 수 있습니다. 그러나 소프트웨어 꼭짓점 처리를 사용하려면 스크래치 풀에서 꼭짓점 텍스처를 만들어야 합니다(혼합 모드 디바이스 또는 소프트웨어 꼭짓점 처리 디바이스인 경우).

 

기능은 다음을 제외하고 픽셀 텍스처와 동일합니다.

  • 이방성 텍스처 필터링은 지원되지 않으므로 D3DSAMP_MAXANISOTROPY 무시되고 D3DTEXF_ANISOTROPIC 이러한 단계에 대해 확대 또는 축소하도록 설정할 수 없습니다.
  • 변경 정보의 속도는 사용할 수 없으므로 애플리케이션은 세부 수준을 계산하고 해당 정보를 texldl에 대한 매개 변수로 제공해야 합니다. vs.

제한 사항은 다음과 같습니다.

  • 픽셀 셰이더와 마찬가지로 다단계 텍스처가 지원되는 경우 D3DSAMP_ELEMENTINDEX 사용하여 샘플링할 요소를 파악합니다.
  • 이러한 단계에서는 상태 D3DSAMP_DMAPOFFSET 무시됩니다.
  • checkDeviceFormatD3DUSAGE_QUERY_VERTEXTEXTURE"와 함께 사용하여 텍스처를 쿼리하여 꼭짓점 텍스처로 사용할 수 있는지 확인합니다.
  • VertexTextureFilterCaps는 꼭짓점 텍스처 샘플러에서 허용되는 필터 종류를 나타냅니다. D3DPTFILTERCAPS_MINFANISOTROPIC 및 D3DPTFILTERCAPS_MAGFANISOTROPIC 허용되지 않습니다.

샘플링 단계 레지스터

샘플링 단계 레지스터는 텍스처 로드 문에 사용할 수 있는 샘플링 단위를 식별합니다. 샘플링 단위는 SetSamplerState에 제공된 샘플링별 상태를 캡슐화하는 텍스처 샘플링 단계에 해당합니다.

각 샘플러에서는 SetTexture를 사용하여 해당 샘플러로 설정된 단일 텍스처 표면을 고유하게 식별합니다. 그러나 여러 샘플러에서 동일한 텍스처 표면을 설정할 수 있습니다.

그릴 때 텍스처는 렌더링 대상과 스테이지의 텍스처로 동시에 설정할 수 없습니다.

vs_3_0 네 개의 샘플러를 지원하므로 단일 셰이더 패스에서 최대 4개의 텍스처 표면을 읽을 수 있습니다. 샘플러 레지스터는 텍스처 로드 문에 인수로만 나타날 수 있습니다. texldl - vs.

vs_3_0 샘플러를 사용하는 경우 dcl_samplerType (sm3 - asm)(ps_2_0 )을 사용하여 셰이더 프로그램의 시작 부분에서 선언해야 합니다.

소프트웨어 처리

이 기능은 소프트웨어 꼭짓점 처리에서 지원됩니다. GetDeviceCaps를 호출하고 VertexTextureFilterCaps를 확인하여 지원되는 특정 필터 형식을 확인할 수 있습니다. 게시된 모든 텍스처 형식은 소프트웨어 꼭짓점 처리에서 꼭짓점 텍스처로 지원됩니다.

CheckDeviceFormat을 호출하고 (D3DVERTEXTEXTURESAMPLER | 를 제공하여 특정 텍스처 형식이 소프트웨어 꼭짓점 처리 모드에서 지원되는 경우 애플리케이션은 검사 수 있습니다. D3DUSAGE_SOFTWAREPROCESSING) 사용량으로 지정합니다. 모든 형식은 소프트웨어 꼭짓점 처리에 지원됩니다. 소프트웨어 꼭짓점 처리에는 스크래치 풀이 필요합니다.

API 변경 내용

   
// New define
#define D3DVERTEXTEXTURESAMPLER0 (D3DDMAPSAMPLER+1)
#define D3DVERTEXTEXTURESAMPLER1 (D3DDMAPSAMPLER+2)
#define D3DVERTEXTEXTURESAMPLER2 (D3DDMAPSAMPLER+3)
#define D3DVERTEXTEXTURESAMPLER3 (D3DDMAPSAMPLER+4)
    

#define D3DVERTEXTEXTURESAMPLER  (0x00100000L)

// New caps field in D3DCAPS9
DWORD VertexTextureFilterCaps;

꼭짓점 파이프라인