What registerSkinningPipeline() installs: a factory the renderer calls
once per device, on the first skinned draw — never at initialize, so a
scene with no skinned mesh issues the byte-identical GPU sequence it always
did (the RFC's acceptance gate), and never per frame.
create constructs the colour pair (unlit + lit). It compiles nothing
itself — pipelines compile lazily on the first draw of each variant — but
it may throw; the renderer catches it (§61 forbids a frame from throwing),
warns once, and skins nothing on that device.
What
registerSkinningPipeline()installs: a factory the renderer calls once per device, on the first skinned draw — never at initialize, so a scene with no skinned mesh issues the byte-identical GPU sequence it always did (the RFC's acceptance gate), and never per frame.createconstructs the colour pair (unlit + lit). It compiles nothing itself — pipelines compile lazily on the first draw of each variant — but it may throw; the renderer catches it (§61 forbids a frame from throwing), warns once, and skins nothing on that device.