Files
Destrum/Readme.md
T

143 lines
3.3 KiB
Markdown

# 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 --config Release
```
Run the first-party regression tests:
```bash
ctest --test-dir build -C Release --output-on-failure
```
Run the demo executable:
```bash
./build/lightkeeper/Release/lightkeeper.exe
```
For single-configuration generators, use the executable path produced by that
generator instead. Runtime assets are placed beside the executable in both
layouts.
## 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
cmake --build build --target ValidateShaders
```
`CookAssets` processes both engine and game assets. `CleanupAssets` removes generated runtime asset output.
`ValidateShaders` runs `spirv-val` over the cooked engine shaders when the Vulkan SDK provides it.
Install the application, engine library, public headers, and runtime assets:
```bash
cmake --install build --config Release
```
## 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: