Freyja is being built as independent implementations of the same engine, developed in parallel so each one keeps the others honest:
| Language | API | Role | |
|---|---|---|---|
| 🗡️ | Odin | Vulkan | Primary engine — explicit, low-level, no hidden driver magic |
| 🪶 | Odin | OpenGL | Odin-side reference backend — same language as the Vulkan engine, simpler API |
| 🛡️ | C++ | OpenGL | Reference / contribution backend — fast to prototype, easy to onboard into |
The Vulkan side is where the real engine work happens. Both OpenGL implementations exist as simpler counterparts for testing ideas and sanity-checking rendering results before the same approach gets ported over to Vulkan — the Odin one keeps the language consistent with the primary engine, while the C++ one is a friendlier entry point for anyone contributing who doesn't want to wade through Vulkan boilerplate on day one.
Each backend lives in its own repository:
🗡️ freyja
Odin + Vulkan — primary engine
git clone https://github.com/Amaterus1125/Freyja.gitOdin + OpenGL — reference backend
git clone https://github.com/Amaterus1125/Freyja-odin-opengl.gitC++ + OpenGL — contribution backend API + The real Backend mechanics
git clone https://github.com/Shobhit-bit/Freyja-cpp.gitEach repo also keeps its own branches for in-progress work and history (
main, feature branches, etc.) — splitting into separate repos changes where each backend lives, not how branching works within it.
|
Requires: odin run . |
Requires:
odin run . |
Requires:
cmake -B build
cmake --build build |
- Core windowing + swapchain/context setup (all backends)
- Basic triangle rendering (all backends)
- Shared math / scene layer
- Model loading
- Lighting
- Feature-parity checkpoint across backends
Vulkan is explicit and verbose by design, excellent for learning exactly what the GPU is doing, but slow to iterate with. OpenGL trades that control for speed. Building both side by side keeps the Vulkan engine honest against a known-simple reference, while keeping iteration fast enough to actually experiment with ideas before committing them to the "real" backend.
License: MIT • Status: actively in development, expect breaking changes