Lean Engine is a 3D OpenGL engine written in modern C++. It was my first real attempt at graphics programming. I worked through LearnOpenGL and implemented each feature in the engine as I went.
It covers lighting, framebuffers, cubemaps, and shadow mapping. Once shadows were done, I moved the project to DirectX 11 as Based Engine.
I blogged the whole way through in the Based Logs series. Some highlights are Shadow Mapping, RenderDoc, and Blinn-Phong.
Features
- Phong lighting, later upgraded to Blinn-Phong, with per-model materials
- Directional, point, and spot lights, with multiple of each in a scene
- Directional shadow mapping with slope-scaled bias and PCF
- Cubemap skybox
- Transparency/blending and back-face culling
- Scene rendered to a framebuffer and shown in an ImGui viewport
- Object picking through an ID render pass, with a stencil outline on the selected object
- Model loading with assimp
- Entity component system built on entt
- Editor UI: entity list, inspector, console, and ImGuizmo transform gizmos