Overview #
Shadow is a real-time rendering library that implements several core techniques used in modern videogame engines. It is written entirely in C++ using OpenGL, and was developed as my Final Degree Project.
GitHub RepositoryAbout the Project #
The goal of Shadow was to study and implement real-time rendering techniques from the ground up, focusing on engine-level graphics systems rather than using pre-built frameworks or shading pipelines.
The engine follows a Deferred Rendering pipeline and includes multiple post-processing and shading features.
Library Features #
I designed and implemented:
- Deferred Rendering pipeline
- G-Buffer layout and multi-pass architecture
- Physically-Based Rendering (PBR)
- Metalness/Roughness workflow
- Screen Space Ambient Occlusion (SSAO)
- Bloom post-processing pipeline
- Normal Mapping
- Tangent-space basis (TBN) generation
- Resource management system
- ImGui debugging / visualization tools
- Scene rendering loop and material system
Rendering Pipeline #
Shadow uses a Deferred Shading workflow to support multiple dynamic lights efficiently.
Material data is stored in a G-Buffer, then lighting is computed in a separate pass.
Visual Output #
Version Log #
v0.1 #
- Engine foundation (Windowing, Input System, Resource Loading)
- Skybox renderer
- G-Buffer initialization
- Base Deferred Shading implementation
v1.0 (Final Degree Project Completion) #
- Physically-Based Rendering (PBR)
- SSAO Pass
- Bloom Post-Processing
- Normal Mapping Pipeline