Tiny game written in C++ using OpenGL

I'm building this game to learn game development in C++ sticking to best practices as I come to understand them. I'm not quite sure what the game might look like yet, as I'm constantly implementing new features based on current interests. I outline the scope of this project below:

Roadmap

  • Project setup (CMake, GLFW, GLAD)
  • First person controller
  • Dear ImGUI
  • Lighting
    • Blinn-Phong lighting model
    • Dynamic amount of lights (using UBO)
    • Spot, point, directional
  • Refactor the renderer to become more generic (Introduce Mesh class)
  • Scene graph & scene nodes
  • Instanced rendering
  • Render pass abstraction
  • Shadow mapping
  • Materials
  • Update FrameBuffer to support multiple attachments
  • Integrate Assimp mesh and material loading
  • ECS
    • Transform component
    • Mesh component
    • Material component
  • Editor mode
    • Support viewport resizing
    • Scene (de)serialization
    • Control position and rotation using ImGuizmo
    • Frame buffer based picking
    • Make the sun controllable using the editor
  • Update render stats debugging (Frame time per pass)
  • Cascaded shadow maps
  • Basic post processing (Screen quad)
  • Mip chain bloom
  • SSAO
  • Anti-Aliasing? (Might conflict with the chased artstyle)
  • HDR image based lighting
  • Basic deferred rendering
  • Integrate Bullet Physics (Car demo)
  • UI using clay
  • Improve event system referencing (this)
  • Simple particle system OR grass rendering
  • Rendering a heightmap from a texture
  • Audio using miniaudio
  • Skeletal animation and GPU skinning