Material Engine
Reusable Vulkan engine library — a Vulkan RAII layer, an engine layer, and a standalone ECS.
Implementation AI-generated. I designed the architecture, chose the approach, and directed the engineering decisions; the code itself was generated rather than hand-written. Noted here so the nature of the work is clear up front.

- Libraries
- 3 targets
- Standard
- C++23
The engine architecture from the voxel project, extracted into a library that other projects can consume as a git submodule. Splitting it out forced the layer boundary to become real: anything that leaked Vulkan types through the abstraction had to be fixed rather than worked around.
The layering
The diagram above is generated from the CMake targets rather than drawn by hand, so the arrows are the real link dependencies.
The part worth pointing at is glass-ecs. It links only glm — no Vulkan, no
SDL, no OpenXR. An entity system has no business knowing what a swapchain is, and
keeping that true means the ECS can be unit-tested with no GPU present, which is
exactly what the test suite does.
steel — the Vulkan layer
RAII wrappers over window and device initialization, swapchain management, a pipeline builder, buffer uploads, uniform buffer templates, FXAA post-processing, Dear ImGui integration, and OpenXR HMD support.
glass — the engine layer
A sparse-set ECS with World / Entity / View, event dispatch, a perspective
camera, a material/shader/mesh/geometry system, and a renderer that targets both
desktop and stereo XR from the same call path.
Build
CMake 3.25+ with vcpkg managing dependencies, and a ctest suite that runs in CI.