#include <williamwhitehouse.dev>

Physically Based Rendering using DirectX11
My second project for the "Advanced Technologies" module at university involved delving into the maths of Physically Based Rendering and simulating the appearance of clay materials in real-time. I chose to investigate various Bidirectional Reflectance Distribution Functions (BRDF) and microfacet models and implement them in HLSL and a C++ DirectX11 renderer.
Alongside the final project, I developed a report detailing the research and mathematics behind real-time rendering. The report also covers the processes, methods, and an analysis of the final rendering. Read the report here!
PBR DirectX11 PBR DirectX11 PBR DirectX11
PBR DirectX11 PBR DirectX11 PBR DirectX11
Development
This project delved into the mechanics of computer-based object and material rendering, leading to an understanding of the rendering equation and the world of PBR, BRDFs and microfacet models.
The journey began by implementing fundamental BRDFs, like Phong and Blinn. Building on this foundation, I progressed by researching various microfacet models and implementing the Cook-Torrance specular BRDF and the Oren-Nayar diffuse model. These BRDFs were coded from scratch in the form of HLSL shaders and integrated into a custom real-time DirectX11 rendering engine.
Beyond the exploration of the different BRDFs, the project enhanced the realism of the clay materials through a series of other rendering features. The introduction of Normal Mapping facilitated the capture of intricate surface details, enabled by the blending of two normal map textures. This technique combines minute details as well as pronounced features, visible in the clay rendering screenshots. Here, one normal map defined the clay material, while the other introduced the fingerprint details.
The next rendering feature was the integration of environment reflections. Achieved through an environment cubemap and a noise texture, these reflections can be randomly added to the surface of the model in varying strengths. Additionally, a basic approximation of subsurface scattering, known as wrap lighting (proposed in GPU Gems) was implemented.
While acknowledging these achievements, the project has room for future refinement. The existing subsurface scattering implementation, while functional, offers scope for improvement as it only provides a crude approximation. The demands of real-time rendering imposed limitations on achievable material realism; looking ahead, implementing Ray Tracing and Monte Carlo algorithms could be a interesting exploration that holds the promise of enhancing material realism - albeit with a trade-off in real-time performance.