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和avk::orbit_camera (源自avk::transform and 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 ),然后生成新的!