Page 1 of 1

C++ Vulkan Implementation

Posted: 02 Oct 2020, 11:45
by skumbananaaa
I created a Vulkan implementation of NoesisGUI in a game engine me and my friends are developing which uses Vulkan as the underlying graphics API. I thought I could share it here if anyone wants to take a look. I haven't had time to test it very much. Tiled rendering hasn't been tested at all. All the GUI code can be found in "GUI/Core".

The GUIRenderer in the engine is part of our RenderGraph rendering system, basically it receives resource updates from the RenderGraph, currently just the back buffer and a depth/stencil texture, all the other resources are created by the GUI system itself.

Since NoesisGUI uses alot of dynamic state I had to create different caches, the most complicated one is GUIPipelineStateCache, it manages and creates new Pipelines when requested depending on different requested dynamic state features.
Examples of these are:
  • Vertex Type
  • Stencil Mode
  • Blend Mode
Other examples of caches and managers are the buffer caches, descriptor set caches and the GUIShaderManager.

The repo:
https://github.com/IbexOmega/CrazyCanvas

Re: C++ Vulkan Implementation

Posted: 06 Oct 2020, 12:42
by jsantos
Great job! We are working in an official Vulkan renderer. Once we released it, please have a look at it to improve the offscreen part of your renderer.

EDIT: I added a link to this project here

Re: C++ Vulkan Implementation

Posted: 06 Oct 2020, 12:53
by skumbananaaa
Yeah, thanks, I'll be sure to do that!