Polymer Engine
->
Overview
My gradually growing personal game engine that serves as a learning environment to figure out how parts of game engines work and as a testbed to try out less common approaches to options. I'm currently still focusing on establishing core features that are shaping the overall architecture, before starting development on a proper game that will dictate what features are needed. I'm trying to develop the engine with high scalability across a variety of hardware (not just the latest and greatest) and reduced iteration times through hot-reloading for assets and C++ code.
Demo
Demo showcasing shader + module hot reloading working for development builds
Demo to showcase my platformer prototype using Blender as a level editor. The scene is exported as a glTF, which is loaded and converted at runtime into a playable level. Collision shapes are defined as empty boxes, parented to the mesh in Blender
Demo of an example glTF model having been converted into meshlets and rendered in a single draw indirect command (see image below) that is populated by a compute shader that applies cone view culling. The cone view culling currently has a few issues with negative vectors, but allows you to see the individual meshlets being culled
Xcode GPU debugger view of the draw indirect command rendering the meshlets of the same model above. Even with the faulty culling, this approach yields a ~60% decrease in frame time (on my M1 7-core GPU), with more future culling strategies likely to decrease this even further for more complex scene scenarios
Demo showcasing physics + barebones 3D rendering driven by the ECS
Technical Sheet
Tools that I used whilst working on this project:
- IDE:
- Compiler:
- CPU/GPU Debugger:
- Libraries:
- Windowing + Input (using SDL3)
- Logging (using spdlog)
- Testing (using Catch2)
- ECS (using Flecs)
- Graphics (using bgfx)
- Physics (using JoltPhysics for 3D and Box2D for 2D)
- Profiling (using tracy)
- Immediate Mode GUI (using Dear ImGui)
- Math (using GLM)
- glTF Support (using fastgltf)
- Mesh Processing & Optimizations (using meshoptimizer)
Helpful Resources
- Hot-reloadable C++ module system based on Project Island (by Tim Gfrerer, @tgfrerer)