u/FunInitial1304

▲ 60 r/vulkan

After months of work, I finally built my own C++ game engine in Vulkan with a custom UI system (inspired by Minecraft)

Hey everyone,

After many months of development, I finally reached a point where I'm comfortable sharing my own game engine, Kingscraft.

The engine is written entirely in C++ and uses Vulkan for rendering. One of my goals was to build as much as possible myself rather than relying heavily on external frameworks, so it also includes a completely custom UI system.

Some of the features currently implemented:

  • Vulkan renderer
  • Fully asynchronous architecture
  • Custom UI framework
  • Runtime debug/editor mode
  • Visual UI editing and alignment tools
  • Interactive resizing and positioning of UI elements
  • Hot-reload friendly workflow
  • Minecraft-inspired design and aesthetics

My favorite feature so far is the Debug Editing Mode. By pressing F7, I can visually move and resize UI elements directly in-game, inspect their properties, and then copy those values back into the source code. It has made UI iteration dramatically faster and saved me countless hours of manually adjusting coordinates. Human beings somehow still manage to enjoy tweaking pixels for hours at a time.

The project is heavily inspired by Minecraft, but I'm also using it as a learning experience to better understand engine architecture, rendering, UI systems, and Vulkan itself.

I'm still actively developing it, so I'd love to hear any feedback, suggestions, or ideas from other developers.

Source Code: Github

u/FunInitial1304 — 9 days ago
▲ 8 r/vulkan

Struggling to integrate bloom (Sascha Willems sample) into my custom Vulkan renderer — how do I adapt the pipeline?

Hi everyone,

I’m building my own game engine with Vulkan and I’ve run into a roadblock while trying to integrate a bloom effect from Sascha Willems’ Vulkan examples.

My issue is that I can’t seem to properly replace the example renderer/pipeline with my own engine’s rendering setup.

In my engine:

  • I have a custom Vulkan renderer (swapchain, render passes, frame graph-like structure)
  • I manage my own command buffers and rendering loop
  • I already render my scene successfully
  • I want to plug in post-processing (starting with bloom)

From Sascha Willems’ bloom example:

  • The bloom setup is tightly coupled to their sample framework
  • It expects a specific render flow, frame setup, and pipeline configuration
  • I’m struggling to extract just the bloom pass and integrate it into my own pipeline

What I’ve tried:

  • Porting the bloom shaders and pipeline setup into my engine
  • Recreating the offscreen framebuffer setup
  • Mapping my render output into their blur/composite passes

But I keep hitting issues because the example assumes its own renderer structure, and I can’t cleanly swap it with mine.

What I’m looking for:

  • Best practice for integrating post-processing effects like bloom into a custom Vulkan renderer
  • How to decouple Sascha Willems samples from their framework dependencies
  • Whether there’s a clean way to isolate just the bloom pass (without adopting the whole sample renderer)
  • Any guidance on structuring render passes / image layouts for this kind of effect

If anyone has done this before or has tips on how to “extract” effects from those samples into a custom engine, I’d really appreciate it.

Source Code

Thanks!

u/FunInitial1304 — 18 days ago