Game engine
Project V — Vulkan Engine
A C++20 game engine with a hand-written Vulkan 1.3 renderer.
Work in progress, updated after every PR.
Overview
A C++20 game engine with a hand-written Vulkan 1.3 renderer, built from scratch as the foundation for rendering an Interstellar-style wormhole and skybox.
Architecture
Three modules. There's an abstract core interface (IRenderer, IWindow), an engine layer (EnTT ECS, mesh and shader managers, Assimp import), and a Vulkan backend that implements the core interface. Every Vulkan object is a move-only RAII wrapper paired with a fluent, validating builder.
Working now
- FBX meshes loaded from disk and uploaded to the GPU
- Pipeline cache keyed on shader pairs
- ECS rotate system
- Perspective camera (left-handed, Z-up)
- Per-object MVP matrices sent as push constants
- Frames in flight with fence and semaphore synchronisation
Known issues
- No depth buffer yet, so back faces can draw over front faces (visible in the current clip).
- Vertex and index buffers are host-visible and not yet staged into device-local memory.
- Swapchain resize isn't handled.
Roadmap
- Depth attachment
- Staging buffers
- Descriptor sets
- Skybox
- Compute pipeline that ray-marches light paths through curved spacetime to render the wormhole's gravitational lensing
From the source