DirectX Graphics DirectX Graphics 의 새 기능 [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
여기에서는, Microsoft® DirectX 9.0® 에 있어서의 DirectX 그래픽스의 새 기능에 대해 설명한다. DirectX 전체의 새 기능에 대해서는, 「DirectX 9.0 의 새 기능」을 참조할것.
주제를 찾아내기 쉽게, 프로그래밍 가이드를 다음과 같이 나누었다.
DirectX 9.0 형식의 정점 선언에 대한 새로운 페이지가 추가되었다. 「정점 선언」을 참조할것.
텍스처의 섹션 - 밉맵의 자동 생성이 추가되었다. 「밉맵의 자동 생성」을 참조할것.
현재의 정점 셰이더와 픽셀 셰이더는, 핸들로 참조하는 것은 아니고, 개체이다. 정점 셰이더와 정점 선언의 분리에 대해 자세하게 설명하는, 새로운 주제도 추가되고 있다. 구성 요소 개체 모델 (COM) 인터페이스의 「IDirect3DVertexShader9 」 및 「IDirect3DPixelShader9 」를 참조할것.
현재의 셰이더와 정점 스트림 선언은, 생성시에 서로 바인드 되지 않는다. 현재의 정점 스트림 선언은 D3DVERTEXELEMENT9 요소의 배열로서 표현한다. 더 자세한 정보는, 「정점 선언의 맵핑」 및 「IDirect3DDevice9::SetFVF 」를 참조할것.
버전 2 의 정점 셰이더 (vs_2_0)에는, 제한부의 flow control (loop ...endloop ,if ...else ...endif , 서브 루틴)이 추가되고 있다. 그 외의 기능에는, 레지스터의 증가, 정수 설정 메서드 (IDirect3DDevice9::SetVertexShaderConstantB ,IDirect3DDevice9::SetVertexShaderConstantF , 및 IDirect3DDevice9::SetVertexShaderConstantI ), 새로운 매크로 명령 (거듭제곱, 외적, 부호, 절대치, 라인형 보간)등이 있다. 「정점 셰이더 2_0 」를 참조할것.
픽셀 셰이더 버전 2 (ps_2_0)에서는, 텍스처 레지스터에 가세해 샘플러 레지스터가 생성 되었으므로, 텍스처 데이터와 텍스처 샘플링이 분리되었다. 명령수와 레지스터수가 증가했다. float 의 데이터형이 추가되었다. 텍스처 주소 명령과 산술 명령을 혼재할 수 있게 되었다. 정부 반전을 제외한 모든 수식자가 삭제되었다. 새로운 매크로 및 명령에는, 정현과 코사인, 정규화, 외적, 거듭제곱, 선형 보간, 투영 텍스처 로드, 바이어스 상세 레벨 (LOD) 텍스처 로드등이 있다. 「픽셀 셰이더 2_0 」를 참조할것.
하드웨어 지원을 이용하지 않아도 셰이더를 효율적으로 개발할 수 있도록(듯이), 소프트웨어 셰이더가 처리 되었다. 추가된 소프트웨어 버전은, vs_2_sw, vs_3_sw, ps_2_sw, ps_3_sw 이다.
확장 셰이더 버전은, 기존의 셰이더 버전을 포함해, 하드웨어에 의해 특정의 능력이 설정되어 있는 경우는 기능이 확장된다. 확장 기능에는, 동적 flow control, 정적 flow control의 네스트, 그라데이션 명령, 임의의 교체등이 있다. 더 자세한 정보는, 「정점 셰이더 2_0 확장」 및 「픽셀 셰이더 2_0 확장」을 참조할것.
버전 3 의 셰이더는, 확장 셰이더 버전의 기능이 한층 더 강화해, 능력을 설정할 필요가 없어졌다. 또, 정점 셰이더는, 정점 텍스처 처리의 지원이 추가되어 렌더링 호출중의 정점 셰이더 레지스터의 설정 빈도를 제어할 수 있게 되었다. 더 자세한 정보는, 「정점 셰이더 3_0 」 및 「픽셀 셰이더 3_0 」를 참조할것.
레퍼런스에는 다음과 같은 새로운 페이지가 많이 추가되었다.
이펙트 프레임워크(framework). 새로운 인터페이스 ID3DXEffectCompiler 를 사용하면 사용자는 함수 또는 정점 셰이더로부터 이펙트를 컴파일 할 수 있다. 상위 레벨 셰이더 언어를 사용해 함수를 기술할 수 있다.
그 외의 새 기능에는, 다음의 것이 있다.