The Case of the Vertical Floor
A reported lighting collapse turns out to be a detective story: a test floor that had been standing on edge the whole time, a patch loader that swallowed typos, eleven bounce-light nodes that never existed at runtime, and one real shadow bug fixed at the end of it. Sunlight now survives every compass direction.

An audit had flagged something alarming: directional lighting allegedly collapsed across half the compass. A noon sun lit a test floor at a fraction of the strength of a north-facing one, and shadows vanished with it. Cascade shadow maps were exonerated by the original investigators; the shading maths stood accused. So we built the instrument that should exist anyway, a sweep that renders a sphere over a floor under forty-eight sun directions and checks each against the textbook cosine law, and pointed it at the renderer.
The renderer passed. All forty-eight directions, within physics, both material models. Which left an awkward question about the original evidence.
The whodunit
The audit’s test scenes were reconstructed and the floor examined. It was vertical. The fixture had fed the rotation node minus-1.5707963 radians, but that pin takes degrees, so the “floor” had rotated a degree and a half and spent its entire career standing upright like a billboard. A wall, lit face-on by a north sun and edge-on by a noon one, reproduces every number in the report exactly. The same fixture also set a field-of-view pin that does not exist on the camera node, and the patch loader accepted both without a murmur. The lighting was never broken; the laboratory was.
So the laboratory got fixed. The loader now refuses unknown pin names with a warning that lists the pins that do exist, and a new corpus gate insists every shipped patch loads without a single complaint. First run: thirty-seven dead pins across thirty-six patches, including a typo’d field-of-view on most of the flagship scenes, plus one genuine surprise: the entire bounce-light family (GIHybrid and ten siblings) had never been registered with the application at all. Eleven documented, tested nodes, invisible since the day they were written, now actually in the node browser.
The real bug at the bottom of it
The sweep, now trustworthy, found one thing the audit had not: with the sun roughly behind the camera at low elevation, cast shadows genuinely disappeared, and the floor broke out in striped acne. The cause was in the cascade fitting after all, just not where anyone had looked: each shadow cascade fitted its depth range only to its own slice of the view, so an occluder standing nearer the sun than a given slice was silently clipped out of that slice’s shadow map. Point the sun along the camera axis and every object is exactly that occluder for the cascade behind it.
Each cascade now extends its range toward the sun far enough to cover the visible scene, with a hard cap so grazing light does not bleed shadow precision (the no-peter-panning gate caught the uncapped version red-handed, twelve pixels of floating shadow). Shadows now attach at every compass direction, the acne is gone with no bias retuning, and the forty-eight-direction sweep stands guard in the suite permanently.
What it buys you
Sunlight you can aim anywhere. Light a scene from behind the camera, straight down, or any awkward angle in between, and the shadows stay put. Add eleven bounce-light nodes you technically owned all along, now reachable, and a patch loader that tells you about typos instead of quietly agreeing with them.