VK_Endevaour is an educational project focused on learning modern Vulkan (1.4+) by building a small, cleanly structured rendering engine and a sandbox application on top of it.
The primary goals are:
- Learning modern Vulkan usage patterns
- Experimenting with engine architecture
- Maintaining a clean, programming-driven API design
- Vulkan 1.4 with modern features
- No legacy render passes (Dynamic Rendering)
- Explicit synchronization (Synchronization2)
- Usage of VULKAN_HPP_NO_CONSTRUCTORS and VULKAN_HPP_NO_EXCEPTIONS
- Explicit create/destroy calls with modern return value types
- C++20
- Assert-based error handling
VK_Endevaour/
├── Applications/
│ └── Sandbox/ # Test application
├── CMake/ # Global CMake configuration
├── Docs/ # Documentation (architecture, usage, roadmap)
├── Engine/
│ ├── Core/ # Fundamental engine utilities (types, memory, helpers)
│ ├── Debug/ # Logging and diagnostics
│ ├── Graphics/
│ │ ├── Import/ # CPU-side asset import (e.g., OBJ)
│ │ ├── Resources/ # Graphics resources (e.g., Mesh)
│ │ ├── UI/ # ImGui integration and UI tooling
│ │ └── Vulkan/ # Vulkan backend
│ ├── Math/ # Mathematical foundations
│ ├── Platform/ # Platform abstraction (window, input)
│ └── Vendor/ # Third-party libraries
├── Scripts/ # Helper scripts (format, build, analyze)
└── Tests/ # Tests
- C++20 compiler
- Tested with Clang 20.x
- CMake 3.25 or newer
- Vulkan 1.4 compatible graphics card and driver
- Vulkan SDK installation (platform dependent)
- Installation of the SDK, validation layers, glslc, etc. is intentionally not automated, as this strongly depends on the platform and distribution.
For one Fedora-based system, the following packages were sufficient:
sudo dnf install vulkan-tools
sudo dnf install vulkan-loader-devel
sudo dnf install vulkan-validation-layers-devel- Linux (Wayland)
- Windows
- Regularly tested on both platforms
All third-party libraries are fully vendored, either header-only or built as static libraries via sub-CMake.
- No system-wide installation of engine dependencies is required.
A helper script exists to verify basic build requirements:
python .\Scripts\CheckDependencies.pyThis script provides a best-effort assessment of whether the system is able to build the project.
Manual CMake usage or via the provided build script:
python .\Scripts\BuildEngine.py -dr # Debug + ReleaseApplications should be launched from the project root directory:
...\VK_Endevaour> .\Build\Debug\Applications\Sandbox\Sandbox.exeThis ensures that all relative resource paths resolve correctly (e.g. shaders, models, textures, configuration files).
Thanks to all the creators and contributors of these projects!
| Library | Version | Updated in Engine | Functionality | Type |
|---|---|---|---|---|
| vma | 3.4.0 | 08.06.2026 | Memory allocation | Source include |
| imgui | 1.92.8 | 08.06.2026 | GUI | Source include |
| doctest | 2.5.0 | 26.05.2026 | Testing | Source include |
| glm | 1.0.3 | 01.01.2026 | Mathematics | Source include |
| fmt | 12.1.0 | 29.12.2025 | Formatting and logging | Static library |
| glfw | 3.4.0 | 11.12.2025 | Window and input | Static library |
| tinyobjloader | 2.0.0 | 24.10.2024 | OBJ file loading | Source include |
| stb_image | 2.30 | 21.10.2024 | Image loading | Source include |
VK_Endevaour is licensed under the MIT LICENSE.