Two ways to put a lobe on a wall
Assumes A lobe takes colour out of a bounce, A mixture in the variable nobody named and Paint is not a filter.
A model can be built two ways that look equally reasonable, and here the two give answers of opposite sign. Neither is a numerical error, and only one of them is a decision anybody makes deliberately.
The claim
Whether a specular lobe is taken out of the diffuse body or added beside it decides the sign of what gloss does to a room’s colour, and the second is what happens when nobody decides.
- Taking it out: chroma falls from 19.69 matt to 18.71 at an eggshell finish. More light, less colour.
- Adding it beside: chroma rises from 19.69 to 21.57 at the same finish. More light, more colour.
- The gap at the glossy end is 2.87 units of chroma, which is larger than either construction’s own departure from matt.
- And the second is the default in a great deal of software, because a microfacet lobe and a Lambertian albedo are usually specified as independent parameters.
The two constructions say different things about the same photons. A painted surface returns light two ways: at the interface between the air and the binder, and out of the pigment layer after scattering. The question is what the two have to do with each other.
Taking the lobe out of the body says the interface reflects a fraction of what arrives, and only the remainder enters the paint. If the interface returns nine per cent, the pigment sees ninety-one per cent, and the body return is ninety-one per cent of what it would have been. Total reflectance is conserved and the two returns are competing for the same photons.
Adding it beside says the body returns ρ/π and the interface returns its lobe, independently. Total reflectance is ρ plus the lobe’s albedo, which for a rough dielectric is a few per cent above ρ. The two returns are not competing.
The first is what a surface does. Photons reflected at a boundary do not also enter the material. The second is what a shading model does when its diffuse albedo and its specular lobe are separate inputs, which is how nearly every real-time and offline shading model is parameterised — and is the same separation an artist’s three controls impose on a physical process that has one.
Why the sign flips
The reason the two disagree about the direction rather than merely the magnitude is worth spelling out, because it is not obvious.
Under the conserving construction, the wall’s total return is unchanged and its composition shifts: nine per cent of a coloured return is replaced by nine per cent of a white one. Replacing colour with white is desaturation, unambiguously.
Under the adding construction, the coloured return is unchanged and a white one is added on top. That also desaturates in the sense of lowering the ratio of coloured to total — but the total is now larger, so the surface is brighter as well, and in CIELAB a brighter version of a slightly-less-saturated colour can have a higher chroma because chroma is measured after a cube-root lightness scaling that compresses the bright end.
Running the arithmetic: at roughness 0.15 the conserving construction gives lightness 54.19 and chroma 18.71; the adding construction gives 56.36 and 21.57. Both are lighter than matt’s 50 and only one is more colourful.
A ratio and a difference of coordinates behave differently under a change of scale, which is a fact about CIELAB rather than about paint, and it is what turns a difference of magnitude into a difference of sign.
Which one is right, and how confidently
The conserving construction is right for a dielectric interface over a scattering medium, and the confidence comes from a place this collection has been before.
Saunderson’s relation is the standard account of the paint interface and it is not a sum. What emerges from a painted surface is
R = k₁ + (1 − k₁)(1 − k₂) Rᵢ / (1 − k₂ Rᵢ)
with k₁ the fraction reflected on the way in and k₂ the fraction reflected back down on the way out, and Rᵢ the internal reflectance. The (1 − k₁) factor is exactly the conserving construction: what enters the paint is what did not reflect at the boundary.
The previous round measured what ignoring that costs and found three to eight ΔE₀₀ on ordinary paint mixtures, from a convention nobody ever stated. This is the same relation appearing in a transport solver rather than in a mixing calculation, and the same convention is at stake.
So the physics is settled and the modelling practice is not, and the gap between them is what this essay measures.
Why the wrong one is the default
Nobody chooses the adding construction. It arrives by omission, and the omission is structural.
A shading model is parameterised for an artist: a base colour, a roughness, a specular intensity. Those are three independent controls and making them dependent — so that raising the specular lowers the base — makes the interface harder to use and produces the complaint that changing one knob changes something else.
The consequence is that most shading models are not energy-conserving by default, and the graphics literature has spent twenty years adding conservation back in. Modern physically-based shading models do couple the two, usually by scaling the diffuse term by one minus the Fresnel reflectance, which is the conserving construction. Older ones and simpler ones do not.
The default is the one that is easier to author, not the one that is right, and a colour computed through a non-conserving model is wrong in a direction that depends on the roughness.
The size of the error is the gap between the two curves: 2.87 units of chroma at an eggshell finish, falling to 1.16 at nearly matt. In ΔE₀₀ the two constructions’ departures from the radiosity answer are 6.999 and 4.891 at roughness 0.15, so the modelling choice is worth about two units on top of the effect it is modelling.
The general shape of the error
There is a category of modelling error this belongs to and naming it is useful, because it recurs.
A physical process takes a resource and divides it among several outcomes. A model represents each outcome with its own parameter. Unless something couples the parameters, the model can produce more of the resource than went in — and the error is not detected, because each parameter individually is in a plausible range.
Energy is the usual resource. It is also the easiest to check, because the total is bounded and the check is one inequality. The check does not appear to have been made in most shading models before about 2010, and it is now standard.
What is less standard is checking the spectral consequence, which is what this essay is about. A non-conserving model that is only a few per cent over on energy can be substantially wrong on colour, because the excess has a different spectrum from the rest and a small amount of a different spectrum is a large change to a colour.
An energy check bounds the brightness error and says nothing about the colour error, and the second can be several times the first.
Not everything the solver says depends on the construction, and separating what does from what does not is worth doing before either is used.
The directional spread does not depend on it. Under either construction the five directions span about two colour differences, because the spread is about where the lobe sends light rather than about how much of it there is. A model with the wrong energy accounting still gets the geometry right.
The chroma sign does depend on it, completely, as this essay is about.
And the departure from radiosity depends on it in magnitude but not in sign. Both constructions say a glossy room differs from a matt one by several colour differences; they disagree about which way the colour moves.
So a reader with a non-conserving renderer can trust its direction-dependence and should not trust its saturation, which is a more useful verdict than either “it is wrong” or “it is fine”.
What this collection does
The conserving construction is the default everywhere in this round’s machinery, and the non-conserving one is available as an option so that the comparison can be drawn.
That is a deliberate arrangement rather than a convenience. A collection that only implemented the right answer could state that the wrong one is wrong and could not say by how much, and by-how-much is the useful part — it is what tells a reader whether their own renderer’s behaviour matters.
The same arrangement is used elsewhere here. The three-channel rendering shortcut is implemented properly rather than as a strawman so that its error is a measurement rather than an assertion, and the adaptation routes are all available so that the gap between them is a number.
Implementing the alternative one disagrees with is how a disagreement becomes a measurement, and it costs one option flag.
Repeating the comparison from a third direction confirms that the two decisions do not interact. The conserving construction desaturates from the front and from the ceiling and saturates towards the coloured walls, and the adding construction saturates from all three — the pattern is the direction’s and the offset is the accounting’s.
That spectrum is the accounting error made visible. The two constructions deliver different total power to the floor — the adding one more, by about the lobe’s albedo — and a renderer that is not energy-conserving is brighter as well as more saturated, which is the combination most likely to be mistaken for a stylistic choice.
What was computed, and how
The conserving construction computes the lobe’s directional-hemispherical albedo for each incoming direction, by quadrature over the hemisphere at forty by ninety-six, and scales the body term by one minus that albedo. The albedo depends on the incoming direction, so the scaling is per incoming patch rather than a constant.
The non-conserving construction omits that scaling and nothing else. The two runs share every other line of the solver, the same form factors, the same lobe, the same reflectances and the same lamp.
The assertion the figure carries requires the two constructions to disagree about the sign of the chroma change against matt — one above and one below. That is a stronger statement than a difference in magnitude and it is the one worth gating, because a difference in magnitude would be a tuning matter and a difference in sign is not.
The same choice, one level down
There is a second place the same decision arises inside this solver and it is worth naming, because it was nearly missed.
The lobe’s albedo depends on the incoming direction — a grazing ray reflects far more at a dielectric boundary than a normal one — so the fraction taken out of the body is not a constant. Treating it as one would be a third construction, sitting between the two above, and it is what a shading model with a scalar “specular level” parameter does.
Getting that wrong has a directional signature rather than a spectral one: it under-removes at grazing incidence and over-removes at normal, so the body’s contribution acquires a spurious angular dependence. In a room where most inter-patch geometry is oblique, that is a systematic bias rather than a wash.
The solver computes the albedo per incoming patch and pays for it — it is the most expensive part of the geometry — and the alternative was tried and discarded. The cheap version of a coupling is usually a coupling to the wrong variable, which is worse than no coupling in a specific and hard-to-notice way.
There is a fourth construction nobody uses and it is worth mentioning because it bounds the family. A surface could be modelled with the interface’s return taken out of the body and the body’s return re-entering the interface on the way out, which is Saunderson’s full relation with both terms. That is the physically complete single-interface model and it is not in this solver.
Its effect would be to raise the body return, since k₂ traps light inside the paint and gives it a second chance to escape after another encounter with the pigment — which makes the body more saturated rather than less. So the full model’s desaturation would be somewhat smaller than the conserving construction’s, and the sign would not change. That is the honest bound: the conserving answer here is the desaturation with one of Saunderson’s two terms in it, and the missing term works against it.
Where the model stops
The conserving construction here scales the body by one minus the lobe’s albedo for the incoming direction, which handles the light on the way in. Saunderson’s relation also has a term for light reflected back down at the boundary on the way out, which raises the internal reflectance and is the larger of the two — k₂ is about 0.6 where k₁ is 0.04.
That second term is not in this solver. Including it would raise the body return somewhat and change the numbers, and it would not change the sign of anything, because it acts on the body term rather than adding a neutral one.
And the lobe is dielectric and single-scattering, so its albedo is a few per cent. A rougher surface has multiple scattering between microfacets which raises the effective albedo and is not modelled.
A last note on why this was worth an essay rather than a footnote. The two constructions are not two approximations of different quality; they are two different physical claims, and each is exactly right about a different object. Adding beside is correct for a surface with a genuinely separate specular layer that does not shadow the body — a clear coat over a metallic base, say, or a display’s front glass. Taking out is correct for a single interface over a scattering medium, which is what most paint is.
So the answer to “which construction” is “which surface”, and a renderer that offers one is describing a class of materials rather than making an error. A model is a claim about what can be known, and a shading model with independent diffuse and specular parameters is claiming that its materials have independent diffuse and specular layers.
The generalisation
The habit is about parameters that ought to be coupled and are not.
A model with several independent parameters describing one physical process usually has a constraint among them that the parameterisation does not enforce. The constraint is invisible in the interface, it is satisfied by the world automatically, and it is violated by any setting a user picks freely.
The way to find one is to ask what conservation law the process obeys and whether the parameters can violate it. Energy is the common one; mass, probability and area are others; and in colour, the constraint that a reflectance lies between zero and one is a third that models violate constantly.
The failure mode is to check the constraint on the quantity it is stated in and stop. A model that conserves energy can still be badly wrong about colour, because energy is a scalar and colour is not, and a small violation with the wrong spectrum is worth more than a large one with the right spectrum.
One more consequence for reading other people’s numbers. A published rendering comparison that reports colour differences between a diffuse-only solution and a full one is reporting the sum of two things: the physical effect of the lobe, and whatever its shading model’s energy accounting does. Those are 4.89 and 2.11 ΔE₀₀ respectively at an eggshell finish in this room, so the accounting is a third of the total.
That means such comparisons are not portable between renderers, and the non-portability is invisible because both renderers are described the same way. The same hazard applies to any published number whose arithmetic is unstated, and here the unstated part is one line in a shader.
Who found it, and when
Saunderson published his relation in 1942, for the paint industry, and it has been standard in colorant formulation ever since — which is why paint mixing is done in the internal variable rather than the measured one.
Energy conservation in shading models became a stated requirement in graphics through the 2000s, driven by the move to physically-based rendering, and the standard repair — scaling the diffuse term by one minus the Fresnel term — is exactly the conserving construction here, arrived at independently of the paint industry that had been using it since 1942. Its adoption was motivated by artefacts in brightness rather than by anything about colour.
Where the ladder goes next
The solver has a boundary and it is a sharp one. A patch stops being a point when the lobe is narrower than the cone it subtends, and below that the answers are not imprecise but unphysical.
What this makes readable
Essays that name this one as a prerequisite.
Named alongside this one
Essays reaching for the same objects. Nobody chose these; they are what the index of named objects makes visible.
- A gloss finish takes colour out of the whole room albedo · bidirectional reflectance · chroma · fresnel · interreflection · specular
- A tenth of the return arriving white albedo · chroma · fresnel · interreflection · modelling assumption · specular
- The floor is a different colour from the door albedo · bidirectional reflectance · interreflection · modelling assumption · specular
- A dark wall pays for a finish chroma · fresnel · interreflection · specular
- A finish adds colour only to a daylight meter chroma · fresnel · interreflection · specular
- An open room hands over sooner bidirectional reflectance · chroma · interreflection · specular
What links here
Every essay whose body links to this one.
The objects this essay names
Each one links to every other essay that touches it.
AlbedoBidirectional reflectanceChromaFresnelInterreflectionKubelka munkModelling assumptionReciprocitySpecularStructural choice