All Projects → JoshuaSenouf → Gl Engine

JoshuaSenouf / Gl Engine

Licence: mit
Rendering Engine using C++ and OpenGL

Projects that are alternatives of or similar to Gl Engine

Filament
Filament is a real-time physically based rendering engine for Android, iOS, Windows, Linux, macOS, and WebGL2
Stars: ✭ 13,215 (+5475.95%)
Mutual labels:  opengl, pbr
Reshade
A generic post-processing injector for games and video software.
Stars: ✭ 2,285 (+864.14%)
Mutual labels:  opengl, shaders
Daemon
The Dæmon game engine. With some bits of ioq3 and XreaL.
Stars: ✭ 136 (-42.62%)
Mutual labels:  opengl, pbr
Renderer
A shader-based software renderer written from scratch in C89
Stars: ✭ 1,366 (+476.37%)
Mutual labels:  shaders, pbr
Vxr
General purpose engine written in C++ with emphasis on materials rendering (PBR, clear coat, anisotropy, iridescence)
Stars: ✭ 181 (-23.63%)
Mutual labels:  opengl, pbr
Gdx Vfx
LibGDX post-processing visual effects
Stars: ✭ 105 (-55.7%)
Mutual labels:  opengl, shaders
Nimble
An OpenGL renderer with a modern and extensible rendering pipeline.
Stars: ✭ 144 (-39.24%)
Mutual labels:  opengl, shaders
Spectaculum
A spectacular view widget for visual media content on Android
Stars: ✭ 78 (-67.09%)
Mutual labels:  opengl, shaders
Cluster
Clustered shading implementation with bgfx
Stars: ✭ 180 (-24.05%)
Mutual labels:  shaders, pbr
Glsltuto
GLSL shaders tutorial
Stars: ✭ 168 (-29.11%)
Mutual labels:  opengl, shaders
Photonbox
A portable modern OpenGL Game-Engine with focus on PBR
Stars: ✭ 93 (-60.76%)
Mutual labels:  opengl, pbr
Yave
Yet Another Vulkan Engine
Stars: ✭ 211 (-10.97%)
Mutual labels:  shaders, pbr
Opengl Renderer
Modern OpenGL renderer written in C++17
Stars: ✭ 85 (-64.14%)
Mutual labels:  opengl, pbr
Tinyrenderer
A brief computer graphics / rendering course
Stars: ✭ 11,776 (+4868.78%)
Mutual labels:  opengl, shaders
Sildurs Shaders.github.io
Sildurs shaders website
Stars: ✭ 84 (-64.56%)
Mutual labels:  opengl, shaders
Diligentengine
A modern cross-platform low-level graphics library and rendering framework
Stars: ✭ 2,142 (+803.8%)
Mutual labels:  opengl, pbr
Physhader For Mantra
A set of physical-based shaders for Mantra renderer
Stars: ✭ 54 (-77.22%)
Mutual labels:  shaders, pbr
3d Game Shaders For Beginners
🎮 A step-by-step guide to implementing SSAO, depth of field, lighting, normal mapping, and more for your 3D game.
Stars: ✭ 11,698 (+4835.86%)
Mutual labels:  opengl, shaders
Gaiasky
Mirror of Gaia Sky repository hosted on Gitlab: https://gitlab.com/langurmonkey/gaiasky
Stars: ✭ 162 (-31.65%)
Mutual labels:  opengl, shaders
React Imgpro
📷 Image Processing Component for React
Stars: ✭ 2,186 (+822.36%)
Mutual labels:  opengl, shaders

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)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].