주의 : 초심자 튜토리얼은 아닙니다. 그러므로, 실제 API 호출 용례를 알고자 한다면, 샘플이나 튜토리얼을 찾아서 확인해 보세요.
주의 : 완전히 이해하고 작성한 글이 아니므로 잘못된 내용이 포함되어 있을 수 있습니다.
주의 : 이상하면 참고자료를 확인하세요.
DirectX Shader Compiler 프로젝트를 빌드하고 나면 엄청나게 많은 executable 및 library 들이 생깁니다.
하지만 우리가 그것을 다 사용할 것이 아니기 때문에 필요한 것만 가져다가 사용해야 합니다.
일단 "dxc.exe" 프로젝트만 빌드해서 executable 을 뽑아 봤는데, LLVM table 관련 executable 을 배제하면, 필수적인 바이너리의 목록은 다음과 같습니다.
dxc.exe : 커맨드라인 프로그램.
dxc.pdf : 디버깅할 거라면 필요함.
dxcompiler.dll : 실제 구현이 포함되어 있는 동적 라이브러리.
dxcompiler.pdb : 디버깅할 거라면 필요함.
저는 이것만 복사해서 제가 원하는 디렉토리에 복사했습니다.
이제 vertex shader 를 하나 만들어서 테스트해 보겠습니다. 옵션에 대한 자세한 정보는 [ Supported Command-line Options ] 에서 확인하실 수 있습니다.
다음과 같이 파워셸에서 테스트해 봤습니다.
PS C:\GIt\HairDresser\Distribution\Binaries\ThirdParty\dxc> .\dxc.exe -spirv -Fc -T vs_5_0 -E mainVS C:\GIt\HairDresser\Distribution\Binaries\ThirdParty\dxc\test.hlsl -Fo test.vertex
- -spirv : SPIR-V 를 생성.
- -E : 엔트리 포인트.
- -Fo : 아웃풋( SPIR-V )
혹시나 해서 dxcompiler.dll 을 지워 봤는데 에러가 발생하더군요.
dxc failed : error code 0x8007007e
다른 spir-v 관련 옵션들도 잘 동작하는지 테스트해 봤습니다.
PS C:\GIt\HairDresser\Distribution\Binaries\ThirdParty\dxc> .\dxc.exe -spirv -T vs_5_0 -E mainVS C:\GIt\HairDresser\Distribution\Binaries\ThirdParty\dxc\test.hlsl -Fo test.vertex -Fc test_dis.vertex
-Fc : SPIR-V 디스어셈블리 생성.
다음과 같이 정상적으로 디스어셈블리가 생성되었습니다. 내용이 정확한지는 아직 모릅니다. 시리즈를 진행하면서 의미를 파악해 볼 계획입니다.
단지 "Location" 과 같은 키워드가 있는 것으로 봐서는 따로 리플렉션 도구를 이용하지 않아도 이것을 파싱함으로써 정보를 얻을 수도 있겠다는 생각이 들긴 합니다.
참고 자료
[ 1 ] HLSL to SPIR-V Feature Mapping Manual, DirectXShaderCompiler.
'Vulkan & OpenGL' 카테고리의 다른 글
[ 번역 ] The Mali GPU: An Abstract Machine, Part 1 - Frame Pipelining (0) | 2019.09.18 |
---|---|
[ 번역 ] Vulkan Debug Utilities (0) | 2019.09.16 |
[ Vulkan 연구 ] HLSL to SPIR-V : 7. Interface Block & Layout Qualifiers (2) | 2019.09.14 |
[ Vulkan 연구 ] HLSL to SPIR-V : 6. spirv-reflect 소개 (0) | 2019.08.25 |
[ Vulkan 연구 ] HLSL to SPIR-V : 5. DXC 기본 옵션 분석 (0) | 2019.08.12 |
[ Vulkan 연구 ] HLSL to SPIR-V : 3. SPIR-V CodeGen 빌드 (0) | 2019.08.11 |
[ Vulkan 연구 ] HLSL to SPIR-V : 2. DXC 빌드 (0) | 2019.08.10 |
[ Vulkan 연구 ] HLSL to SPIR-V : 1. Tool-Chain (2) | 2019.08.10 |
[ Vulkan 연구 ] RenderPass 개념 (2) | 2019.06.23 |
[ Vulkan 연구 ] 번역 : AMD GRAPHICS CORES NEXT (GCN) ARCHITECTURE (2) | 2019.05.11 |