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 technniques. I try to keep master reasonably stable, and therefore update it infrequently. See development for the latest changes.
- Vulkan and OpenGL backends
- Signed-distance field font generation & rendering
- Physically based shading model
- Image based lighting
- Screen-space ambient occlusion
- Stable cascaded shadow mapping
- Conditional checksum-based shader compilation
- Scene editor with serialization
- Profiling tools
- In-game scripting language
Basic implementation of Cascaded Shadow Mapping
Profiler overlay showing a breakdown the CPU-time of a single frame
Screen-Space Ambient Occlusion (SSAO)
GBuffer (top-left to bottom-right): position, albedo, normal, final image, depth, metallic, AO, roughness
See more screenshots here
If you want to build Flex Engine on your own system, follow these steps. You an always download the latest release binaries here if that's what you're after.
- Visual Studio 2015 (or later)
- GENie
- Recursively clone the repository to get all submodules
- Ensure GENie is either on your PATH, or
genie.exe
is in thescripts/
directory - Run
scripts/generate-vs-*-files.bat
(this simply runs the commandgenie vs2015
orgenie vs2017
) - Open
build/FlexEngine.sln
- Build and run!
Flex Engine uses the following open-source libraries:
- Bullet - Collision detection & rigid body simulation
- FreeType - Font loading
- glad - OpenGL profile loading
- glfw - Window creation, input handling
- glm - Math operations
- ImGui - User interface
- OpenAL - Audio loading and playback
- stb - Image loading
- cgltf - Mesh loading
Flex engine is released as open source under The MIT License. See license.md for details.
A huge thank you must be given to the following individuals and organizations for their incredibly useful resources:
- Baldur Karlsson of github.com/baldurk/renderdoc
- Alexander Overvoorde of vulkan-tutorial.com
- Sascha Willems of github.com/SaschaWillems/Vulkan
- Joey de Vries of learnopengl.com
- Andrew Maximov for the pistol model and textures artisaverb.info/PBT.html
- FreePBR.com for the high-quality PBR textures
- All authors and contributors to the open-source libraries mentioned above
Stay (somewhat) up to date about this project on my blog at ajweeks.com/blog