Skip to content

ajweeks/FlexEngine

Repository files navigation

linux MIT licensed

Flex Engine is a personal game engine I began work on in early 2017. I use it as a playground for learning about real-time rendering and simulation techniques. Flex Engine is not a commercial game engine nor is it intended for public use.

Building Flex

See build.md

Notable Features

  • Vulkan rendering backend (VulkanRenderer.cpp)
  • In-game scripting language compiler/editor & virtual machine (VirtualMachine.cpp)
  • Conditional checksum-based shader recompilation (ShaderCompiler.cpp)
  • File modification monitoring for textures, meshes, prefabs, shaders, config files, etc. (ResourceManager.cpp)
  • Scene editor with serialization (BaseScene.cpp)
  • Editor tools (transform gizmo, property editor, keybinding editor, etc.) (Editor.cpp)
  • Basic profiling capture/inspection tools
  • Support for Windows & linux
  • Rendering:
    • Marching cubes terrain generator & renderer
    • Gerstner wave ocean renderer
    • Rectangular area lights (direct-only diffuse & specular)
    • Physically-based shading model
    • Image-based lighting
    • Screen-space ambient occlusion
    • Stable cascaded shadow mapping
    • Temporal anti-aliasing
    • Signed distance field (SDF) font generation & rendering
    • GPU-based particle simulation

Procedural terrain generated on the GPU

Gerstner wave ocean simulation

Cascaded Shadow Mapping

Two million particles simulated and rendered entirely on the GPU

Profiler overlay showing a breakdown the CPU-time of a single frame

Some editor windows

Screen-Space Ambient Occlusion (SSAO)

GBuffer (top-left to bottom-right): position, albedo, normal, final image, depth, metallic, AO, roughness

View into editor

See more screenshots here

Dependencies

Flex Engine uses the following open-source libraries:

  • Bullet - Collision detection & rigid body simulation
  • FreeType - Font loading
  • glfw - Window creation, input handling
  • glm - Math operations
  • ImGui - User interface
  • OpenAL - Audio loading and playback
  • stb - Image loading
  • cgltf - Mesh loading
  • volk - Vulkan meta-loader

License

Flex engine is licensed under the MIT license. See LICENSE.md for details.

Acknowledgements

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

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy