HLSL 도우미

연결 가능한 픽셀 셰이더를 작성하는 효과 작성자를 지원하기 위해 d2d1effecthelpers.hlsli는 도우미 메서드 및 매크로 형식으로 HLSL 언어 확장 집합을 정의합니다.

프로젝트에 d2d1effecthelpers.hlsli를 추가하려면 HLSL 파일에 #include 문을 추가합니다. d2d1effecthelpers.hlsli는 d2d1.h와 같은 다른 Direct2D 헤더와 동일한 위치에 있습니다. $(WindowsSDK_IncludePath) 매크로를 추가 포함 디렉터리 속성에 추가하여 HLSL 파일의 속성 페이지에서 참조할 수 있습니다. #include 문은 이러한 D2D_INPUT_COUNT 전처리기 지시문이 정의된 후에 와야 합니다.

#include <d2d1effecthelpers.hlsli>

Direct2D는 컴퓨팅 또는 꼭짓점 셰이더 연결을 지원하지 않습니다. 그러나 효과에서 꼭짓점 셰이더와 픽셀 셰이더를 모두 사용하는 경우 픽셀 셰이더의 출력을 계속 연결할 수 있습니다.

전처리기 지시문

효과에 대한 정보를 전달하려면 전처리기 지시문이 필요합니다. 여기에는 각 입력의 입력 수와 샘플링 유형이 포함됩니다. 해당하는 경우 다음 값을 관련 셰이더 진입점 위의 효과 셰이더 코드에 정의해야 합니다.

  • D2D_INPUT_COUNT <N> : 효과에 대한 텍스처 입력 수를 선언합니다. 효과에 입력 수가 가변적인 경우 이 값은 각 셰이더 진입점으로 적절하게 범위가 지정되어야 합니다. 이 값을 정의하는 것은 필수입니다.
  • D2D_INPUT<N>_SIMPLE : 단순 샘플링을 사용하도록 N번째 입력을 선언합니다. 정의되지 않은 경우 N번째 입력은 기본적으로 복합으로 설정됩니다. 이 값을 정의하는 것은 선택 사항입니다.
  • D2D_INPUT<N>_COMPLEX : 복잡한 샘플링을 사용하도록 N번째 입력을 선언합니다. 정의되지 않은 경우 N번째 입력은 기본적으로 복합으로 설정됩니다. 이 값을 정의하는 것은 선택 사항입니다.
  • D2D_REQUIRES_SCENE_POSITION : 셰이더 함수가 장면 위치 값(즉, D2DGetScenePosition 도우미 함수)을 사용하는 도우미 메서드를 호출함을 나타냅니다. 연결된 셰이더당 하나의 함수만 이 매개 변수를 활용할 수 있으므로 이 매개 변수는 필요한 경우에만 포함해야 합니다. 이 값을 정의하는 것은 선택 사항입니다.
  • D2D_CUSTOM_ENTRY : 픽셀 셰이더 함수가 사용자 지정 꼭짓점 셰이더의 출력을 사용하므로 입력 매개 변수를 선언합니다. 모든 사용자 지정 꼭짓점 셰이더 입력은 복잡한 샘플링을 사용하며 다른 셰이더 함수의 출력을 사용할 수 없습니다(즉, 사후 연결만 가능). 이 값을 정의하는 것은 선택 사항입니다.

예:

#define D2D_INPUT_COUNT 3
#define D2D_INPUT0_SIMPLE
#define D2D_INPUT1_SIMPLE
#define D2D_INPUT2_COMPLEX
#include <d2d1effecthelpers.hlsli>
          

도우미 함수

도우미 함수는 일부 네이티브 HLSL 내장 함수의 대체 함수로 사용됩니다. 컴파일 시 이러한 도우미 함수는 컴파일 대상 형식(전체 셰이더 또는 내보내기 함수)에 따라 Direct2D에서 적절한 버전으로 다시 정의됩니다.

도우미는 다음을 수행합니다.

D2DGetInput
D2DSampleInput
D2DSampleInputAtOffset
D2DSampleInputAtPosition
D2DGetInputCoordinate
D2DGetScenePosition
D2D_PS_ENTRY

효과 셰이더 연결