125 lines
2.7 KiB
Markdown
125 lines
2.7 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
|
|
```
|
|
|
|
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:
|