Warning: you might not be able to clone the project if all my GitHub LFS bandwidth has been used. I have to find a solution to put assets outside of the main repository.
Warning: due to a compiler bug, the program can fail to compile. If you see a circular dependency error, or undeclared identifier errors about things that get generated by the metaprogram such as Asset_Types or a Module struct, build the program again.
Started as a toy engine project to learn Vulkan and advanced rendering techniques, this is now taking the direction of a fully fledged game engine.
There is still a lot to do on the graphics side of things, but currently I am directing my efforts on game/core engine stuff.
Supports Linux and Windows.
- No "big idea" (e.g. ECS), simple and pragmatic entity system
- Hot reloadable engine modules
- Custom gizmos
- Multi editor viewports
- Graphics abstraction layer
- Shader hot reloading
- Ref counted asset system
- Asset hot reloading
- Highly backward and forward compatible serialization system using manual indices
- Simple CPU profiler
- Simple GPU profiler
- Skinned meshes
- Physically based opaque surface shading
- Image based lighting
- HDR textures
- Cascaded shadow maps
- Parallax occlusion mapping with self shadowing
- Bloom
- Omnidirectional shadow maps
- Clustered forward rendering
- Global illumination
- Non pre-baked reflections
- GTAO
- Subsurface scattering
- Volumetric clouds
- Automatic texture transition barriers
- Variance shadow maps
- Particle system
- Only render point shadow maps when something changes
- Use multiple GPU queues concurrently
- Undo/Redo
- Gizmo interaction improvements and rework
- Texture viewer
- Async asset loading/asset streaming
- Pipelining
- Input system
- Animation system
- Animation graph (ideally a UE like graph that's more of a general purpose visual scripting tool)
- Animation joint attachments
- Collision detection queries (we can probably use a physics engine)
- Physics engine integration (probably Jolt)
- Having a player running, jumping and mantling around (see Unreal Engine Advanced Locomotion System)
- Sponza running at 155 FPS with all point lights casting shadows