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.
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 stuff.
Supports Linux and Windows.
- No "big idea" (e.g. ECS), simple and pragmatic entity system
- Graphics abstraction layer
- Shader hot reloading
- Ref counted asset system
- Asset hot reloading
- Highly backward and forward compatible serialization system using manual indices
- Simple editor with gizmos
- 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
- Gizmo interaction improvements and rework
- Texture viewer
- Pipelining
- Hot reloading code
- 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
60 FPS because of V-Sync, but GPU time varies between 10 to 11 ms, which is 90-100 FPS