MSG is a full SceneGraph featuring a flexible Component system, giving a lot of freedom for adding new components to your scene and organizing it.
flowchart
Assets::Parser --Loads--> Asset
Asset --Stores--> ECS & Objects
Renderer --Renders--> ECS
Game/Project --Edits--> ECS & Objects
Game/Project --Initializes/Triggers--> Assets::Parser & Renderer
The ECS system is the foundation of the whole project.
A SceneGraph is generated by the Assets parser or the user using the ECS system
The SceneGraph is then given to the Renderer
The Game/Project is in charge of managing window, assets and triggering rendering
The common tools for the whole project are located in Tools
Demos and tests are located in UnitTests
Dependencies are automatically fetched using CMake.
This project was made with the will to reduce dependencies to what's strictly necessary:
- GLEW for OpenGL because I don't wanna query extensions manually*
- STB for image parsing
- zlib for FBX parsing
- GLM for vectorial math
- SDL2 for Scene Renderer window system and events
- Nlohmann JSON for parsing GLTF
- GTest GTest for unit tests
- EGL-Registry & GL-Registry for KTX parsing
- GCEM for accelerated Spherical Harmonics calculation
If you want to participate, see the issues for task lists
MSG features several functionnalities :
- Temporal Anti-Aliasing
- Temporal Accumulation
- Screen Space Reflection inspired by Unreal Engine
- Screen Space Ambient Occlusion
- Smooth Shadows
- Blended Order-Independant Transparency
- Physically Based Materials, with MaterialExtensions allowing for various PBR workflows.
- GPU Rigging
- Animations