An engine created with OpenGL and C++ that explores the graphics pipeline and computational physics from the ground up.
- Rendering using Blinn-Phong shading with textures and custom shaders.
- Uses an ECS (Entity Component System) for entity management and fast object manipulation.
- STL model loading (using this custom loader)
- Broad-phase collision testing using both static and dynamic bounding volume hierarchies.
- GUI created using ImGUI
- Lua-based scene scripting for declarative scene setup
- CMake 3.20 or higher
- Ninja build system
- C++ Compiler with C++17 support (MinGW-w64 recommended on Windows)
- OpenGL 3.3+ capable graphics card and drivers
All dependencies (GLFW, GLAD, GLM, ImGui, Lua, Sol2, stb_image) are bundled in src/core/dependencies/.
cmake -B cmake-build-debug -G Ninja -DCMAKE_BUILD_TYPE=Debugcmake --build cmake-build-debugThe executable PhysicsEngine.exe (or PhysicsEngine on Linux) will be created in the project root directory.
Important: Run from the project root directory to ensure proper resource loading (shaders, textures, models, scenes).
./PhysicsEngine.exebroad_bvh.mp4
static.mp4
static_lvl_trim.mp4
- Rigidbody collisions
- Cloth, fluid simulations
- More complex model loading
- Monte Carlo style raytracing
- Multithreading