Post 105

The Shadow System That Never Was

Four thousand lines of virtual shadow map infrastructure leave the tree without a single pixel ever having missed them. A spring-clean release: the shadows you can see stay exactly as they are, and the shadow system that never rendered anything stops slowing down the ones that do.

Lux has carried a complete virtual shadow map subsystem for two months: a page table, a page allocator, a marking shader, a software page rasteriser, feature probes, benchmarks, the lot. Sixteen files of genuinely respectable engineering with one shortcoming, which is that nothing ever called it. No pass was ever registered, no page was ever rendered, no pixel was ever shaded by it. It was a cathedral with no road leading to it.

Meanwhile the shadows that actually ship grew up around it. The cascade sun shadows survived a 48-direction interrogation, point and spot lights got their cube atlas with budget rotation, and the whole stack got six times faster last release. Every one of those changes had to file past the parked system’s luggage: two fields riding the orchestrator’s inputs into every test and benchmark in the subsystem (one of which briefly broke the build last week), a capability probe for a path that could not be taken, and a documentation claim that the marking pass was live, which it was not.

So this release it all leaves. The decision is recorded, the rationale is recorded, and the stale documentation claim is corrected. When shadows mature to the point where virtual shadow maps earn their keep, the design gets re-derived against the renderer as it exists then, not as it looked in April.

What it buys you

Nothing visible, which is the point. Your shadows render exactly as they did yesterday, from the same code, now with several thousand fewer lines standing between it and the next improvement.

← All posts