⛄ Physics-Based Rendering

Physics-based shading was one of the study topics in my advanced topics in computer graphics class this semester. In the class, the professor asked us to choose a paper we were interested in and present it to the class. One key reading was Physically Based Shading at Disney . That became a major starting point for modern PBR in production, and I want to learn more about it.

While reading, I also found this SIGGRAPH course (2025): Physics Based Shading: in Theory and Practice . These resources are great for exploring the concepts behind PBR, and I think they’re worth a careful read.

Contents

These notes collect key ideas from Disney’s 2012 shading model and connect them to later PBR practice used in modern renderers.

Introduction

Physically Based Rendering (PBR) is an approach to shading and rendering that tries to match how light behaves in the real world. The goal is not “perfect physics,” but consistent realism: if a material looks like metal under one light, it should still look like metal under another.

Before PBR became standard, artists often tweaked many “non-physical” controls (spec intensity, gloss, etc.) until an image looked right in one shot, but it could break under different lighting. PBR helps by using models that obey constraints like:

  • Energy conservation: surfaces shouldn’t reflect more light than they receive
  • Fresnel behavior: reflectance increases at grazing angles
  • Material plausibility: roughness controls highlight spread in a predictable way
Tangled shading example

In production examples (like Disney films), hair and skin shading shows why “artist-friendly but physical” models matter. You want materials to react naturally to lighting changes (soft highlights, believable falloff, correct view dependence), while still giving artists intuitive controls (roughness, specular, etc.).

BRDF: The Core of PBR

The BRDF (Bidirectional Reflectance Distribution Function) describes how light is reflected at a surface. It maps incoming light direction → outgoing light direction, and tells us how much light leaves the surface toward the camera.

In most “standard PBR,” the surface reflection is split into two parts:

  • Diffuse (body reflection): light scattered inside the material (common for skin, wood, clay)
  • Specular (surface reflection): mirror-like reflection from microfacets (strong for metals, glossy plastic)

A typical microfacet BRDF looks like this conceptually:

  • D: Microfacet distribution (how “tilted” tiny mirrors are) → controlled by roughness
  • F: Fresnel term (angle-dependent reflectance) → stronger at grazing angles
  • G: Geometry / masking-shadowing (microfacets block each other)

How Does PBR Work?

The “mental model” I like: a surface is made of tiny mirrors (microfacets). Roughness controls how aligned those mirrors are: smooth → tight sharp highlight, rough → wide blurry highlight.

  1. Start with lighting: environment + direct lights
  2. Compute view/light dependence: specular changes with angle due to Fresnel
  3. Respect energy: if specular is high, diffuse should decrease (you can’t “double count” reflected energy)
  4. Use consistent parameters: roughness and metallic behave predictably across scenes

This is why PBR materials can be “reused” more reliably: you author a material once, and it behaves reasonably in many shots.

Key Parameters (Artist-Friendly)

Different engines name things slightly differently, but the “metal/rough” workflow is very common:

  • baseColor / albedo: intrinsic color of the surface (not including lighting)
  • metallic: 0 = dielectric (plastic/wood), 1 = metal (gold/iron)
  • roughness: 0 = smooth mirror, 1 = very rough/matte
  • normal map: adds small surface detail to affect shading without changing geometry
  • AO (ambient occlusion): approximates small-scale shadowing in crevices

Quick intuition: metals have colored specular and very little diffuse; dielectrics have mostly diffuse and white-ish specular.

Practical Workflow & Common Pitfalls

  • Use HDR environment lighting when possible (PBR materials need realistic lighting range)
  • Watch your color space: baseColor is usually sRGB, roughness/metallic are usually linear data maps
  • Don’t “paint lighting” into albedo: keep albedo as true material color (avoid baked highlights/shadows)
  • Roughness drives realism: many “fake-looking” materials are just wrong roughness values

References