DirectX Graphics 레퍼런스 셰이더 레퍼런스 정점 셰이더 3_0 정점 텍스처   [목차열람] [주소복사] [슬롯비우기]
정점 텍스처
 
Microsoft DirectX 9.0

정점 텍스처


이 셰이더 모델은,texldl 를 사용한 정점 셰이더에 의한 텍스처 룩 업을 지원 한다. 정점 엔진에는, 4 개의 텍스처 샘플러 스테이지가 포함되어 그 이름은 D3DVERTEXTEXTURESAMPLER, D3DVERTEXTEXTURESAMPLER+1, D3DVERTEXTEXTURESAMPLER+2, 및 D3DVERTEXTEXTURESAMPLER+3 이다. 이것들은, 픽셀 엔진의 디스플레이스먼트 맵 샘플러나 텍스처 샘플러와는 다르다.

이것들 4 개의 스테이지로 설정된 텍스처는, 정점 엔진을 사용해 샘플링 할 수 있어 스테이지는 IDirect3D9::CheckDeviceFormat 를 사용해 프로그래밍 할 수 있다. 이러한 스테이지에 텍스처를 설정하려면 , 스테이지 인덱스 D3DVERTEXTEXTURESAMPLER ~ D3DVERTEXTEXTURESAMPLER+3 과 함께,IDirect3DDevice9::SetTexture 를 사용한다. 새로운 레지스터로서 샘플러 레지스터가 정점 셰이더에 도입되었다. 이 레지스터는, ps_2_0 와 같이, 정점 텍스처 샘플러를 나타낸다. 이 레지스터는, 사용전에 셰이더로 정의할 필요가 있다.

애플리케이션은 D3DUSAGE_QUERY_VERTEXTEXTURE 와 함께 IDirect3D9::CheckDeviceFormat 를 호출해, 포맷이 정점 텍스처로서 지원 되고 있는지를 문의할 수가 있다.

  이것들은 문의 플래그이므로,Createxxx 함수에서는 사용할 수 없다. POOL_DEFAULT 로 생성 된 정점 텍스처는, 픽셀 텍스처로서 설정할 수 있어 그 역도 가능하다. 다만, 소프트웨어 정점 처리를 사용하기 위해서(때문에)는, 믹스 모드 장치일까 소프트웨어 정점 처리 장치일까를 불문하고, 정점 텍스처는 POOL_SCRATCH 로 생성 해야 한다.

이 기능은, 다음의 점을 제외해, 픽셀 텍스처와 같다.

다음과 같은 제한이 있다.

샘플링 스테이지 레지스터

샘플링 스테이지 레지스터는, 텍스처 로드문으로 사용하는 샘플링 유니트를 지정한다. 샘플링 유니트는 텍스처 샘플링 스테이지에 대응해,IDirect3DDevice9::SetSamplerState 로 지정되는 샘플링 고유의 스테이트를 캡슐화한다.

각각의 샘플러는, 대응하는 샘플러에 IDirect3DDevice9::SetTexture 를 사용해 설정된 단일의 텍스처 표면을 일의로 지정한다. 다만, 같은 텍스처 표면을 복수의 샘플러로 설정하는 것은 가능하다.

텍스처는, 드로잉(Drawing)시에는 렌더링 타겟 및 텍스처 스테이지에 동시에 설정할 수 없다.

vs_3_0 에서는 4 개의 샘플러를 지원 하므로, 1 개의 셰이더 패스로, 최대 4 개의 텍스처 표면을 읽어낼 수가 있다. 샘플러 레지스터는, 텍스처 로드문 texldl 의 인수로서의 보고 표시된다.

vs_3_0 에서는, 샘플러를 사용하는 경우, ps_2_0 와 같이 dcl_textureType 를 사용해, 셰이더 프로그램의 최초로 샘플러를 선언할 필요가 있다.

소프트웨어 처리

이 기능은, 소프트웨어 정점 처리로 지원 된다. 지원 되는 필터의 종류를 조사하려면 ,IDirect3DDevice9::GetDeviceCaps 를 호출해,D3DCAPS9 의 VertexTextureFilterCaps 멤버를 조사한다. 공개 끝난 모든 텍스처 포맷은, 소프트웨어 정점 처리로 정점 텍스처로서 지원 된다.

소프트웨어 정점 처리 모드로 특정의 텍스처 포맷이 지원 되고 있는지를 애플리케이션이 조사하려면 ,IDirect3D9::CheckDeviceFormat 를 호출해, 사용 설정으로서 (D3DUSAGE_QUERY_VERTEXTEXTURE | D3DUSAGE_SOFTWAREPROCESSING)를 지정한다. 모든 포맷은 소프트웨어 정점 처리로 지원 된다. 소프트웨어 정점 처리에는 POOL_SCRATCH 가 필요하다.

API 의 변경

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

// New caps field in D3DCAPS9
DWORD VertexTextureFilterCaps;


© 2002 Microsoft Corporation. All rights reserved.
↑TOP