PrivateenabledPrivatearmedPrivatetearingPrivaterendererPrivatecameraPrivatetargetPrivategenerationPrivateactivationPrivatequeuePrivateobjectPrivatesourcePrivatewarmPrivatedrainPrivatevariantPrivatevariantPrivatestatsPrivate ReadonlywaitPrivate ReadonlycompilePrivate ReadonlydeferArm the manager and warm every reachable variant under root.
Resolves when the queue drains, or when the readiness budget
(WARMUP_READINESS_BUDGET_MS) elapses — whichever comes first. The budget
expiring is not a failure: the drain carries on afterwards, it just stops
holding the caller.
PrivateenqueueEnumerate the blend-mode variants of sourceMaterial and queue a keeper
compile for each variant no live keeper pins yet. Two dedupe levels: modes
of THIS source that land on the same program (e.g. additive/luminous
differing only in blend state) collapse to one keeper, and a variant an
identical material on ANOTHER node already owns is shared, not re-queued.
PrivateregisterPrivatequeuePrivateadoptThe owner of a shared variant went away while other nodes still use it: hand the keeper to one of them (a fresh clone from that node's material, queued for compile) so the program stays pinned for the survivors.
PrivatereleaseRelease sourceMaterial's variant registrations, transferring owned ones.
Snapshot of the warm-up counters (copied; safe to hand to probes).
PrivatesettlePrivateresolvePrivateclearPrivateattachPrivatedetachPrivatereleasePrivatestartPrivatedrain
The warm-up service itself — one instance per session (the module keeps the default one; the constructor's three injection points exist for tests).
Lifecycle: configure once per renderer, warmScene once the dataset is fully set up, scheduleObject for every node that gains or changes compile-time state afterwards, clear on scene replacement, context loss and disposal.