Skip to content

JoshuaSenouf/gl-engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GLEngine

GLEngine is a C++ OpenGL graphics engine which aimed to be a skill, knowledge and possibly graphical showcase. It will support many graphical features, from something as basic as textures and shaders to deferred rendering, PBR and such.

Link to the demo reel : https://vimeo.com/200574427

Screenshots

  • Example using Image-Based Lighting :

  • G-Buffer structure :

Features

  • Camera :

    • Movements
    • Zoom in/out
    • Exposure :
      • Aperture
      • Shutter speed
      • ISO
    • TODO : Other physically based camera parameters
  • Textures :

    • Init/loading/binding from anywhere
    • Anisotropic Filtering
    • HDR
    • Cubemap
  • Material :

    • PBR material pipeline :
      • Albedo
      • Normal
      • Roughness
      • Metalness
      • AO
    • TODO : Informations seamlessly sent to the G-Buffer
  • Models/Meshes :

    • External models loading (.obj)
    • TODO : PBR material pipeline compliant
    • TODO : Revamp & debug to support kinda buggy models
  • Basic Shapes :

    • Simple shape generation (quad, plane, cube)
    • Predefined array based
    • TODO : Shape topology computation (sphere...)
  • Shaders :

    • Init/loading/binding from anywhere
    • G-Buffer support
    • PBR material pipeline compliant
    • TODO : UBOs
  • Skybox :

    • 6-faced cubemap based
    • Screenquad based
    • Equirectangular/spherical maps
    • HDR
    • Deferred Rendering compliant
  • Resources Manager :

    • TODO : Resources (textures, shaders, models, materials...) centralization
  • Lights :

    • Point light
    • Directional light
    • TODO : Spot light
  • Lighting :

    • Cook-Torrance BRDF
    • Deferred Rendering
    • TODO : Shadow-mapping (PCF/Variance)
    • TODO : Tiled Deferred Rendering (Compute shaders ?)
  • PBR Pipeline :

    • BRDF :
      • Cook-Torrance model
      • Diffuse : Lambertian/Disney
      • Fresnel term : Schlick
      • Microfacet distribution : GGX
      • Geometry attenuation : GGX-Smith
    • Material pipeline using a roughness/metalness workflow
    • Image-Based Lighting (Epic split-sum method) :
      • Diffuse irradiance
      • Specular radiance
  • Post-processing :

    • Scalable Ambient Obscurance (SAO)
    • FXAA
    • Motion Blur (camera/per-fragment)
    • Tonemapping (Reinhard, Filmic, Uncharted)
    • TODO : Bloom
    • TODO : Depth of Field
    • TODO : Screen-Space Reflections
    • TODO : Lens Flare
    • TODO : Eye Adaptation
  • Utility :

    • GUI using ImGui
    • Basic/naive GPU profiling
    • G-Buffer visualization for debugging purpose
    • Borderless Fullscreen
    • TODO : Logging
    • TODO : CPU profiling
    • TODO : G-Buffer export as .png
    • TODO : GUI using Qt5 (which imply a whole project revamping)

How to use

GLEngine was written using Linux, QtCreator as the IDE, CMake 3.0+ as the building tool, OpenGL 4.0+ as the Graphics API and a C++11 compiler in mind.

Download the source, open the CMakeList.txt file with QtCreator, build the project, and everything should be ready to use.

  • In GLEngine :
    • Hold the right mouse button to use the camera and its features
    • Toggle between the different buffers using the 1-9 buttons

Dependencies (included)

  • Window & Input system : GLFW
  • OpenGL Function Loader : GLAD
  • OpenGL Mathematic Functions : GLM
  • Image Loading : stb
  • Mesh Loading : Assimp

Credits

  • Joey de Vries (LearnOpenGL)
  • Kevin Fung (Glitter)

About

Rendering Engine using C++ and OpenGL

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy