Qt Shader Tools Visión general
El módulo Qt Shader Tools se basa en el ecosistema de código abierto SPIR-V tal y como se describe en el sitio web de Khronos SPIR-V. Para compilar en SPIR-V, se utiliza glslang, mientras que la traducción y la reflexión se realiza a través de SPIRV-Cross.
Para que el código de sombreado se escriba una sola vez en las aplicaciones y bibliotecas Qt, se espera que todos los sombreadores se escriban en un único lenguaje, que luego se compila en SPIR-V. Por el momento, este lenguaje de sombreado es GLSL compatible con Vulkan. Esto es diferente de lo que el estilo OpenGL GLSL Qt 5.x espera. Ver GL_KHR_vulkan_glspecification para una visión general de las diferencias.
El código fuente para otros lenguajes de sombreado, como GLSL, HLSL y el Metal Shading Language, se genera a partir de la traducción del bytecode de SPIR-V, junto con la información de reflexión (entradas, salidas, recursos de sombreado). En el caso concreto de GLSL, también se generan múltiples variantes, es decir, código fuente adecuado para distintas versiones de GLSL, como GLSL ES 100, GLSL ES 300 y GLSL 120 y 150. A continuación, se empaquetan en archivos serializables . A continuación, se empaqueta en objetos contenedores serializables QShader, que suelen almacenarse en disco como archivos .qsb. La interfaz de hardware de renderizado de Qt consume instancias de QShader directamente, seleccionando el código fuente del sombreador o el código de bytes que mejor se adapte a la API gráfica utilizada en tiempo de ejecución. Un objeto QShader normalmente se deserializa a partir de archivos .qsb enviados con la aplicación o con el propio Qt en el Sistema de Recursos Qt.
Algunas plataformas ofrecen la opción de compilar el código fuente de los sombreadores a un formato intermedio similar a SPIR-V. Esto implica la ejecución de herramientas específicas de la plataforma. Esto implica ejecutar herramientas específicas de la plataforma. Con Direct 3D, la herramienta qsb ofrece la opción de invocar la herramienta fxc desde el SDK de Windows una vez generado el código fuente HLSL. A continuación, sustituye el código fuente HLSL por el binario DXBC generado por fxc. Esto puede tener un efecto positivo en el rendimiento en tiempo de ejecución de las aplicaciones, puesto que ya no necesitan realizar ellas mismas la primera fase de compilación (de código fuente HLSL a DXBC). Para macOS e iOS, el SDK de XCode ofrece herramientas similares. El inconveniente de este enfoque es que la ejecución de estas herramientas sólo es posible en sus respectivas plataformas. Por lo tanto, esto es más adecuado para su uso en combinación con la integración CMake de qsb ya que hacer el acondicionamiento de shader en tiempo de compilación de la aplicación implícitamente viene con el conocimiento necesario sobre la plataforma de destino y qué herramientas específicas de la plataforma pueden ser invocadas.
El siguiente diagrama describe los pasos que ocurren durante una invocación de la herramienta qsb:

Los principales componentes del sistema de acondicionamiento de sombreadores Qt son:
- la herramienta de línea de comandos
qsb - la integración CMake para la herramienta
qsb - QShader (parte del módulo QtGui )
- QShaderBaker (parte de este módulo, el equivalente en biblioteca de la herramienta
qsb)
Uso típico con Qt Quick
Los desarrolladores de aplicaciones suelen trabajar con código shader personalizado en escenas de Qt Quick que tienen uno de los siguientes:
- ShaderEffect elementos
- QQuickItem subclases que utilizan nodos de gráficos de escena en combinación con materiales personalizados construidos mediante subclases de QSGMaterial.
Por ejemplo, considere el siguiente fragmento QML:
ShaderEffect { width: 100; height: 100 fragmentShader: "myeffect.frag.qsb" }
Aquí la URL fragmentShader hace referencia a un archivo .qsb relativo a la ubicación del archivo .qml. Se espera que la aplicación envíe myeffect.frag.qsb junto al archivo .qml. Para generar ese archivo a partir del código fuente GLSL estilo Vulkan (que en sí mismo no necesita ser enviado con la aplicación), la aplicación debe utilizar la herramienta qsb directamente o a través de CMake.
Uso típico con Qt Quick 3D
Qt Quick 3D utiliza directamente el módulo Shader Tools para realizar el acondicionamiento de los sombreadores en tiempo de ejecución. Además, proporciona soluciones para pre-generar shaders para materiales en tiempo de compilación, en caso de que una dependencia en tiempo de ejecución a compiladores de shaders y otras herramientas no se vea ideal. En cualquier caso, los desarrolladores no necesitan trabajar directamente con la herramienta qsb ya que está encapsulada por el propio framework y herramientas de 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.