SimpleOpenGL
A renderer featuring advanced techniques such as PBR/IBL, deferred shading, SSAO, and shadow mapping.
Install / Use
/learn @azer89/SimpleOpenGLREADME
OpenGL Renderer
A real-time rendering demo built from scratch using OpenGL and C++.
Features
- Physically Based Rendering (PBR)
- Image-Based Lighting (IBL)
- Deferred shading
- Screen Space Ambient occlusion (SSAO)
- Sobel edge detection
- Shadow mapping
- Bloom postprocessing
- Minor features: Geometry shader, Blinn-Phong shading, Skybox, glTF model loading.
Physically-Based Rendering (PBR) and Image-Based Lighting (IBL)
https://github.com/azer89/SimpleOpenGL/assets/790432/7ad64282-2bc0-4425-b689-c80f5143e7d9
<img width="850" alt="image" src="https://github.com/azer89/SimpleOpenGL/assets/790432/2cbf021d-9b2d-42f8-afb2-965a538d1640">Deferred shading
A Sponza scene with 300 light sources.
https://github.com/azer89/SimpleOpenGL/assets/790432/8b1dfae3-98b0-49e8-91e8-043eaa2f3098
Screen Space Ambient Occlusion</b>
This Gundam model looks great with ambient occlusion.
<img width="850" alt="image" src="https://github.com/azer89/SimpleOpenGL/assets/790432/a5a9ae9e-a544-469c-b159-90a3bd94ca25"> <img width="850" alt="image" src="https://github.com/azer89/SimpleOpenGL/assets/790432/a801c747-985a-429b-a087-8e5fc304a95f">Shadow mapping
The sahdow edges are blurred using PCF.
https://github.com/azer89/SimpleOpenGL/assets/790432/83678402-3b19-46b1-b73b-80cc48ddc9c9
Sobel edge detection
<img width="850" alt="image" src="https://github.com/azer89/SimpleOpenGL/assets/790432/caa5006f-f31d-4174-941f-ce530785b52d">Bloom postprocessing
<img width="850" alt="image" src="https://github.com/azer89/SimpleOpenGL/assets/790432/da456381-d72f-481f-8c70-2592a98e1c3d">Some other cool results
https://github.com/azer89/SimpleOpenGL/assets/790432/e564b947-7f07-44a9-9e96-2f06b825e15e
https://github.com/azer89/SimpleOpenGL/assets/790432/db83ad2c-248d-4ca5-be07-b4e65142c686
<img width="850" alt="image" src="https://github.com/azer89/SimpleOpenGL/assets/790432/9d3efcf9-bea8-4562-a200-db6ace329e85"> <!--Dragon PBR PBR--> <!--img width="800" alt="image" src="https://github.com/azer89/SimpleOpenGL/assets/790432/bab88bd1-6a79-4218-b553-32599bed920b"--> <!--Damaged Helmet PBR--> <!--https://github.com/azer89/SimpleOpenGL/assets/790432/6107d114-b5c8-4789-8f28-86413e40a931--> <!--Damaged Helmet PBR--> <!--<img width="400" height="300" alt="PBR" src="https://github.com/azer89/SimpleOpenGL/assets/790432/d4c44a9b-ee31-40cb-94ec-15010058768d"> <img width="400" height="300" alt="PBR" src="https://github.com/azer89/SimpleOpenGL/assets/790432/d9b9ea15-20c3-46c1-8169-9a4599501179"> <img width="400" height="300" alt="PBR" src="https://github.com/azer89/SimpleOpenGL/assets/790432/2205127f-b56c-4b49-a4d9-ea9b1d1b7c52"> <img width="400" height="300" alt="Deferred Shading" src="https://github.com/azer89/SimpleOpenGL/assets/790432/1c01a0ad-c3c3-4374-bc8e-9bd71313e499"> <img width="400" height="300" alt="Skybox" src="https://github.com/azer89/SimpleOpenGL/assets/790432/ae47eeea-0464-442c-85f2-d3223554585a">-->Build
- OpenGL 4.6 / Direct State Access
- Visual Studio 2022 x64 and C++20
- Libraries: Assimp, glad, glfw, glm, assimp, ImGui, and stb.
Credit
Technical Resources:
Assets:
3D Models:
