Note
|
SPIR-V에 대한 자세한 내용은 SPIRV-Guide를 참조하세요 |
SPIR-V는 그래픽 쉐이더 스테이지와 컴퓨트 커널을 위한 바이너리 중간 표현입니다. Vulkan에서는 애플리케이션에서 쉐이더를 GLSL 또는 HLSL과 같은 고수준 쉐이딩 언어를 쓸수 있지만, vkCreateShaderModule을 사용할 때는 SPIR-V 바이너리가 필요합니다. 크로노스에는 SPIR-V와 그 장점 및 표현에 대한 높은 수준의 설명에 대한 백서(white paper)가 있습니다. Vulkan DevDay 2016에서 두 가지 훌륭한 크로노스 프레젠테이션을 이곳과 이곳에서 볼 수 있습니다. (두 프레젠테이션의 동영상).
Vulkan에는 Vulkan이 SPIR-V 쉐이더와 인터페이스하는 방법을 정의하는 전체 섹션이 있습니다. SPIR-V와의 인터페이스는쉐이더를 함께 컴파일할 때 파이프라인 생성 중에 가장 유효하게 사용됩니다.
SPIR-V는 Vulkan뿐만 아니라 다른 대상도 지원하기 때문에 많은 기능을 가지고 있습니다. Vulkan에 필요한 지원 기능을 확인하려면 부록을 참조하세요. Vulkan의 일부 확장 및 기능은 일부 SPIR-V 기능의 지원 여부를 확인하기 위해 설계되었습니다.
glslang은 GLSL, HLSL, ESSL을 위한 크로노스 레페런스 프론트엔드이며 샘플 SPIR-V 생성기입니다. 독립형 glslangValidator
도구가 포함되어 있어 GLSL, HLSL, ESSL에서 SPIR-V를 생성하는 데 사용할 수 있습니다.
Google에서 호스팅하는 Vulkan 쉐이더 컴파일을 위한 도구, 라이브러리 및 테스트 모음입니다. 여기에는 glslang 와 SPIRV-Tools의 핵심 기능을 감싸는 glslc
가 포함되어 있습니다. Shaderc 에는 SPIRV-Cross 및 SPIRV-Tools의 핵심 기능을 감싸는 spvc
도 포함되어 있습니다.
Shaderc는 독립형 커맨드 라인 툴(glslc)과 링크할 라이브러리(libshaderc) 두 도구를 사용하여 빌드합니다.
Clspv는 Vulkan 컴퓨트 쉐이더로 사용할 수 있는 OpenCL C의 하위 집합을 SPIR-V로 변환하기 위한 프로토타입 컴파일러입니다.
SPIR-V를 활용할 수 있는 풍부한 도구 생태계가 있습니다. Vulkan SDK에서는 개발자를 위해 빌드되고 패키징된 모든 SPIR-V 도구 개요를 소개하고 있습니다.
크로노스 SPIRV-Tools 프로젝트는 SPIR-V 모듈과 함께 작동하기 위한 C/C++ API와 명령줄 인터페이스를 제공합니다. 자세한 내용은 SPIRV-Guide를 참조하세요.
크로노스 SPIRV-Cross 프로젝트는 SPIR-V에 대한 리플렉션을 수행하고 SPIR-V를 원하는 고수준 쉐이딩 언어로 다시 분해할 수 있는 실용적인 도구이자 라이브러리입니다. 자세한 내용은 SPIR-V Cross의 주요 개발자인 Hans Kristian이 SPIR-V Cross와 같은 도구를 만드는 데 필요한 사항에 대해 두 차례에 걸쳐 훌륭한 프레젠테이션을 진행한 바 있습니다(2018 Vulkanised (video) 와 2019 Vulkanised (video).
크로노스 SPIRV-LLVM 프로젝트는 SPIR-V를 지원하는 LLVM 프레임워크입니다. 이 프로젝트는 LLVM과 SPIR-V 간의 양방향 변환기를 포함하도록 설계되었습니다. 또한 SPIR-V를 대상으로 하는 LLVM 기반 프론트엔드 컴파일러의 기반이 되기도 합니다.