Visual Studio를 사용하여 Direct2D 연결 가능 셰이더 컴파일

효과 셰이더 연결은 단일 패스에서 렌더링될 수 있도록 여러 셰이더를 함께 연결하는 Direct2D 최적화입니다. 사용자 지정 셰이더를 작성하는 경우 이 최적화를 활용하기 위해 연결이 호환되는지 확인해야 합니다. official documentation에서는 이러한 효과를 작성하고 컴파일하는 방법을 설명하지만 Visual Studio의 기본 HLSL 빌드는 연결 호환 셰이더에 대한 지원을 제공하지 않습니다. 대신, 이 작업을 수행하려면 사용자 지정 빌드 단계를 구성해야 하며, 이 게시물에서 안내하는 내용입니다.

1단계: 셰이더를 컴파일하는 배치 스크립트 만들기



먼저 Visual Studio 프로젝트에서 2단계 프로세스를 실행하여 연결 호환 셰이더를 컴파일하는 배치 스크립트를 생성합니다buildshader.bat.

fxc %1.hlsl /nologo /T lib_4_0 /D D2D_FUNCTION /D D2D_ENTRY=main /Fl %1.fxlib /I %2
fxc %1.hlsl /nologo /T ps_4_0 /D D2D_FULL_SHADER /D D2D_ENTRY=main /E main /setprivate %1.fxlib /Fo:%1.cso /I %2


이것은 사용자 정의 빌드 도구로 사용할 수 있도록 몇 가지 매개변수를 도입한 것을 제외하고는 공식 문서에서 직접 가져온 것입니다. 첫 번째는 입력 파일이고 두 번째는 SDK 포함 디렉터리입니다(셰이더에서 사용할 d2d1effecthelpers 포함에 필요함). 이 스크립트의 출력은 .fxlib 파일(중간 파일) 및 .cso 파일(최종 연결 호환 셰이더 출력)입니다.

2단계: HLSL 파일에 대한 사용자 지정 빌드 도구 구성



다음으로 프로젝트의 각 HLSL 파일에 대해 속성 페이지를 열고 다음과 같이 변경합니다.

항목 형식
맞춤형 빌드 도구

명령줄buildshader "%(Filename)" "$(UM_IncludePath)"
출력%(Filename).fxlib;%(Filename).cso
추가 종속성buildshader.bat


출력 및 추가 종속성을 통해 빌드 시스템은 입력 파일의 다시 빌드를 트리거할 시기를 알 수 있습니다. Visual Studio documentation 에서 이러한 옵션에 대한 자세한 내용을 읽을 수 있습니다.

그리고 그게 다야! 셰이더는 표준 Visual Studio 빌드 프로세스의 일부로 자동으로 (다시) 빌드됩니다. 실제 예를 보려면 Fotografix repository on GitHub 을 확인하십시오.

좋은 웹페이지 즐겨찾기