Post 111

The Fine Print Audit

Every material node's documentation now survives cross-examination: a permanent gate bans claims of physics the shader doesn't run. Brushed metal also learns to bend its environment reflections along the grain, replacing a flat brightness fudge.

Yesterday’s release made the BSDF lobes real. Today’s makes the paperwork match, all sixteen nodes of it, with a test that keeps it matched.

Claims, meet evidence

The audit compared every node description against the code that executes. The diffuse node advertised Oren-Nayar rough-surface scattering; the shader runs Lambert. The dielectric promised an integrated refracted lobe; refraction needs a transparency render path that doesn’t exist yet. The layer-add node warned it was only for emissives, which stopped being true the moment it learned to carry sheen and coat groups properly. And the MaterialGraph terminal now states plainly what kind of compiler it is: one that flattens your lobe tree into a single parameter set per lobe. Real stacked-layer light transport is a future epic; pretending otherwise in a tooltip helps nobody light a stage.

The interesting part is the enforcement. A new gate walks every registered material node and fails the build if any description contains one of the documented over-claim phrases: TIR bookkeeping, Airy reflectance, Beer-Lambert extinction, the lot. The phrases are exact and affirmative, so honest future-work notes don’t trip it. When someone actually implements one of these, they delete its phrase from the ban list in the same commit that lands the physics, and the test enforces that order of operations forever.

Brushed metal, bent light

One claim got implemented instead of deleted. Anisotropic materials were “handling” environment reflections by dimming them twenty percent, which is not what brushed metal does; brushed metal smears its reflections along the grain. The shader now bends the reflection vector along the anisotropy axis before sampling the environment, the standard bent-normal construction, with the tangent frame shared with the direct-light path.

Honesty compels a footnote, and this is the post for footnotes: you can’t see the streaks yet. Our environment prefilter currently crushes most of the contrast out of reflections at any roughness, a separate confirmed bug with its own upcoming fix. The bend is correct, costs nothing when anisotropy is zero, and the test patches for the streak are already in the repo, waiting for the prefilter fix to give them something to streak. When reflections sharpen up, brushed metal will already know what to do with them.

← All posts