Custom C++ / OpenGL Game Engine
ProjectGLSL is a custom-built On Going C++ and OpenGL game engine project created to deeply understand real-time rendering, engine architecture, and production-style tooling. The engine was designed with scalability, performance, and developer experience in mind.
ProjectGLSL supports both deferred and forward shading paths. Deferred rendering targets complex scenes with many dynamic lights, while forward shading is used for simpler scenes and debugging scenarios.
The deferred pipeline writes geometry data into a G-buffer, evaluates lighting using physically based BRDFs, applies shadow maps per light, and processes the result through a modular post-processing stack. The forward path evaluates lighting directly during material shading to reduce overhead where appropriate.
Directional shadows are used for sun lighting, while omnidirectional shadow maps support point lights. Both are implemented as reusable render passes to ensure scalability and maintainability.
The post-processing system supports FXAA, SSAO, bloom, and multiple tone mapping operators. Filmic tone mapping emphasizes cinematic contrast, Neutral preserves color accuracy, and AMD tone mapping targets HDR-friendly output.
A custom serialization layer enables saving and loading of assets, scenes, and engine state. This allows editor persistence and reproducible runtime behavior.
Two distinct build configurations are supported. The Editor build includes full UI tooling for scene inspection and debugging, while the Sandbox build strips editor-only systems for a lightweight runtime.
Integrated profiling tools track performance across engine systems and render passes, supporting data-driven optimization.
Future work includes introducing a render graph system and a Vulkan backend. The engine architecture already abstracts graphics APIs to support explicit resource management and multi-threaded command recording.
PBR, IBL, forward & deferred shading, shadows.
Serialization, scene management, profiling.
Editor UI, sandbox runtime, debug tools.