Auto-VK-ToolKit是現代C ++實現的Vulkan Graphics API的框架。它的目的是在程序員企業和效率之間達到最佳位置,同時仍支持完整的Vulkan功能。為了實現這一目標,該框架使用了自動VK ,這是Vulkan-HPP頂部的便利性和生產力層。
自動VK-toolkit已成功用於快速原型製作,研究(例如,保守的網狀網絡界限,用於穩健的皮膚網格,現代GPU上的參數對象的快速渲染)和教學(例如,實時渲染的算法,算法)。

該圖像展示了使用自動VK-Toolkit (從左到右)開發的一些工作:在教授現代低級GPU概念的高級圖形課程中使用;從腦掃描中可視化19,600個球形諧波字形;將網眼分為圓環,並在任務和網格著色器中使用細粒度的視圖和背面剔除;射線使用硬件加速的實時射線跟踪設備擴展來追踪陰影和反射;實時渲染358K參數定義的纖維曲線。
它的一些高光功能(除了自動VK的出色功能)還包括:
update()和render()回調在不同或固定更新時間的渲染循環框架。avk::root實現,以及交換鏈的處理和自動資源壽命管理。.fscene文件:開放研究內容檔案。avk:buffer或avk::image Instances,以及自定義類型;基於穀物。Auto-VK-ToolKit已準備好與Visual Studio或Cmake一起使用。如果您的系統符合系統要求,則設置了所有設置,以建立開箱即用的運行。例如,對於Visual Studio,打開visual_studio/auto_vk_toolkit.sln ,將示例項目之一設置為啟動項目,構建和運行!
提示:開發分支機構上的版本可能是更新的,並包含其他功能和修復程序。請考慮使用該版本,尤其是在遇到問題的情況下。
注意:在第一次運行時,正在構建郵政輔助工具。觀看Visual Studio的“輸出”選項卡以獲取狀態消息和可能的說明。
Windows上的Visual Studio 2022提供了預先配置的項目設置。
visual_studio/README.md 。)git submodule update --init以拉動自動VK框架,該框架在auto_vk下添加為子模塊Vulkan Memory Allocator header.選項,以便安裝Vulkan內存分配器(VMA)庫。Vulkan Memory Allocator header.可以通過Vulkan Installer或其維護工具(例如,Windows上的maintenancetool.exe )安裝VMA。選項。Desktop development with C++ !Tools -> Options -> GLSL language integration 。對於Vulkan著色器開發,要么將Live compiling設置為False (語法突出顯示),要么將External compiler executable file設置為glslangValidator.exe的路徑!visual_studio/auto_vk_toolkit.sln ,並構建解決方案Output -TAB,一些彈出消息和系統托盤中的圖標中識別出郵寄輔助工具的消息。請查看部分資源管理和郵政為助手以獲取更多信息。git submodule add https://github.com/cg-tuwien/Auto-Vk-Toolkit.git auto_vk_toolkit將auto-vk-toolkit添加為Directory auto_vk_toolkit中的subpodule。git submodule update --init --recursive ,以便提取Auto-VK-ToolKit和Auto-VK 。請參閱文檔/cmake.md!
| 你好世界 | 多個隊列 | 計算圖像處理 | 逆裝加載程序 |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
此存儲庫中包括幾個示例應用程序:
.fscene文件並渲染它們;還有如何使用序列化器| 皮膚的網格 | 雷查詢和射線追踪 | RTX自定義交叉點 | 紋理cubemap |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
對於Visual Studio Projects,在visual_studio/tools/executables/下有一個便利工具,可以通過複製現有一個來幫助快速設置新項目(例如,示例應用程序之一): create_new_project.exe
像以下內容一樣使用它來創建現有項目的副本:
create_new_project.exe ,然後選擇示例應用程序之一,或輸入要手動複製項目的路徑。auto_vk_toolkit.vxcproj添加引用,並確保新創建的項目複製參考。main()函數的.cpp文件。#include <auto_vk_toolkit.hpp>使用auto-vk-toolkit 。一個好的策略是將自動VK-ToolKit作為GIT子模塊添加到您的存儲庫中,並使用create_new_project.exe和上面的步驟在子模塊外部的目錄中創建一個正確配置的項目。確保通過從Auto-VK-Toolkit的master分支中拉出以獲取最新更新來經常更新子模塊。
配置了自動VK-Toolkit的Visual Studio項目,因此Visual Studio本身可以優雅地用於資源管理。這意味著,所需的資產(3D模型,圖像,Orca場景文件)和著色器文件只能在“解決方案資源管理器”視圖中添加到Visual Studio的過濾器中,並且智能郵政構建助手工具可確保將這些資源部署到應用程序的目標目錄中。
簡而言/ tl; dr :
assets過濾器中,然後shaders過濾器中。然後構建應用程序,等待郵政輔助人員將這些資源部署到目標目錄,然後運行您的應用程序!如上所述shaders這看起來就像以下是如下assets : 
visual_studio/README.md中給出了更詳細的說明和進一步的說明。
您會注意到通過其托盤圖標構建助手活動:
。部署完成後,該工具將保持活躍,原因有兩個:
有關帖子構建助手的更多信息,請參閱“郵政為輔助助手”部分,以及有關Shinder Hot ReloDoding的更多信息,請參閱下面的“自動資源更高”部分。
Auto-VK是Vulkan-HPP頂部的平台不足的便利性和生產力層。
Auto-VK-ToolKit建立了丟失的操作系統鏈接,例如窗口處理,並添加了進一步的功能:
VK_KHR_ray_tracing_pipeline ,它將選擇一個適當的物理設備並啟用所需的標誌和擴展))avk::invokee接口(例如initialize() , update() ,under(), render() ,其中前一個被稱為一次,並且後兩個被調用,每個幀僅調用後兩個)avk::transformavk::quake_camera Quake_camera和Avk avk::orbit_camera (源自avk::transform Transform and Avk avk::invokee )avk::material和a vk::material_gpu_data )avk::lightsource和avk::lightsource_gpu_data )[->VS]按鈕以導航到在Visual Studio中包含錯誤的行。有一些文檔頁麵包含更多信息:
avk::updater類自動更新,啟用shwapchain娛樂和著色器熱加載問:可以在Linux上使用自動VK-ToolKit嗎?
答:是的。請在Docs/cmake.md上查看CMAKE文檔!
問:可以在沒有郵政輔助器的情況下使用自動VK-Toolkit ?
答:是的。帖子構建助手是一個方便工具,可處理資源部署,資產依賴性以及文件更新(根據項目結構,可用於著色器熱加載)。如果您不使用它,則必須管理資源的部署,並將其編譯到Spir-V中。
問:我在Visual Studio中對資產管理有麻煩。有建議嗎?
答:查看已知問題並進行故障排除WRT資產處理,該處理提供了以下情況的指南:
問:部署的資源比我在Visual Studio過濾器中添加的資源更多。這是怎麼回事?
答:一些資產在內部引用其他資產。例如,3D模型通常參考圖像或材料文件(如果是.obj型號)。這些“依賴資產”也由郵政輔助人員部署到目標目錄。有關更多詳細信息,請參閱依賴資產的部署。
問:調試,發布和發布構建配置之間有什麼區別?
答:在編譯設置方面,發布和發布配置是相同的。它們與庫的發布構建有關。調試配置具有為Visual Studio項目配置的經典調試設置以及針對庫的調試構建的鏈接。但是,發布構建與非發布構建之間存在差異。有關更多詳細信息,請根據構建配置查看符號鏈接/副本。
問:我對郵政輔助人員有麻煩。該怎麼辦?
答:查看郵政構建助手,該輔助人員為以下情況提供指南:
can't fopen或!RUNTIME ERROR! Couldn't load image from '...'問:應用程序需要很長時間才能加載3D型號和圖像之類的資產。可以加速嗎?
答:如果您指的是調試構建,則可以配置Post Build Helper ,以便它可以部署某些外部依賴的釋放DLL,即使是用於調試構建。他們應該加速資產加載很多。要啟用發行版DLL的部署,請打開Post Build Build Helper的設置,並啟用“始終部署釋放dlls”選項。
問:在穀物中獲取cereal::Exception cereal::loadBinary或Unhandled exception at 0x00007FFE82204FD9 in ...exe: Microsoft C++ exception: cereal::Exception at memory location ...
答:您的序列化緩存文件(例如,對於sponza_and_terrain.fscene ,可以是sponza_and_terrain.fscene.cache )已損壞(也許是因為由於該應用程序中的錯誤未完全編寫,或者因為執行的執行被刪除而被刪除)。刪除緩存文件(例如sponza_and_terrain.fscene.cache ),然後生成新的!