효과(Direct3D 11)

DirectX 효과는 HLSL 로 작성된 식과 효과 프레임워크와 관련된 일부 구문에 의해 설정된 파이프라인 상태의 컬렉션입니다.

효과를 컴파일한 후 효과 프레임워크 API를 사용하여 렌더링합니다. 효과 기능은 기하 도형과 단색을 출력하는 픽셀 셰이더를 변환하는 꼭짓점 셰이더와 같은 간단한 것에서부터 여러 패스를 필요로 하고, 그래픽 파이프라인의 모든 단계를 사용하고, 프로그래밍 가능한 셰이더와 연결되지 않은 파이프라인 상태를 조작하는 렌더링 기술에 이르기까지 다양할 수 있습니다.

첫 번째 단계는 효과에서 제어하려는 상태를 구성하는 것입니다. 여기에는 셰이더 상태(꼭짓점, 헐, 도메인, 기하 도형, 픽셀 및 컴퓨팅 셰이더), 셰이더에서 사용하는 텍스처 및 샘플러 상태, 프로그래밍할 수 없는 기타 파이프라인 상태가 포함됩니다. 메모리에서 효과를 텍스트 문자열로 만들 수 있지만 일반적으로 크기는 효과 파일(.fx 확장으로 끝나는 텍스트 파일)에 효과 상태를 저장하는 데 유용할 정도로 커집니다. 효과를 사용하려면 HLSL 구문과 효과 프레임워크 구문을 검사, API 호출을 통해 효과 상태를 초기화하고, 렌더링 API를 호출하도록 렌더링 루프를 수정해야 합니다.

효과는 특정 효과에 필요한 모든 렌더링 상태를 기술이라는 단일 렌더링 함수로 캡슐화합니다. 패스는 렌더링 상태를 포함하는 기술의 하위 집합입니다. 여러 패스 렌더링 효과를 구현하려면 기술 내에서 하나 이상의 패스를 구현합니다. 예를 들어 깊이/스텐실 버퍼의 한 집합으로 일부 기하 도형을 렌더링한 다음 그 위에 스프라이트를 그립니다. 첫 번째 패스에서 기하 도형 렌더링을 구현하고 두 번째 패스에서 스프라이트 드로잉을 구현할 수 있습니다. 효과를 렌더링하려면 렌더링 루프에서 두 패스를 렌더링하기만 하면 됩니다. 효과에 다양한 기술을 구현할 수 있습니다. 물론 기술 수가 많을수록 효과에 대한 컴파일 시간이 커지게 됩니다. 이 기능을 활용하는 한 가지 방법은 다른 하드웨어에서 실행되도록 설계된 기술로 효과를 만드는 것입니다. 이를 통해 애플리케이션은 검색된 하드웨어 기능에 따라 성능을 정상적으로 다운그레이드할 수 있습니다.

기술 집합은 그룹에서 그룹화할 수 있습니다(구문 "fxgroup"을 사용). 기술은 어떤 방식으로든 그룹화할 수 있습니다. 예를 들어 여러 그룹을 만들 수 있습니다., 재료 당 하나; 각 재질에는 각 하드웨어 수준에 대한 기술이 있을 수 있습니다. 각 기술에는 특정 하드웨어의 재질을 정의하는 패스 집합이 있습니다.

섹션 내용

항목 설명
효과에서 상태 구성
Direct3D 11을 사용하면 특정 파이프라인 단계에 대한 효과 상태가 구조별로 구성됩니다.
효과 시스템 인터페이스
효과 시스템은 효과 상태를 관리하기 위한 여러 인터페이스를 정의합니다.
특수 인터페이스
ID3DX11EffectVariable 에는 인터페이스를 필요한 특정 유형의 인터페이스로 캐스팅하는 여러 메서드가 있습니다.
효과의 인터페이스 및 클래스
효과 11에서 클래스와 인터페이스를 사용하는 방법에는 여러 가지가 있습니다.
효과 렌더링
효과를 사용하여 정보를 저장하거나 상태 그룹을 사용하여 렌더링할 수 있습니다.
효과 복제
효과를 복제하면 효과의 거의 동일한 두 번째 복사본이 만들어집니다.
Stream Out 구문
스트림 출력이 있는 기하 도형 셰이더는 특정 구문을 사용하여 선언됩니다.
효과 10과 효과 11 간의 차이점
이 항목에서는 효과 10과 효과 11의 차이점을 보여 줍니다.

Direct3D 11의 프로그래밍 지침