This project aims to offer a platform agnostic and mostly unopinionated foundation to build out any kind of engine or game, rapidly, without sacrificing control nor requiring immense boilerplate/knowledge.
- Full platform/backend agnostic control over the entire rendering process (currently featuring a Vulkan backend)
- An extensive easy to use shader metadata/authoring system with support for multiple shader languages (currently featuring GLSL and HLSL)
- Complete support for custom object and resource types
- A robust easy to use serialization/deserialization system fit for all types of data (for example, resources, save data, etc)
- Extensive multithreading/async support
- Fully unified single-language source to modify and extend freely where that need may arise
- Debug builds come with hot-reloadable code/shaders/assets and ImGUI integration
- Release builds come with shader precompilation, zstd asset compression, and can safely target NativeAOT when published
- Finishing compute shaders properly, and in tandem, solidifying asynchronous gpu work and gpu -> cpu communication
- Further work on more optimal resource/subresource compilation, resource dependencies
To start, clone the repo, then install some or all of the following development-time cli dependencies:
| Dependency | Nessecity | Detection |
|---|---|---|
| spirv-cross | Nessecary | PATH variable |
| glslangvalidator | Only for GLSL | PATH variable |
| dxc | Only for HLSL | PATH variable |
| AMD Compressonator (does not require an AMD gpu) | Interchangeable with NVTT3, one required | PATH variable (to the directory containing compressonatorcli.exe) |
| Nvidia Texture Tools 3 (does not require an nvidia gpu) | Interchangeable with compressonator, one required | PATH variable (to the directory containing nvtt_export.exe) |
Then open some of the demo projects to get a fundamental grasp of the engine, or create your own and simply import EntryProps via something like <Import Project="..\EntryProps.props" /> in your .csproj's Project body.
A blender addon aiming to be capable of supporting a full production pipeline is avaliable here: https://github.com/bud11/Engine-Blender-Tools
This section will be further populated with more advanced demos as they become available within the demos folder.
Manually drawn NDC triangle:
Code-generated cube scene, camera and basic scene rendering pipeline:
Intel sponza scene imported via blender addon:
