Stamp per-segment-data presence flags on the geometry's userData.
The fixed 6-texel layout always carries the texel5 slots (identity
fills when absent), so "does this node have real colormap scalars /
a real alpha column?" is not readable off a geometry attribute —
supportsScalarColormap('lines', …) reads hasScalars, and the
commit's material sync pushes hasElementAlpha into the material's
uHasElementAlpha gate (volumetric w(a) map). Refreshed on EVERY
write (pool geometries are reused across tenants; a presence flip
must not leak the previous tenant's stamp — the texel writer already
restores the identity fills). Shared by the non-pool paths and the
pool adapter.
Stamp per-segment-data presence flags on the geometry's userData. The fixed 6-texel layout always carries the texel5 slots (identity fills when absent), so "does this node have real colormap scalars / a real alpha column?" is not readable off a geometry attribute —
supportsScalarColormap('lines', …)readshasScalars, and the commit's material sync pusheshasElementAlphainto the material'suHasElementAlphagate (volumetric w(a) map). Refreshed on EVERY write (pool geometries are reused across tenants; a presence flip must not leak the previous tenant's stamp — the texel writer already restores the identity fills). Shared by the non-pool paths and the pool adapter.