Modern C++ and Vulkan Rendering Framework

Type: 
PR
Persons: 
good
Workgroup: 

Description

A modern, convenient, and powerful rendering framework is in the making that aims to make Vulkan development more convenient, but still maintains all the options that Vulkan offers. I.e. it shall not cut short any features or possibilities that Vulkan provides but instead, maintain the full power of Vulkan while making development against the API more convenient and faster.

The framework we are talking about comes in two parts: A convenience layer atop Vulkan-Hpp by the name Auto-Vk, and a ready-to-use framework set-up for Windows 10 and Visual Studio 2019 by the name Gears-Vk. Gears-Vk uses Auto-Vk as an integral part and adds additional platform-specific functionality to it.

Although the framework is rather new (~alpha state), it is already battle-tested and has been used for the assignments of Algorithms for Real-Time Rendering 2020 and for some internal research projects. 

Both, 6 ECTS and 6+6 ECTS projects are possible.

Contact: Johannes Unterguggenberger

Tasks

Help to improve the framework by implementing issues from both repositories

In addition, there is the option to shape the two code bases according to your vision and to suggest your own improvements!

There are some further possibilities that go beyond the scope of pure C++ and Vulkan framework development:

  • Create a Linux port for Gears-Vk by either adding it to Gears-Vk or creating an equivalent as a separate project. 
  • Create an Android port for Gears-Vk by either adding it to Gears-Vk or creating an equivalent as a separate project. 
  • There is even an OpenGL-specific task in Gears-Vk that would probably be laborious enough for an entire PR. That could be especially enticing if you're interested in the differences between the two graphics APIs OpenGL and Vulkan.
  • Gears-Vk contains a powerful post build step ("post build helper tool") which is written in C#. There are even some C# issues that you can work on.

Requirements

What you must bring:

  • At least solid C++ skills. You can (and should!) improve them throughout this PR
  • Very good knowledge of at least one graphics API (e.g. OpenGL)
  • Basic Vulkan knowledge is advantageous, but you can also learn it throughout this PR
  • Implement a small (or partial) issue of one of the repositories in order to qualify for this PR (but contact Johannes Unterguggenberger before you start)

The following mindset will be required:

  • Quality > quantity
  • Willingness to write modern C++ (i.e. C++17 or even C++20)
  • Follow the "Don't pay for what you don't use" principle when implementing features
  • Aim for highest possible programmer-convenience while not restricting usage options w.r.t. the Vulkan API

What you will get:

  • You'll learn a lot about modern C++ programming
  • You can learn about some parts of the Vulkan API in detail
  • You contribute to an open source project
  • You will have made yourself familiar with a C++/Vulkan framework that you can use for future projects (university/private/commercial) which will boost your productivity and allows you to focus on graphics delopment instead of battling with the API.

Environment

  • Vulkan 1.2 API
  • Modern C++ (i.e. C++17 and above)
  • Gears-Vk requires Windows and Visual Studio
  • Linux and Android options are possible as described under section "Tasks"
  • OpenGL in one specific case (see section "Tasks")
  • C# if you want to work on the post build helper tool (see section "Tasks")

Contact

For more information please contact Johannes Unterguggenberger (unterguggenberger@cg.tuwien.ac.at).