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/",
}