효과(Direct3D 9)

Microsoft DirectX 효과를 사용하면 꼭짓점과 픽셀 셰이더를 파이프라인 상태와 통합하여 개체를 렌더링할 수 있습니다. 효과는 셰이더를 결합하여 고유한 렌더링 조건을 생성하는 다음 논리적 단계입니다.

또한 효과는 다양한 하드웨어 버전에 대한 셰이더를 작성하는 편리한 방법을 제공합니다. 다른 비디오 카드는 다양한 기능을 지원하므로 애플리케이션은 다양한 디바이스에서 실행되는 여러 기술을 작성할 수 있습니다. 이러한 방식으로 애플리케이션이 가장 최신의 가장 큰 하드웨어에서 실행되는 경우 애플리케이션은 가장 정교한 효과 기술을 실행할 수 있습니다. 반면에 덜 정교한 효과 기술은 비용이 적게 들거나 지원도가 낮은 하드웨어에서 실행되도록 자동으로 선택할 수 있습니다.

효과는 꼭짓점 처리와 그래픽 파이프라인에서 수행하는 픽셀 처리의 일부를 대체할 수 있습니다. 꼭짓점 셰이더 및 픽셀 셰이더를 사용하는 효과의 예는 BasicHLSL 샘플에 있습니다. 이 샘플을 가져와 DirectX SDK에서 알아볼 수 있습니다. DirectX SDK에 대한 자세한 내용은 DirectX SDK는 어디에 있나요?를 참조하세요.

효과에 대한 자세한 내용은 다음 topics 참조하세요.

효과 및 3D 파이프라인

다음 다이어그램은 파이프라인을 보여 줍니다.

3d 파이프라인 다이어그램

파이프라인은 입력 데이터를 프레임 버퍼를 채우는 출력 픽셀로 변환합니다. 입력 데이터는 개체 공간의 꼭짓점으로 구성된 개체 또는 N 패치, 사각형 패치 및 삼각형 패치에서 생성된 상위 표면에서 가져옵니다. 입력 데이터가 테셀레이션되면 파이프라인은 최종 픽셀 색을 생성하기 전에 꼭짓점 처리, 기본 처리 및 픽셀 처리를 수행합니다.

꼭짓점 및 픽셀 처리는 고정 함수 파이프라인에서 수행하거나 프로그래밍 가능한 셰이더를 사용하여 구현할 수 있습니다. 입력 데이터 테셀레이션, 기본 처리 및 데이터 출력은 파이프라인 상태에 의해 제어됩니다. 이 모든 것을 효과에 통합할 수 있습니다. 효과는 파이프라인이 작동하는 방식을 제어하는 상태를 설정합니다. 효과는 프로그래밍 가능한 셰이더와 고정 함수 상태를 관리합니다.

효과는 상태를 저장하고 복원할 수 있으며, 디바이스는 효과가 실행되기 전과 동일한 상태로 남습니다. 효과가 관리할 수 있는 상태 유형은 다음과 같습니다.

  • 셰이더 상태입니다. 여기에는 셰이더 만들기 및 삭제, 셰이더 상수 설정, 셰이더 상태 설정 및 셰이더로 렌더링이 포함됩니다.
  • 텍스처 및 샘플러 상태입니다. 여기에는 텍스처 파일 지정, 텍스처 단계 초기화, 샘플러 개체 만들기 및 샘플러 상태 설정이 포함됩니다.
  • 기타 파이프라인 상태입니다. 여기에는 변환, 조명, 재질 및 렌더링 옵션을 설정하는 상태가 포함됩니다. 전역 또는 지역 변수일 수 있습니다. 변수는 효과 자체 또는 애플리케이션에 의해 설정할 수 있습니다.

효과에는 기술이라는 여러 렌더링 옵션이 포함되어 있습니다. 각 기술은 전역 변수, 파이프라인 상태, 텍스처 및 샘플러 상태 및 셰이더 상태를 캡슐화합니다. 단일 스타일은 렌더링 패스에서 구현됩니다. 기술에서 하나 이상의 패스를 캡슐화할 수 있습니다. 모든 패스 및 기술의 유효성을 검사하여 효과 코드가 하드웨어 디바이스에서 실행되는지 확인할 수 있습니다.

효과 저장 및 복원 상태

효과는 상태를 관리합니다. 여기서는 파이프라인이 렌더링 조건을 지정하는 데 필요한 모든 종류의 정보를 포함하므로 상태라는 단어가 매우 광범위하게 사용됩니다. 여기에는 파이프라인의 거의 모든 기능 영역이 포함됩니다.

렌더링 옵션은 기술과 패스에 의해 제어됩니다. 애플리케이션은 하나의 활성 기술을 설정하고 하나 이상의 패스를 렌더링하여 효과를 렌더링합니다. 효과의 모든 렌더링은 일치하는 BeginEnd 호출 쌍 내에서 수행됩니다. Begin이 호출되면 상태 블록이 만들어지고 디바이스 상태가 저장됩니다(달리 지정하지 않는 한). 기술이 애플리케이션이 렌더링하도록 지정하는 패스를 렌더링한 후 활성 기술을 종료하기 위해 End 가 호출됩니다. 효과 시스템은 상태 블록에서 캡처된 파이프라인 상태를 자동으로 복원하여 응답합니다(이 저장 및 복원 기능을 사용하지 않도록 선택하지 않는 한).

각각 자체 상태 설정이 필요한 다중 패스 렌더링 시퀀스를 프로그래밍할 때 효과는 상태 변경 내용을 추적하는 데 필요한 하우스키핑을 줄일 수 있습니다. 효과에 의해 저장 및 복원할 수 있는 상태에 대한 자세한 내용은 효과 상태(Direct3D 9)를 참조하세요.

효과가 매개 변수를 공유할 수 있음

효과 매개 변수는 모두 효과에 선언된 비정적 변수입니다. 여기에는 전역 변수 및 주석이 포함될 수 있습니다. 효과 매개 변수는 공유 키워드(keyword) 매개 변수를 선언한 다음 효과 풀을 사용하여 효과를 만들어 서로 다른 효과 간에 공유할 수 있습니다.

복제된 효과는 복제되는 효과와 동일한 효과 풀을 사용합니다. 효과를 복제하면 전역 변수, 기술, 패스 및 주석을 비롯한 효과의 정확한 복사본이 만들어집니다.

Direct3D 9에 대한 프로그래밍 가이드