Add linux support
This commit is contained in:
124
Readme.md
Normal file
124
Readme.md
Normal file
@@ -0,0 +1,124 @@
|
||||
# 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:
|
||||
Reference in New Issue
Block a user