Resolve the primitive for ONE lines node, with its size in hand — the
seam every production material build goes through (visual + picking,
both backends), so the two footprints agree by construction.
Precedence: ?linePrimitive= (explicit escape hatch) > forced policy
(capsule / quad setting) > the auto rule (quad when the greater of
this node's effectiveSegmentLoad and the installed scene load is ≥
AUTO_QUAD_EFFECTIVE_SEGMENTS, capsule otherwise).
The result must be resolved ONCE per node, at first material build,
and carried on userData.linePrimitive from then on (clones, the
node-factory retro picking pass, TSL graph rebuilds): the TSL wrappers
rebuild their graphs on camera-mode flips, and a re-run of a policy
that read live state could silently swap a node's primitive
mid-session.
Resolve the primitive for ONE lines node, with its size in hand — the seam every production material build goes through (visual + picking, both backends), so the two footprints agree by construction.
Precedence:
?linePrimitive=(explicit escape hatch) > forced policy (capsule/quadsetting) > theautorule (quad when the greater of this node's effectiveSegmentLoad and the installed scene load is ≥ AUTO_QUAD_EFFECTIVE_SEGMENTS, capsule otherwise).The result must be resolved ONCE per node, at first material build, and carried on
userData.linePrimitivefrom then on (clones, the node-factory retro picking pass, TSL graph rebuilds): the TSL wrappers rebuild their graphs on camera-mode flips, and a re-run of a policy that read live state could silently swap a node's primitive mid-session.