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

Additional images and videos

Additional files

report: Auto-VK-Toolkit - C++20 Modules - Report report: Auto-VK-Toolkit - C++20 Modules - Report

Weblinks

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