Tridium
A high-fidelity game engine with a custom RHI supporting Dx12, and OpenGL.
Install / Use
/learn @AsherFarag/TridiumREADME
Tridium <img width="30" height="30" alt="TridiumLogoTight" src="https://github.com/user-attachments/assets/d013b489-729b-4a0a-8fb4-ed4b3a206122" />
Tridium is a modern 3D game engine built in C++20 with a focus on flexibility, performance, and simplicity. It features an integrated Editor, Physics, ECS (Entity Component System), runtime C++ reflection, serialization, physically-based rendering (PBR), and a dynamically-bound Rendering Hardware Interface (RHI) supporting OpenGL and DirectX 12. It is still in development with a lot features planned.
⚠️ Important: This project is currently under active development. Expect bugs and incomplete features.
<img width="1920" height="1007" alt="TridiumScreenShotBright" src="https://github.com/user-attachments/assets/4570a0a9-f8a0-47fa-9ac9-ba8fa756900e" /> <br></br> <img width="1849" height="928" alt="TridiumScreenShotDark" src="https://github.com/user-attachments/assets/0c35ff74-ad92-42ba-8427-36860b9b9c33" /> <br></br> <img width="1920" height="1032" alt="Spartan by Abel (https://sketchfab.com/abel76)" src="https://github.com/user-attachments/assets/087e1c77-bc83-4edc-b118-1fc1f8c1fc9a" />
Halo 5 Spartan Model by Abel https://sketchfab.com/abel76
https://github.com/user-attachments/assets/53f32f6c-01aa-46b6-8b29-28ce7284153f
Note: This demo video was from before the RHI branch was created.
Features
- Editor: Editor for asset management and scene building inspired by engines like UE5.
- Physics: Integrated physics system for 3D simulations using JoltPhysics.
- ECS: Efficient Entity Component System for organizing game objects using EnTT.
- C++ Runtime Reflection: Dynamic runtime type information for classes, properties, and serialization built on top of EnTT.
- Serialization: Saving/loading game data.
- Graphics: PBR rendering pipeline built with render-graphs and support for advanced materials.
- RHI (Rendering Hardware Interface): Abstracted graphics API layer supporting OpenGL and DirectX 12 (Vulkan support coming soon).
TODO
Developing the RHI and integrating it into the engine is a big job and requires a rewrite of many systems.
- [ ] RHI - Work in Progress ⚙️
- [ ] Features - Work in Progress ⚙️
- [x] Core API
- [ ] Compute Shaders
- [ ] Raytracing Support
- [ ] Backends - Work in Progress ⚙️
- [x] DirectX12 support
- [x] OpenGL support
- [ ] Vulkan support - Work in Progress ⚙️
- [ ] Metal support
- [ ] DirectX11 support
- [ ] Features - Work in Progress ⚙️
- [ ] New Asset System - Work in Progress ⚙️
- [x] Core API
- [x] Asset Importing
- [ ] Editor Asset Features
- [ ] Editor
- [x] Undo/Redo
- [ ] Runtime
- [ ] Renderer Pipeline - Work in Progress ⚙️
- [x] GBuffer
- [ ] Shadows
- [ ] This TODO list - Work in Progress ⚙️
Getting Started
[!NOTE] Windows is the only platform that is currently tested. Visual Studio 2022 is required.
1. Clone the repository:
# This will clone the RHI branch repo into "Your/Path/To/Tridium"
git clone -b RHI --single-branch https://github.com/AsherFarag/Tridium.git
# Enter the new Tridium folder
cd Tridium
2. Run the setup script to generate the Visual Studio 2022 solution:
Note: Downloading and building the dependencies can take a while.
# Invokes the Setup.bat script which:
# 1. Setup dependencies
# 2. Validated your Vulkan SDK (if invalid, it gives you the option to install it)
# 3. Generates the Visual Studio projects with premake
Setup
3. Open the generated .sln file in Visual Studio 2022 and build the project.
⚠️ Important: Set the build config to either Debug-Editor or Release-Editor. The other configurations are unstable and may not build.
Optional: 4. Adds custom Visual Studio Item templates (These can be removed with UninstallTemplates.bat)
InstallTemplates
Credits & Dependencies
Tridium uses a number of open-source libraries and tools. We gratefully acknowledge the authors and contributors of these projects:
- Assimp – Open Asset Import Library for importing 3D models.
- EnTT – Fast and flexible Entity Component System (ECS) for C++.
- GLAD – OpenGL loader library.
- GLFW – Library for creating windows, contexts, and handling input.
- GLM – Header-only C++ mathematics library for graphics software.
- ImGui – Immediate mode GUI library.
- ImGuizmo – 3D gizmo manipulator for ImGui.
- ImTextEdit – Script editor for ImGui.
- Jolt Physics – Physics engine for rigid body dynamics.
- Lua – Lightweight scripting language.
- Refl-Cpp – C++ reflection library.
- Sol2 – C++ library binding for Lua.
- spdlog – Fast C++ logging library.
- SPIRV-Cross – Shader cross-compiler for SPIR-V to other shading languages.
- yaml-cpp – YAML parser and emitter in C++.
- zlib – Compression library for data streams.
License
Code released under the Apache 2.0 license.<br/>
