High-Order 패치된 표면 지원

고차 패치된 표면에 대한 적응형 테셀레이션 및 변위 매핑을 지원하는 디바이스용 DirectX 9.0 버전 드라이버는 이러한 지원을 기능 비트로 나타내야 하며 새로운 적응-테셀레이션 렌더링 상태 및 변위 맵 텍스처 스테이지 상태를 처리할 수 있어야 합니다. 적응 테셀레이션 및 변위 매핑에 대한 자세한 내용은 최신 DirectX SDK를 참조하세요.

적응 테셀레이션 및 변위 매핑의 지원을 나타내기 위해 드라이버는 D3DCAPS9 구조체의 DevCaps2 멤버에서 다음 기능 비트를 설정합니다.

D3DDEVCAPS2_ADAPTIVETESSRTPATCH
디바이스는 렌더링 대상 패치를 적응적으로 테셀레이트할 수 있습니다.

D3DDEVCAPS2_ADAPTIVETESSNPATCH
디바이스는 N 패치를 적응적으로 테셀레이트할 수 있습니다.

D3DDEVCAPS2_DMAPNPATCH
디바이스는 N 패치에 대한 변위 맵을 지원합니다.

D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH
디바이스는 N 패치에 대해 미리 샘플링된 변위 맵을 지원합니다.

디스플레이 디바이스에서 지원할 수 있는 N 패치 하위 구역의 최대 수를 나타내기 위해 드라이버는 D3DCAPS9 구조체의 MaxNpatchTessellationLevel 멤버를 최대 수로 설정합니다. 사전 샘플링된 변위 매핑을 사용하는 애플리케이션은 이 최대 수로의 디바이스 클램핑에 의해 영향을 받습니다.

드라이버는 Reporting DirectX 8.0 Style Direct3D 기능에 설명된 대로 D3DCAPS8 구조를 반환하는 방법과 유사하게 GetDriverInfo2 쿼리에 대한 응답으로 D3DCAPS9 구조를 반환합니다. 이 쿼리의 지원은 GetDriverInfo2 지원에 설명되어 있습니다.

드라이버는 특정 표면 형식에 대해 DDPIXELFORMAT 구조체의 dwOperations 멤버에 D3DFORMAT_OP_DMAP 플래그를 지정하여 변위 맵 샘플링 형식을 표시합니다. 텍스처 표면이 만들어지면 Direct3D 런타임은 DDSCAPSEX(DDSCAPS2) 구조체의 dwCaps3 멤버의 DDSCAPS3_DMAP 비트를 설정하여 테셀레이션 단위에서 텍스처를 샘플링할 수 있음을 나타냅니다.

DirectX 9.0 이상 드라이버는 D3DRS_PATCHSEGMENTS 렌더링 상태 값이 1.0f 미만인 경우에만 N 패치 기능을 해제해야 합니다. DirectX 8.1 및 이전 드라이버는 이러한 방식으로 동작할 필요가 없습니다.

DirectX 9.0의 경우 기본값과 함께 다음과 같은 적응형 테셀레이션 렌더링 상태가 새로 제공됩니다.

D3DRS_MAXTESSELLATIONLEVEL = 1.0f

D3DRS_MINTESSELLATIONLEVEL = 1.0f

D3DRS_ADAPTIVETESS_X = 0.0f

D3DRS_ADAPTIVETESS_Y = 0.0f

D3DRS_ADAPTIVETESS_Z = 1.0f

D3DRS_ADAPTIVETESS_W = 0.0f

D3DRS_ENABLEADAPTIVETESSELLATION = FALSE

DirectX 9.0의 새로운 D3DDMAPSAMPLER 샘플러는 공간 분할 단위에서 변위 맵 텍스처를 설정하는 데 사용됩니다.

참고 DirectX 9.0 이상 애플리케이션은 D3DSAMPLERSTATETYPE 열거형의 D3DSAMP_DMAPOFFSET 값을 사용하여 미리 샘플링된 변위 맵에 대한 오프셋(꼭짓점)을 제어할 수 있습니다. 런타임은 사용자 모드 샘플러 상태(D3DSAMP_Xxx)를 커널 모드 D3DTSS_Xxx 값에 매핑하므로 DirectX 9.0 이상 드라이버는 사용자 모드 샘플러 상태를 처리할 필요가 없습니다. 따라서 드라이버는 D3DDP2OP_TEXTURESTAGESTATE 작업을 위해 D3DHAL_DP2TEXTURESTAGESTATE 구조체의 TSState 멤버에서 D3DTSS_DMAPOFFSET 값을 처리해야 합니다. D3DSAMPLERSTATETYPE 및 미리 샘플링된 변위 매핑에 대한 자세한 내용은 최신 DirectX SDK 설명서를 참조하세요.