top of page

DX11 PBR Renderer

Project Overview

Image Based Lighting

For Image Based Lighting(IBL), I used split sum approximation, the first part is  pre-filtered environment map, in whicn I precalculate the convolution for the HDR image according to different roughness value. For the second part, the BRDF part of the specular integral, I used precalculated LUT. Horizontal texture coordinate is n⋅ωi, and vertical texture coordinate is roughness value.

image.png

IBL with Different Textures

HLSL Shader Code of IBL

Physically-Based Rendering

Every PBR objects need 5 textures: Albedo, Normal, Metallic, Roughness, Ambient Occlusion. For each Texture, I used differen slot to store all texture. If some objects are lack of certain texture,  I will pass a pure white texture RGBA(255, 255, 255, 255) to shader, in case the final result is too dark

pbr1.png

Texture List in PBR Pipeline

Game Code of Binding Different Textrues in Slots

In the specular part of BRDF I used Trowbridge-Reitz GGX for D, the Fresnel-Schlick approximation for F, and the Smith's Schlick-GGX for G.

pbr.png

PBR with Diffrent Roughness and Metallic

HLSL Shader Code of PBR

Game Code of Creating Spheres with Different Roughness and Metallic

Lighting Models

Some Lighting Models (Cell Shading, BackLight, OrenNayar .etc)

HLSL Shader Code of other Lighting Models

Screenshots

  • LinkedIn
  • YouTube

© 2025 by Jiabin Portfolio. All rights reserved.

bottom of page