Code Monkey home page Code Monkey logo

whztt07 / glengine Goto Github PK

View Code? Open in Web Editor NEW

This project forked from joshuasenouf/gl-engine

0.0 1.0 0.0 214.58 MB

Rendering Engine using C++ and OpenGL

License: GNU General Public License v3.0

CMake 0.64% Shell 0.02% C++ 43.08% C 28.60% Objective-C 0.77% Inno Setup 0.03% Batchfile 0.03% Pascal 0.05% Python 0.76% D 0.70% Makefile 0.02% Java 1.15% Objective-C++ 0.12% Smarty 0.01% UnrealScript 0.01% ShaderLab 0.01% RPC 12.13% COBOL 11.60% GLSL 0.21% CSS 0.10%

glengine's Introduction

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)

glengine's People

Contributors

joshuasenouf avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.