PBR Shader Tool – Real-Time Shader Development in OpenGL
I developed a standalone real-time look development tool that allows artists to preview and tweak physically based materials without touching shader code. The application is inspired by Unreal Engine’s Principled Shader workflow and implements a full PBR + Image-Based Lighting (IBL) pipeline.
The focus of this project is artist usability: material parameters, texture inputs, and lighting conditions can be adjusted interactively through a custom ImGui-based interface, enabling rapid visual iteration.
Github
Artist Workflow
Users can:
-
Load arbitrary .obj models
-
Assign base color, normal, roughness, metallic, and AO maps
-
Toggle individual texture channels on/off
-
Adjust roughness, metallic, and base color tint via sliders
-
Modify light direction, color, and intensity
-
Enable or disable IBL and environment lighting
This setup mirrors common lookdev workflows used in animation and real-time pipelines, allowing artists to evaluate materials under different lighting conditions instantly.
​
Image-Based Lighting (IBL)
The tool supports HDR-based environment lighting using an equirectangular HDRI, which is converted into a cubemap at runtime. This cubemap is:
-
Convolved into an irradiance map for diffuse lighting
-
Sampled using mipmap LODs to drive roughness-dependent specular reflections
This produces visually grounded materials that respond naturally to their environment, improving material evaluation and consistency.
​
Technical Architecture
Under the hood, the system is built with modular C++ and GLSL components:
-
Physically based shading using GGX microfacet BRDF, Schlick Fresnel, and Smith geometry terms
-
Tangent-space normal mapping with correct TBN construction
-
Modular utilities for texture loading, mesh parsing, shader compilation, and cubemap generation
-
Orbital camera system with smooth pan/zoom and UI input management
The tool also includes debug visualization features, allowing individual lighting and texture contributions to be isolated during look development.
​
Why This Tool Matters
This project demonstrates my ability to:
-
Translate complex rendering theory into artist-accessible tools
-
Design intuitive GUIs around technical systems
-
Build modular, extensible tooling suitable for production pipelines
Model Sources: