Information
- Publication Type: Student Project
- Workgroup(s)/Project(s):
- Date: 2023
- Date (Start): July 2020
- Date (End): May 2023
- Matrikelnummer: 09826767
- First Supervisor:
- Keywords: Vulkan, C++, Real-Time Rendering, C++20, Modules, C++ Modules, Vulkan, Auto-Vk, Auto-Vk-Toolkit, Shader Hot Reloading
Abstract
Updater:
For the Auto-Vk-Toolkit framework it was deemed to be desirable to add the quality of life features of automatic resource updates after changes. For example, changing resources such as resizing swapchain images (due to changing the window size, for example), or changing the shader files that are graphics pipelines are comprised of shall trigger recreation of all the dependent resources. As a consequence, all the graphics pipelines must be updated too.
Several adaptions were needed to enable these automatic updates. Window and swapchain handling code had to be updated, and swap chain creation code had to be adapted. Finally, a component avk::updater was implemented which enables triggering updating dependent resources after various events: swapchain/window resized, swapchain changed, swapchain's images' format changed, additional swapchain attachments changed, files changed. Based on these events, automatic swap chain recreation and shader hot reloading is enabled.
Evaluating support for C++ Modules:
Modules are a relatively new C++ feature, which was introduced with C++20. They promise to be able to provide better code encapsulation and lower build times. Their suitability for Auto-Vk-Toolkit was evaluated and the experiences were documented.
Additional Files and Images
Weblinks
- Auto-Vk on GitHub
- Auto-Vk-Toolkit on GitHub
- Automatic Resource-Updates
Documentation of the updater component, which enables swap chain recreation and shader hot reloading.
BibTeX
@studentproject{jafari-2023-avk, title = "Improvements and Additional Features for a Modern C++/Vulkan Rendering Framework", author = "Hamed Jafari", year = "2023", abstract = "<p><strong>Updater:</strong><br/> For the Auto-Vk-Toolkit framework it was deemed to be desirable to add the quality of life features of automatic resource updates after changes. For example, changing resources such as resizing swapchain images (due to changing the window size, for example), or changing the shader files that are graphics pipelines are comprised of shall trigger recreation of all the dependent resources. As a consequence, all the graphics pipelines must be updated too. Several adaptions were needed to enable these automatic updates. Window and swapchain handling code had to be updated, and swap chain creation code had to be adapted. Finally, a component avk::updater was implemented which enables triggering updating dependent resources after various events: swapchain/window resized, swapchain changed, swapchain's images' format changed, additional swapchain attachments changed, files changed. Based on these events, automatic swap chain recreation and shader hot reloading is enabled. <p><strong>Evaluating support for C++ Modules:</strong><br/> Modules are a relatively new C++ feature, which was introduced with C++20. They promise to be able to provide better code encapsulation and lower build times. Their suitability for Auto-Vk-Toolkit was evaluated and the experiences were documented.", month = may, keywords = "Vulkan, C++, Real-Time Rendering, C++20, Modules, C++ Modules, Vulkan, Auto-Vk, Auto-Vk-Toolkit, Shader Hot Reloading", URL = "https://www.cg.tuwien.ac.at/research/publications/2023/jafari-2023-avk/", }