Flex Engine
2017-Present
Flex Engine is a personal game engine I began work on in February 2017. I use it as a playground for learning about real-time techniques. You can find the source here: github.com/ajweeks/FlexEngine
Notable Features
- Vulkan backend
- Conditional checksum-based shader compilation
- Support for Windows & linux
- Scene editor with serialization
- In-game scripting language & virtual machine
- Built-in profiling capture/inspection tools
- Rendering:
- Physically based shading model
- Image based lighting
- Screen-space ambient occlusion
- Stable cascaded shadow mapping
- Temporal anti-aliasing
- Signed-distance field font generation & rendering
- GPU particles
A view of the editor tools showing info about scenes, objects, materials, lights, and user-settings
Basic implementation of Cascaded Shadow Mapping
Two million particles updated and rendered entirely on the GPU, utilizing the compute stage
Profiler overlay showing a breakdown the CPU-time of a single frame
Some of the editor windows
Screen-Space Ambient Occlusion (SSAO)
GBuffer (top-left to bottom-right): position, albedo, normal, final image, depth, metallic, AO, roughness
The effect different environment maps have on the same model when using image-based lighting
See more screenshots here
Acknowledgments
A huge thank you must be given to the following individuals and organizations for their incredibly useful resources:
Blog
Stay (somewhat) up to date about this project on my blog at ajweeks.com/blog