# Destrum Destrum is a C++20 Vulkan rendering/game-engine playground. It contains the core `destrum` engine library, a demo application called `lightkeeper`, and an asset-cooking toolchain powered by `TheChef`. ## Features * Vulkan rendering backend * SDL2 window/input setup * Scene, GameObject, Component, and Transform systems * Mesh and material caching * GLTF/FBX model loading * Skeletal animation support * Skybox/cubemap rendering * Asset cooking pipeline for engine and game assets * CMake-based build setup with third-party dependencies as submodules ## Repository layout ```txt . ├── cmake/ # Shader compilation CMake helpers ├── destrum/ # Core engine library │ ├── include/ # Public engine headers │ ├── src/ # Engine implementation │ ├── assets_src/ # Source engine assets │ └── third_party/# Vendored/submodule dependencies ├── lightkeeper/ # Demo/game executable using Destrum │ ├── include/ │ ├── src/ │ └── assets_src/ ├── TheChef/ # Asset cooking tool └── CMakeLists.txt ``` ## Requirements * CMake 3.31 or newer * C++20 compiler * Vulkan SDK * Git with submodule support On Windows, MSVC is supported. ## Dependencies Most dependencies are included as Git submodules: * SDL2 * volk * vk-bootstrap * Vulkan Memory Allocator * GLM * nlohmann/json * spdlog * stb * tinygltf * tinyexr * Assimp * FreeType * fmt ## Getting started Clone the repository with submodules: ```bash git clone --recurse-submodules https://git.brammie15.dev/brammie15/Destrum.git cd Destrum ``` Configure the project: ```bash cmake -S . -B build ``` Build everything: ```bash cmake --build build ``` Run the demo executable: ```bash ./build/lightkeeper/lightkeeper ``` ## Asset cooking Assets are cooked automatically as part of the build through the `TheChef` tool. You can also run the top-level custom targets manually: ```bash cmake --build build --target CookAssets cmake --build build --target CleanupAssets ``` `CookAssets` processes both engine and game assets. `CleanupAssets` removes generated runtime asset output. ## Demo app `lightkeeper` is the current demo application. It creates an SDL window, initializes the Destrum app, loads assets, sets up a scene, renders meshes, skyboxes, and a skinned animated character. ## Development notes The engine code lives in `destrum/`. Public headers are under `destrum/include/destrum`, and implementation files are under `destrum/src`. The main engine target is exposed as: ```cmake destrum::destrum ``` Game/demo targets can link against it: ```cmake target_link_libraries(my_game PRIVATE destrum::destrum) ``` ## License Do what you want dawgs :pray: