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.

Two cubes rotated by the ECS, each with its own MVP matrix pushed as a push constant.

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

  1. Depth attachment
  2. Staging buffers
  3. Descriptor sets
  4. Skybox
  5. Compute pipeline that ray-marches light paths through curved spacetime to render the wormhole's gravitational lensing

More work

Top-down view of a sandy arena with green blocks, red collectibles and a timer reading 182 seconds

CompleteCross-platform renderer

Project T

A top-down game with its own rendering pipeline for PlayStation 5 and Windows.

  • C++
  • OpenGL
  • GLSL
  • AGC
A reflective blue tiled sphere lit with physically based shading above rough brown terrain

CompleteRendering

PBR in OpenGL

A physically based, deferred rendering pipeline written from scratch.

  • C++
  • OpenGL
  • GLSL
  • PBR
A low-poly forest of dark green trees on bright grass with grey mountains and a building under a night sky

CompleteRendering

Stylized Scene in OpenGL

A real-time stylized scene with GPU instancing, culling and cel shading.

  • C++
  • OpenGL
  • GLSL
  • GPU instancing