Files
Destrum/Readme.md
2026-06-19 13:25:24 +02:00

2.7 KiB

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

.
├── 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:

git clone --recurse-submodules https://git.brammie15.dev/brammie15/Destrum.git
cd Destrum

Configure the project:

cmake -S . -B build

Build everything:

cmake --build build

Run the demo executable:

./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:

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:

destrum::destrum

Game/demo targets can link against it:

target_link_libraries(my_game PRIVATE destrum::destrum)

License

Do what you want dawgs 🙏