Auto-VK-Toolkit -это структура для API Vulkan Graphics, реализованной в современном C ++. Он направлен на то, чтобы попасть в сладкое место между программистом и эффективностью, одновременно поддерживая полную функциональность вулкана. Для достижения этой цели в этой структуре используется Auto-VK , удобство и производительность на Vulkan-HPP.
Auto-VK-Toolkit успешно использовался для быстрого прототипирования, исследований (например, консервативные границы мешлета для надежных отбраковки сетей с кожей, быстрого рендеринга параметрических объектов на современных графических процессорах) и обучения (например, алгоритмы для рендеринга в реальном времени).

Это изображение демонстрирует некоторую работу, которая была разработана с использованием Auto-VK-Toolkit (слева направо): использование в расширенном графическом курсе для обучения современным концепциям графических процессоров низкого уровня; Визуализация 19 600 глифов сферических гармоник из сканирования мозга; разделение сетей на сетки и отдавая их с мелкозернистым видопродуктом и задним ходом в задаче и сетчатых шейдерах; Рэй прослеживал тени и отражения, используя ускоренные аппаратные ускорения устройства для трассировки лучей в реальном времени; рендеринг 358K, параметрически определенные кривые волокна в режиме реального времени.
Некоторые из его основных функций (помимо удивительных функций Auto-VK ) включают в себя:
update() и render() в различное или фиксированное время обновления.avk::root , с обработкой цепочки SWAP и автоматическим управлением сроком службы срока службы ресурсов..fsceneavk:buffer или avk::image , а также пользовательские типы; на основе зерновых. Auto-VK-Toolkit готов к Visual Studio или Cmake. Если ваша система соответствует системным требованиям, все настроено для создания запуска из коробки. Например, для Visual Studio, Open visual_studio/auto_vk_toolkit.sln , установите один из примеров проекта в качестве стартап -проекта, сборка и запуска!
Подсказка: версия в филиале разработки может быть более обновленной и содержать дополнительные функции и исправления. Пожалуйста, рассмотрите возможность использования этой версии, особенно если вы сталкиваетесь с проблемами.
Примечание. При первом заезде строится инструмент Post Build Helper . Посмотрите вкладку «Вывод» Visual Studio для сообщений о состоянии и возможных инструкций.
Предварительная настройка проекта предназначена для Visual Studio 2022 в Windows.
visual_studio/README.md .)git submodule update --init чтобы вытащить платформу Auto-VK , который добавляется в качестве подмодуля в auto_vkVulkan Memory Allocator header. Опция, чтобы установить библиотеку Allkan Memory Allocator (VMA).maintenancetool.exe в Windows), выбрав Vulkan Memory Allocator header. вариант.Desktop development with C++ в установщике!Tools -> Options -> GLSL language integration . Для разработки Vulkan Shader, либо установите Live compiling в False (только синтаксис, только), либо установите External compiler executable file , например, путь к glslangValidator.exe !visual_studio/auto_vk_toolkit.sln и создайте решениеOutput Visual Studio, несколько всплывающих сообщений и значок в системном лотке. Пожалуйста, посмотрите на Mangement Resource Resource и помощник Post Build для получения дополнительной информации.git submodule add https://github.com/cg-tuwien/Auto-Vk-Toolkit.git auto_vk_toolkit , чтобы добавить Auto-vk-toolkit в качестве подмодуля в каталоге auto_vk_toolkit .git submodule update --init --recursive чтобы вытащить оба, Auto-VK-Toolkit и Auto-VK .Пожалуйста, смотрите Docs/cmake.md!
| Привет, мир | Несколько очередей | Вычислить обработку изображений | Orca загрузчик |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Несколько примеров приложений включены в этот репозиторий:
.fscene и отображать их; Также как использовать сериализатор| Кожи с мешлетами | Ray Query и Ray Tracing | RTX пользовательский перекресток | Текстурная кубика |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Для проектов Visual Studio в visual_studio/tools/executables/ есть удобный инструмент, который может помочь быстро настроить новый проект, копировав существующий (например, одно из примеров приложений): create_new_project.exe
Используйте его, как следует, чтобы создать копию существующего проекта:
create_new_project.exe и выберите одно из примеров приложений, либо введите путь к проекту, который будет скопирован вручную.auto_vk_toolkit.vxcproj в ваше решение Visual Studio и убедитесь, что недавно созданный проект копий ссылается на него..cpp , содержащий функцию main() .#include <auto_vk_toolkit.hpp> для использования auto-vk-toolkit . Хорошей стратегией является добавление Auto-VK-Toolkit в качестве подмодуля GIT в ваш репозиторий и использовать create_new_project.exe и шаги выше, чтобы создать правильно настроенный проект в каталоге за пределами подмодуля. Обязательно обновляйте подмодуль, вытащив из master филиала Auto-VK-Toolkit, чтобы получить последние обновления.
Проекты Visual Studio Auto-VK-Toolkit настроены так, чтобы сама Visual Studio была элегантно использовать для управления ресурсами. Это означает, что необходимые активы (3D -модели, изображения, файлы сцены ORCA) и файлы шейдеров могут быть просто добавлены в фильтры Visual Studio в представлении «Проводник решения», а инструмент Smart Post Build Helper гарантирует, что эти ресурсы будут развернуты в целевом каталоге приложения.
Короче/ TL; DR :
assets , иshaders непосредственно в Visual Studio. Затем построите приложение, подождите, пока вспомогатель Post Build развернет эти ресурсы в целевой каталог и запустите ваше приложение! Это может выглядеть как следует, где assets фильтров и shaders имеют особое значение, как намекалось выше: 
Более подробное объяснение и дальнейшие инструкции приведены в visual_studio/README.md .
Вы заметите, что после его подноса вы заметите, что он будет
Полем Инструмент останется активным после того, как развертывание закончится по двум основным причинам:
Для получения дополнительной информации о помощнике Post Build , пожалуйста, обратитесь к разделу «Пост сборка Helper» и для получения дополнительной информации о Hot Reloading Shader, пожалуйста, обратитесь к разделу автоматического обновления ресурсов ниже.
Auto-VK -это платформа-агрессивный удобство и производительность на Vulkan-HPP.
Auto-VK-Toolkit устанавливает недостающую ссылку на операционную систему, такую как обработка окон, и добавляет дополнительную функциональность:
VK_KHR_ray_tracing_pipelineavk::invokee (например, initialize() , update() , render() , где первое называется только один раз, а последние два вызывают каждый кадр)avk::transformavk::quake_camera и avk::orbit_camera (получено из обоих, avk::transform и avk::invokee )avk::material и a vk::material_gpu_data )avk::lightsource и avk::lightsource_gpu_data )[->VS] для перемещения к строке, которая содержит ошибку в Visual Studio.Есть некоторые страницы документации, содержащие дополнительную информацию:
avk::updater , обеспечивая отдых Shwapchain и Hot Shader Hot Reloading В: Можно ли использовать Auto-VK-Toolkit на Linux?
A: Да. Пожалуйста, смотрите документацию Cmake на docs/cmake.md!
В: Можно ли использовать Auto-VK-Toolkit без помощника после сборки ?
A: Да. Helper Post Build - это удобный инструмент, который обрабатывает развертывание ресурсов, зависимости активов, а также обновления файлов (полезно для Hot Reloading Shader, в зависимости от структуры проекта). Если вы не используете его, вам придется управлять развертыванием ресурсов и компиляцию файлов шейдеров в Spir-V вручную.
В: У меня проблемы с управлением активами в Visual Studio. Какой -нибудь совет?
A: Ознакомьтесь с известными проблемами и устранением неполадок обработки активов WRT, которая предлагает руководящие принципы для следующих случаев:
В: Было развернуто больше ресурсов, чем я добавил в фильтры Visual Studio. Что происходит?
A: Некоторые активы ссылаются на другие активы внутри. Например, 3D -модели часто ссылаются на изображения или файлы материала (в случае моделей .obj ). Эти «зависимые активы» также развернуты в целевом каталоге вспомогательным помощником . Пожалуйста, смотрите развертывание зависимых активов для более подробной информации.
В: Каковы различия между конфигурациями отладки , выпуска и публикации сборки?
A: С точки зрения настройки компиляции, конфигурации выпуска и публикации одинаковы. Они связаны с выпущенными сборками библиотек. Конфигурация отладки имеет классические настройки отладки, настроенные для проектов Visual Studio и ссылок на сборки отладки библиотек. Однако существует разница между издательными сборками и не публичной сборкой в развертывании ресурсов. Пожалуйста, смотрите символические ссылки/копии в зависимости от конфигурации сборки для получения более подробной информации.
Q: У меня проблемы с помощником Post Build . Что делать?
A: Проверьте Helper Post Build Helper, который предлагает руководящие принципы для следующих случаев:
can't fopen или !RUNTIME ERROR! Couldn't load image from '...' или подобно В: Приложение занимает много времени для загрузки активов, таких как 3D -модели и изображения. Можно ли ускорить?
О: Если вы имеете в виду сборки отладки , вы можете настроить помощника Post Build , чтобы он развертывал выпуск DLL некоторых внешних зависимостей даже для сборки отладки . Они должны ускорить загрузку активов. Чтобы включить развертывание выпуска DLL, откройте настройки Post Build Helper и включите опцию «Всегда развернуть DLLS Release».
В: Получение cereal::Exception в cereal::loadBinary , или Unhandled exception at 0x00007FFE82204FD9 in ...exe: Microsoft C++ exception: cereal::Exception at memory location ...
A: Ваш сериализованный файл кэша (например, для sponza_and_terrain.fscene Это может быть sponza_and_terrain.fscene.cache ), стал поврежденным (возможно, потому что он не был полностью написан из -за ранее возникшей ошибки в приложении или потому, что выполнение было прервано). Удалите файл кэша (например, sponza_and_terrain.fscene.cache ) и пусть будет сгенерировать новый!