A continuously evolving, cross-platform game engine built from the ground up using C++26 and powered by the Vulkan graphics API. This project is a never-ending educational exercise, covering various advanced topics such as graphics pipeline development, modern C++ patterns, low-level mathematics, and robust build systems.
⨠Project Status & Highlights
| CI Service | Build Status |
| GitHub Actions | |
Key Features
- Modern C++26: Leveraging the latest C++ standard for clean, efficient, and expressive code.
- Vulkan Renderer: Utilizing the high-performance, explicit graphics API for unparalleled control over the GPU.
- Advanced Rendering: Includes support for modern features like glTF 2.0 asset loading and an extensible rendering pipeline.
- Unified Image Layouts: Implements the VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME for streamlined texture and image management.
- Cross-Platform Ready: Designed to compile and run on Windows and Linux (with editor support currently focused on Windows).
Media & Development
- Development Blog: Follow the journey and technical deep-dives on Vampyropoda-Studio.
- Project Kanban: See what's next and the current development state on the Project Board.
- Video Showcase: Watch the engine in action on YouTube.
Screenshots
See the engine rendering advanced glTF assets:
| Basic Scene | PBR Materials Test | Rungholt |
| | |
đ ī¸ Compilation & Execution
Prerequisites
To build and run the Vyroda Engine, you need recent and specific tooling:
- C++ Compiler: A recent version of Clang (22.x) with C++26 support.
- Build System: CMake (4.x).
- Vulkan SDK: The latest official Vulkan SDK.
- Ensure the environment variables VULKAN_SDK, Vulkan_LIBRARY, and Vulkan_INCLUDE_DIR are correctly configured.
- GPU: A recent GPU with support for the VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME extension, as this is currently used without fallback.
Platform-Specific Setup
đģ Windows
- Toolchain: Use llvm-mingw from mstorsjo/llvm-mingw.
- Add the bin folder to your $PATH.
- Set the CMAKE_SYSROOT variable (or update mingw-toolchain.cmake directly).
- Editor: The engine editor relies on Tcl/Tk 9.0.
đ§ Linux
- Tcl/Tk can be installed easily via your distribution's favorite package manager.
Build Steps
- Compile Shaders (Windows & Linux): bin/shaders_compil.s
- List Presets: Check available build configurations. cmake --list-presets
- "windows-debug" - Debug
- "windows-release" - Release
- "linux-debug" - Debug
- "linux-release" - Release
- Configure: Use a preset to set up the build environment (Example: Windows Release). cmake --preset windows-release
- Compile: Build the project. cmake --build --preset windows-release
Running the Engine
| Target | Command | Notes |
| Engine | build/windows-release/VyrodaEngine.exe | Run from the root directory. |
| Editor | build/windows-release/VyrodaEngine.exe -E | Windows only for the moment. |
| IDE | Open the project with a CMake-compatible IDE (VS 2022, VS Code, etc.). | |
đ¨ Content & Configuration
Level & Asset Setup
- Assets: Download glTF samples from glTF-Sample-Assets or meshes from Morgan McGuire's Computer Graphics Archive.
- Placement: Unzip and copy/paste assets into the assets/mesh directory.
- Level Configuration: Levels are defined in config/levels.
- Default Level: To change the level loaded on startup, edit config/VyrodaEngine.json and update the defaultLevel key with the target level filename.
âšī¸ Need Help? A detailed environment configuration guide is available on the Wiki.
đšī¸ Keyboard Shortcuts (AZERTY Layout)
| Action | Key |
| Free / Lock Mouse | Left Ctrl |
| Forward | Z |
| Backward | S (Changed from Q to S for standard WASD-to-AZERTY mapping) |
| Strafe Left | Q |
| Strafe Right | D |
| Up | E |
| Down | A |
â
glTF 2.0 Feature Conformance
The engine is actively tested against the official glTF sample assets to ensure correct rendering and feature implementation.
| Feature Area | Supported | Feature Area | Supported | Feature Area | Supported |
| AlphaBlendModeTest | [x] | CompareIor | [ ] | MorphPrimitivesTest | [ ] |
| AnisotropyRotationTest | [ ] | CompareIridescence | [ ] | MorphStressTest | [ ] |
| AnisotropyStrengthTest | [ ] | CompareMetallic | [ ] | MultiUVTest | [ ] |
| ClearCoatTest | [ ] | CompareNormal | [x] | NegativeScaleTest | [ ] |
| CompareAlphaCoverage | [ ] | CompareRoughness | [ ] | NodePerformanceTest | [ ] |
| CompareAmbientOcclusion | [ ] | CompareSheen | [ ] | NormalTangentMirrorTest | [x] |
| CompareAnisotropy | [ ] | CompareSpecular | [ ] | NormalTangentTest | [x] |
| CompareBaseColor | [x] | CompareTransmission | [ ] | OrientationTest | [x] |
| CompareClearcoat | [ ] | CompareVolume | [ ] | PlaysetLightTest | [ ] |
| CompareDispersion | [ ] | DispersionTest | [ ] | PrimitiveModeNormalsTest | [ ] |
| CompareEmissiveStrength | [ ] | EmissiveStrengthTest | [ ] | SheenTestGrid | [ ] |
| EnvironmentTest | [ ] | InterpolationTest | [ ] | SpecularTest | [ ] |
| IORTestGrid | [ ] | TextureCoordinateTest | [x] | TextureEncodingTest | [ ] |
| TextureLinearInterpolationTest | [ ] | TextureSettingsTest | [x] | TextureTransformMultiTest | [ ] |
| TextureTransformTest | [ ] | TransmissionRoughnessTest | [ ] | TransmissionTest | [ ] |
| TransmissionThinwallTestGrid | [ ] | UnlitTest | [ ] |
đ Further Learning & Resources
This project stands on the shoulders of giants. Here is a list of recommended resources that have informed the engine's development and will be invaluable for contributors:
- Vulkan Official:
- Tutorials & Best Practices:
- Books: