Mjolnir is a minimalistic, bindless, GPU-driven game engine in Odin + Vulkan 1.3.

To use Mjolnir, run make shader to compile shaders to
SPIR-V and copy the mjolnir/ directory into your
project.
# Build and run in release mode
make run
# Build and run in debug + Vulkan validation
make debug
# Build only
make build # release
make build-debug # debug
# Build all shaders
make shader
# Run all tests
odin test . --all-packages
# Run a single test
odin test . --all-packages -define:ODIN_TEST_NAMES=module_name.test_name| Flag | Default | Effect |
|---|---|---|
FRAMES_IN_FLIGHT |
2 | GPU frame buffering. |
RENDER_FPS |
60 | Target render cadence. |
UPDATE_FPS |
RENDER_FPS |
Target update cadence. |
USE_PARALLEL_UPDATE |
false | Run update on a dedicated thread. |
FRAME_LIMIT |
0 | Cap total frames (0 = unlimited). |
REQUIRE_GEOMETRY_SHADER |
false | Required for cubemap point-light shadows. |
-define:FRAME_LIMIT=10,
inspect logs.make capture.-define:RENDER_FPS=4 to read
render logs frame by frame.engine.debug_ui_enabled = true for the microui
overlay.architecture — layer
design, frame phases, staging contract, bindless + GPU-driven modelexamples — runnable
examples with notes| Layer | Module | Doc |
|---|---|---|
| 1 | containers |
containers |
| 1 | geometry |
geometry |
| 1 | gpu |
gpu |
| 1 | animation |
animation |
| 2 | world |
world |
| 2 | render |
render |
| 2 | physics |
physics |
| 2 | navigation |
navigation |
| 2 | ui |
ui |
| 3 | mjolnir |
engine |