Shader Tools Qt XML-ph-0000@deepl.internal 개요
Qt Shader Tools 모듈은 Khronos SPIR-V 웹사이트에 설명된 바와 같이 SPIR-V 오픈 소스 생태계를 기반으로 합니다. SPIR-V로 컴파일하는 데는 glslang이 사용되며, 변환 및 리플렉션은 SPIRV-Cross를 통해 수행됩니다.
Qt 애플리케이션 및 라이브러리에서 셰이더 코드를 한 번만 작성할 수 있도록, 모든 셰이더는 단일 언어로 작성되어야 하며, 이후 SPIR-V로 컴파일됩니다. 현재 이 셰이딩 언어는 Vulkan과 호환되는 GLSL입니다. 이는 OpenGL 스타일의 GLSL을 사용하는 Qt 5.x와 다릅니다. 차이점에 대한 개요는 GL_KHR_vulkan_glslspecification을 참조하십시오.
GLSL, HLSL, Metal Shading Language와 같은 다른 셰이딩 언어의 소스 코드는 SPIR-V 바이트코드를 변환하고, 반사 정보(입력, 출력, 셰이더 리소스)를 함께 처리하여 생성됩니다. 특히 GLSL의 경우, GLSL ES 100, GLSL ES 300, GLSL 120 및 150과 같이 서로 다른 GLSL 버전에 적합한 소스 코드인 여러 변형을 생성하는 과정도 포함됩니다. 이 소스 코드는 직렬화 가능한 ` QShader ` 컨테이너 객체에 포장되며, 일반적으로 디스크에 ` .qsb ` 파일로 저장됩니다. Qt 렌더링 하드웨어 인터페이스(Qt Rendering Hardware Interface)는 QShader 인스턴스를 직접 사용하며, 런타임에 사용되는 그래픽 API에 가장 적합한 셰이더 소스 또는 바이트코드를 선택합니다. QShader 객체는 일반적으로 애플리케이션이나 Qt 자체에 포함된 Qt 리소스 시스템(Qt Resource System)의 .qsb 파일에서 역직렬화됩니다.
일부 플랫폼에서는 셰이더 소스 코드를 SPIR-V와 유사한 중간 형식으로 컴파일하는 옵션을 제공합니다. 여기에는 플랫폼별 도구를 실행하는 과정이 포함됩니다. Direct 3D의 경우, qsb 도구는 HLSL 소스 코드가 생성된 후 Windows SDK의 fxc 도구를 호출하는 옵션을 제공합니다. 그러면 이 도구는 HLSL 소스 코드를 fxc 에서 생성된 DXBC 바이너리로 대체합니다. 이는 애플리케이션이 더 이상 첫 번째 컴파일 단계(HLSL 소스에서 DXBC로)를 직접 수행할 필요가 없게 되므로, 애플리케이션의 런타임 성능에 긍정적인 영향을 미칠 수 있습니다. macOS 및 iOS의 경우, XCode SDK에서 유사한 도구를 제공합니다. 이 접근 방식의 단점은 해당 도구들을 각 플랫폼에서만 실행할 수 있다는 점입니다. 따라서 애플리케이션 빌드 시점에 셰이더 컨디셔닝을 수행할 때는 대상 플랫폼에 대한 정보와 호출 가능한 플랫폼별 도구에 대한 지식이 암묵적으로 필요하므로, qsb의 CMake 통합 기능과 함께 사용하는 것이 가장 적합합니다.
다음 다이어그램은 ` qsb ` 도구를 호출할 때 발생하는 단계를 설명합니다:

Qt 셰이더 컨디셔닝 시스템의 주요 구성 요소는 다음과 같습니다:
qsb명령줄 도구qsb도구를 위한 CMake 통합- QShader ( QtGui 모듈의 일부)
- QShaderBaker (이 모듈의 일부이며,
qsb도구에 상응하는 라이브러리)
일반적인 사용 예 Qt Quick
애플리케이션 개발자는 일반적으로 다음 중 하나를 포함하는 Qt Quick 장면에서 사용자 정의 셰이더 코드를 다룹니다:
- ShaderEffect 항목
- QQuickItem QSGMaterial 을 서브클래싱하여 생성된 사용자 정의 머티리얼과 함께 장면 그래프 노드를 사용하는 서브클래스.
예를 들어, 다음 QML 코드 조각을 살펴보겠습니다:
ShaderEffect {
width: 100; height: 100
fragmentShader: "myeffect.frag.qsb"
}여기서 ` fragmentShader ` URL은 ` .qml ` 파일의 위치에 상대적인 ` .qsb ` 파일을 가리킵니다. 애플리케이션은 ` .qml ` 파일과 함께 ` myeffect.frag.qsb ` 파일을 배포해야 합니다. Vulkan 스타일의 GLSL 소스(이 소스 자체는 애플리케이션과 함께 배포될 필요는 없음)에서 해당 파일을 생성하려면, 애플리케이션은 ` qsb ` 도구를 직접 또는 CMake를 통해 사용해야 합니다.
다음과 같은 일반적인 사용법 Qt Quick 3D
Qt Quick 3D Shader Tools 모듈을 직접 사용하여 런타임에 셰이더 컨디셔닝을 수행합니다. 또한, 셰이더 컴파일러 및 기타 도구에 대한 런타임 종속성이 바람직하지 않은 경우를 대비하여, 빌드 시점에 머티리얼용 셰이더를 미리 생성하는 솔루션도 제공합니다. 두 경우 모두, 도구는 의 자체 프레임워크 및 도구에 의해 캡슐화되어 있으므로 개발자가 직접 이 도구를 다룰 필요는 없습니다. qsb Qt Quick 3D
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.