PBR — physically based rendering
The mechanism: why "physically meaningful" parameters changed everything
The problem before PBR. A material was described with ad hoc numbers: a diffuse color, specular strength, an ambient term — all fitted by eye to the light of one particular level. Three troubles: (1) move the object into different lighting and the highlight and brightness drift; (2) materials from different artists did not match (everyone tuned their own way); (3) nothing could be reused as a library. Essentially it was "store the source, not the model" in reverse: a pile of disconnected tweaked values instead of one physical description.
The insight. Describe the material by what does not depend on the scene — its physics. Then the renderer works out how it looks under any light. The standard set (the metallic-roughness workflow):
- Albedo (base color) — what fraction of each wavelength is reflected diffusely (0–1 per channel). This is the "color of the paint", with no highlights or shadows.
- Roughness — how rough the surface is: 0 = a perfect mirror, 1 = matte dust. It controls the width of the highlight: smooth → a sharp bright highlight, rough → a smeared dull one.
- Metallic — metal or not: 0 = a dielectric (plastic, wood, leather: there is both diffuse and a weak ~4% highlight), 1 = a metal (no diffuse at all, and the highlight is colored — gold reflects yellow). Values in between barely occur physically, which is why it is "almost binary".
Microfacets — where roughness comes from
Up close, a rough surface is a myriad of tiny perfect mirrors (microfacets) tilted at random. Roughness is the spread of their orientations. A smooth surface: every micro-mirror faces almost the same way → the reflected light leaves in a narrow beam → a sharp highlight. A rough one: the tilts are scattered → the light spreads into a wide cone → the highlight blurs and dims. There is no "painted" highlight — it is derived from the statistics of the micro-relief.
Fresnel — why everything is a mirror at a grazing angle
The reflected fraction grows toward grazing angles: look straight down into water and you see the bottom (~2–4% is reflected); look along the surface toward the horizon and it is a mirror (~100% reflected). That is the Fresnel effect, and in real time it is taken as Schlick's approximation:
where is the head-on reflectance (normal incidence) and θ is the angle between the view and the normal. This is where metallic hides: for dielectrics ≈ 0.04 (a colorless 4%) plus a diffuse albedo; for metals is their colored albedo (gold ≈ {1.0, 0.76, 0.34}) and there is no diffuse. So "metallic" switches where the albedo goes: into the diffuse (a dielectric) or into the color of the highlight (a metal).
Conservation of energy — why PBR does not "glow"
A surface cannot reflect more light than it received. Old materials violated that (diffuse plus specular could exceed 100%) — hence the "plasticine" or "glowing" look. PBR divides the budget: the more goes into specular reflection (per Fresnel), the less is left for the diffuse, and the sum is ≤ 1. That is what makes the image "real" under any light, not just the one it was tuned for.
A worked example — the Fresnel of water
A dielectric, = 0.04. Head-on (cos θ = 1): F = 0.04 + 0.96·(1−1)⁵ = 0.04 — 4% is reflected, you see through it. At a grazing angle (cos θ → 0): F = 0.04 + 0.96·1⁵ = 1.0 — 100% is reflected, a pure mirror. One parameter, zero hand-tuning — and water behaves correctly both in the puddle at your feet and at the horizon. The same law draws the "rim" (a glowing outline) on any object: at the edge of a silhouette the angle is grazing → Fresnel → the edge lights up.
🕹 Games to play — and what to notice
PBR is tricky because it is invisible: it is not an effect but consistency. So what you need to notice is subtle: whether metal/plastic/leather read correctly in one scene, and how everything turns mirror-like at a grazing angle. From a PBR showcase to a contrast with pre-PBR.
Ready at Dawn made a game that demonstrates materials: brass, blued steel, lacquer, cloth, leather — every material physically distinct and correct under cinematic light. One of the first AAA projects with end-to-end PBR.
🎮 Play: look closely at the metal parts of a weapon and then at the cloth and leather — notice that the metal's highlight is colored and narrow while leather's is wide and dull, and that this is not painted on but works identically as the lighting changes through the scene.
A perfect test bench: machines of polished and rough metal next to grass, leather, cloth and Aloy's skin. The same robot chassis material reads correctly at noon, in a dust storm and at night by a fire — that is PBR's "scaling across lighting".
🎮 Play: turn the camera so the sun grazes along a wet or metal surface — you will see the highlight flare up at the grazing angle (Fresnel), while head-on the surface is duller. Compare a metal robot with cloth: different highlight widths = different roughness.
DICE scanned real surfaces (photogrammetry) and brought them in as PBR materials — which is why stone, metal and snow look "real" under any light. A showcase of how PBR plus scans give photorealism with no hand-tuning.
🎮 Play: find a contrast with a pre-PBR game (Half-Life 2, 2004): there the highlights are painted in, and under different lighting the metal looks like painted plastic. Switch to anything after ~2016 — the "honesty" of the material under moving light is striking.
Deep end · theory: the full Cook–Torrance microfacet BRDFskippable
The specular part of PBR is the microfacet Cook–Torrance BRDF: how much light arrives from direction and leaves toward . Three factors divided by a normalization:
- D — the normal distribution function (NDF). What fraction of microfacets face exactly along the half vector (between and ) — that is, reflect light straight into your eye. That is the shape of the highlight, and roughness drives it. The industry standard is GGX / Trowbridge–Reitz (its long tails are more realistic than old Blinn–Phong):
where (squaring makes the slider perceptually linear). As the function degenerates to a spike at — a sharp highlight.
- F — Fresnel (Schlick, see above) — what fraction is actually reflected at the current angle; for metals a colored .
- G — geometry (shadowing/masking). At grazing angles microfacets occlude one another — G damps the re-reflection, otherwise you get an unphysical blowout along edges. It depends on roughness and the angles (the Smith approximation).
The diffuse part is plain Lambert , multiplied by (a metal has no diffuse) and by whatever energy is left after the specular budget. The result: the same code computes both a mirror and dust — only α, F0 and metallic change.
Deep end · engineering: the texture workflow, the channels and where this is computedskippable
In practice the parameters are textures, one per channel, and the artist paints them in Substance Painter or takes them from ready-made scans (Megascans):
- Base Color (albedo) — RGB, with no shadows or highlights (the renderer will add those).
- Roughness — a single channel (grayscale): scratches, wear and wet patches = locally different roughness.
- Metallic — a single channel, usually almost binary (a mask of "where the metal is").
- Normal map — fine relief without geometry (see "an index instead of data": the detail lives in the texture, not in polygons).
- + AO, height, and sometimes a switch to the specular-glossiness workflow (an alternative to metallic-roughness).
All of this is computed in a shader per pixel, usually in a deferred pipeline: first the geometry writes albedo/normal/roughness/metallic into G-buffers, then lighting is computed per pixel from them — the cost grows with the number of lights, not the number of objects. It is exactly this combination (PBR materials + deferred + HDR + tone mapping) that produced "the modern look". The business consequence: materials became portable libraries — Quixel Megascans, Adobe Substance — and a three-person studio takes AAA materials off the shelf, because PBR makes them composable.
ML / AI (your domain): a BRDF is an analytic, differentiable prior, and that is a direct bridge into modern rendering ML. Differentiable rendering and NeRF / 3D Gaussian Splatting put a physical reflection model (often the same microfacet BRDF) inside the training loop and optimize materials/lighting by gradient — "inverse rendering". This is the argument of a physics-based prior vs a fully learned function: a baked-in BRDF = less data and guaranteed generalization to new lighting (exactly the way PBR transfers between scenes), as with physics-informed networks (PINNs). And "physically meaningful axes instead of a pile of knobs" = good feature/latent design: a disentangled representation (albedo / lighting / geometry kept separate) generalizes, entangled parameters do not. The BRDF's energy conservation ⇄ normalizations and constraints that keep the output in a valid range.
Graphics / simulation: one physical material model transfers between rasterization, ray tracing and path tracing with no re-authoring — one asset, any renderer.
Engineering in general: parameterize a system by invariants (physical units, dimensionless numbers) rather than by numbers that are convenient right now — then the config transfers between environments; "hardcoded for prod" = a pre-PBR material that breaks when conditions change.
The principle: the right axes matter more than the number of knobs. A parameterization that matches reality makes transfer, composition and generalization free; fitting to current conditions does not.
Best moment: set roughness to 0 and sweep metallic 0→1 — you will see a dielectric (a diffuse ball with a white highlight) turn into polished colored metal with no diffuse. Then drag roughness 0→1 — the sharp highlight smears out into a matte surface.
If PBR is "physically correct", why is it still an approximation (Schlick, GGX) rather than real optics?
Why is metallic almost binary? Aren't there "semi-metals"?
Why is roughness squared (α = roughness²)?
Why did pre-PBR metal look like "painted plastic" under different lighting?
PBR promises "one material under any light" — where does it still lie?
- Brent Burley, "Physically-Based Shading at Disney" (SIGGRAPH 2012) — the primary source of the Principled BSDF, short and clear.
- "Real-Time Rendering" (Akenine-Möller et al.), chapter 9 — microfacet BRDFs, Fresnel and GGX done rigorously.
- "Physically Based Rendering" (Pharr, Jakob, Humphreys) — pbr-book.org, the whole offline reference free.
- LearnOpenGL → the PBR section (theory + lighting) — the most approachable code tutorial.
- Substance / ambientCG / Quixel Megascans — material channels and ready-made libraries, hands on.
- Module 5, "PBR — the era's quiet revolution" (
05-hd-era-indie-revolution-2005-2012.md).