翻譯|使用教程|編輯:龔雪|2022-04-07 11:04:37.653|閱讀 258 次
概述:本文主要為大家介紹什么是Qt著色器工具,歡迎大家下載相關組件體驗!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Qt技術交流群:166830288 歡迎一起進群討論
Qt Shader Tools模塊建立在 SPIR-V 開源生態系統之上,為了編譯成 SPIR-V,使用 glslang,而翻譯和反射是通過 SPIRV-Cross 完成的。
為了允許在 Qt 應用程序和庫中編寫一次著色器代碼,所有著色器都應該用一種語言編寫,然后編譯成 SPIR-V。 這種著色語言目前是與 Vulkan 兼容的 GLSL,這不同于OpenGL風格的GLSL Qt 5.x所期望的。
然后通過翻譯 SPIR-V 字節碼以及反射信息(輸入、輸出、著色器資源)生成其他著色語言的源代碼,例如 GLSL、HLSL 和Metal Shading語言。特別是對于 GLSL,這還涉及生成多個變體,這意味著適用于不同 GLSL 版本的源代碼,例如 GLSL ES 100、GLSL ES 300、GLSL 120、150 等。然后將其全部打包到可序列化的 QShader 容器對象中, 通常以 .qsb 擴展名的文件形式存儲在磁盤中。Qt 渲染硬件接口直接使用 QShader 實例,選擇最適合運行時使用的圖形 API 的著色器源或字節碼,QShader 對象通常從應用程序附帶的 .qsb 文件或 Qt 資源系統中的 Qt 本身反序列化。
一些平臺提供將著色器源代碼編譯為類似于 SPIR-V 的中間格式選項,這涉及運行特定于平臺的工具。對于 Direct 3D,qsb 工具提供了在生成 HLSL 源代碼后從 Windows SDK 調用 fxc 工具的選項,然后它用 fxc 生成的 DXBC 二進制文件替換 HLSL 源代碼。這可以對應用程序的運行時性能產生積極影響,因為它們不再需要自己進行第一階段的編譯(HLSL 源到 DXBC)。對于 macOS 和 iOS,XCode SDK 提供了類似的工具,這種方法的缺點是只能在它們各自的平臺上運行這些工具。因此這最適合與 qsb 的 CMake 集成結合使用,因為在應用程序構建時進行著色器調節隱含地帶有目標平臺所需的知識以及可以調用哪些特定于平臺的工具。
下圖描述了調用 qsb 工具期間發生的步驟:
Qt 著色器調節系統的主要組件有:
注意:從 Qt 6.2 開始,C++ API 被認為是私有的,不建議從應用程序直接使用它們,而是直接或間接從 CMake 項目中使用 qsb 命令行工具。
應用程序開發人員通常需要在 Qt Quick 場景中使用自定義著色器代碼,這些場景具有:
例如,考慮以下 QML 片段:
ShaderEffect {
width: 100; height: 100
fragmentShader: "myeffect.frag.qsb"
}
在這里, URL 指的是相對于 .qml 文件位置的 .qsb 文件,該應用程序預計將在 .qml 文件旁邊提供 myeffect.frag.qsb。要從 Vulkan 樣式的 GLSL 源(其本身不需要隨應用程序一起提供)生成該文件,應用程序必須直接或通過 CMake 使用 qsb 工具。
Qt Quick 3D 直接使用 Shader Tools 模塊在運行時執行著色器調節,此外還提供了在構建時為材質預生成著色器的解決方案,以防對著色器編譯器和其他工具的運行時依賴性不理想。 在任何一種情況下,開發人員都不需要直接使用 qsb 工具,因為它是由 Qt Quick 3D 自己的框架和工具封裝的。
Qt技術交流群:166830288 歡迎一起進群討論
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網