OGLRenderer Achievements:
- Physically Based Rendering (PBR) with Cook-Torrance BRDF, full glTF 2.0 material/texture support
- Dynamic lighting & shadows: directional (sun), point, and spot lights with PCF shadow maps for sunlight
- Image Based Lighting (IBL): skyboxes, HDR environment maps, irradiance & prefiltered radiance, BRDF LUT
- Post-processing pipeline: HDR tone mapping, gamma correction, MSAA, exposure
- Scene editor: Free camera, Instanced model loading, runtime editing through ImGui interface
- Phong Lighting (Phong & Blinn-Phong)
- 3D Model Loading (Supporting Diffuse & Specular Maps)
- Free Camera
- UI Mode
- Directional Light (Sunlight)
- Point Lights (With proper Attenuation)
- Spotlights (Implemented as a flashlight)
- Wireframe Mode
- All parameters dynamically adjustable in the application
- Skyboxes
- Dynamic PCF Shadow Maps
- Anti-Aliasing (MSAA)
- Controller Support
- Support arbitrary model loading/unloading
- Adopt CMake for a proper build system
- Move to ImGui Docking to improve user experience
- Instanced Rendering
- Normal Mapping
- Various Resolution modes
- Crytek Sponza
- Physically Based Materials and Lighting (Cook-Torrance)
- HDR/Tone Mapping/Gamma Correction
- Image Based Lighting
- Post-processing pipeline (with exposure implemented)
I used PolyHaven to get the HDRI, CMFTStudio to bake the diffuse irradiance and prefilter maps in linear space, and IBLBaker to get the Smith BRDF LUT. Also used HDRI-to-CubeMap web utility to make the skybox. Loaded everything in as HDR with stb_image, except the LUT is just a PNG, then tonemapped and gamma corrected at the end. Made sure to parse Albedo and Emissive as sRGB also (hardware applies linear space transformation).
If you want to develop and are using Visual Studio, the easiest way to get started is just right-click in the working directory and select "Open with Visual Studio".
If you just want to build an executable and test the program:
- Install the latest CMake version from the official website
- Run the following from the command line in project root directory
- cmake -S . -B build -DCMAKE_POLICY_VERSION_MINIMUM=3.5
- cmake --build build --config Release
- Move the .exe file into root of project
Builds tested on Arch Linux (GNU) and Windows 11 (MSVC).
- Spacebar to switch between Free Camera and UI Mode.
- Plug in an Xbox controller to navigate around the scene and jump with the A button (no collision yet).