What registerShadowPipeline() installs: a factory the renderer calls
once per context, on the first shadowed frame — never at initialize,
so a scene that never casts issues the byte-identical GL sequence it
always did, and never per frame.
Compiles the caster program on gl. May throw
SHADER_COMPILATION_FAILED (§89); the renderer catches it — §61 forbids
a frame from throwing — warns once, and skips the shadow pass on that
context.
What
registerShadowPipeline()installs: a factory the renderer calls once per context, on the first shadowed frame — never at initialize, so a scene that never casts issues the byte-identical GL sequence it always did, and never per frame.