Coffee Engine

OpenGL and C++ Render Engine

Physics 2D

Trailer


I made this engine in my final HND year at ESAT Valencia for the graphics programming subject. Its main features are the following:

  • Multithreaded
  • Lights
    • Directional
    • Spot
    • Point
  • Shadows - 4 shadows per entity from Directional or Spot lights
    • Blur
    • Inversion
    • Gray scale
    • Color Sharpen
    • Edge detection
  • Log - with spdlog in the console
  • Editor - Using ImGui
  • Entity Inspector - Property modifier for each entity
  • Physics 2D - with Box2D
  • Scene management
  • Scene hierarchy
  • Pools - allocation and management of memory
  • Scripting - Lua
  • Scripting - C++
  • FPS clock - using sokol_time
  • Multithread - using px_schd
  • Model conversion to our own CFasset type and obj loader using Assimp
  • Materials
  • Material instance
  • Texture loading
  • This Engine is currently en development, adding new features and rendering technics.

    Goals:

    • C# Scripting
    • DirectX 12 integration
    • Physically Based Rendering techniques:
      • Material pipeline (PBS, Metallic/Roughness workflow)
      • Image Based Lighting (Radiance and Irradiance environment mapping)
      • Atmospheric Scattering (Rayleigh and Mie Scattering)
    • Postprocessing Pipeline:
      • Screen Space Ambient Occlusion (SSAO)
      • Light Scattering (God Rays)
      • Fast Approximate Anti-Aliasing (FXAA)
      • Lens Distortion (with Grain, Vignette, Color Aberration)
      • Tonemapping and multiple one-pass filters
    • Sound integration (OpenAL)
    • Physics integration (Nvidia PhysX)