Lean Engine

3D OpenGL engine written in C++

C++OpenGLImGuientt
Lean Engine

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
ex1.webp
ex2.webp