How a surface redistributes light

BRDF lobe explorer

The BRDF answers one question: light arrives from ωi — what fraction leaves towards ωo? It is bidirectional, so the answer changes when you move either direction, which is exactly what a static picture of a lobe cannot show. Drag the incoming ray and watch all three panels respond at once.

The lobe, in the plane of incidence
Drag the incoming ray
incoming ωi surface normal mirror direction the lobe: how much leaves each way
The same lobe in 3D
Drag to rotate

The distance from the origin in any direction is the value of the BRDF for that outgoing direction. A perfect mirror is a spike; a Lambertian surface is a hemisphere of constant radius.

What it looks like

The same BRDF evaluated per pixel over a sphere, lit from the direction you are dragging. This is the appearance the lobe on the left predicts.

Incident angle θi
Peak outgoing direction
Peak BRDF value
Energy reflected ∫f·cosθ dω
Controls the surface
-48°
0.28
0.85
0.25

Roughness controls the Phong exponent. At 0 the glossy lobe collapses towards the mirror spike; at 1 it spreads out until it is almost indistinguishable from diffuse — which is the notes' point that glossy is a combination of the two, sitting on a dial rather than being a third thing.

what this model says

Why the energy readout matters. The notes call the BRDF a probability distribution, and the constraint that follows is that a surface cannot reflect more light than it receives: ∫ f·cosθoo ≤ 1 for every incoming direction. Push reflectivity to 1 and the readout sits just under 1 — a perfect, lossless reflector. Anything above 1 would be a surface that manufactures light, and in a path tracer that shows up as an image which gets brighter the longer you let it run instead of converging. Real BRDFs also obey reciprocity: swap ωi and ωo and the value is unchanged, which is what makes it legal to trace paths backwards from the camera at all.