Lines data-processor concern extracted from scene-loader.ts.
Three pure-ish functions for line projection and GPU commit. They
take the SceneLoader's per-call inputs as parameters (rootGroup,
gpuBufferPool, updateVersion) instead of reading them off this, so
the lines pipeline is testable in isolation and the SceneLoader
facade stays small.
Behavior summary:
tolerance computation delegates to tolerance-computer,
extend_to_all flips covered dimensions to infinite tolerance,
worker projection is used when useWebWorkers && segmentCount > 1000,
per-vertex scalars (colormap mode) ride the worker payload too —
forwarded as a transferable typed-array and interpolated via
interpolate_scalars_batch on the worker side,
the non-worker path and worker-UNAVAILABLE failures (the pool has no
worker at all) run the shared dispatcher in-process
(workers/data-worker/projection/in-process); any other failure —
a rejection from the worker, a timeout — propagates instead, since the
fallback shares the kernel and would only block the UI thread,
first-update info logs are gated by updateVersion <= 1,
commits use the GPU buffer pool when enabled, otherwise
updateInstancedLinesMesh.
Lines data-processor concern extracted from
scene-loader.ts.Three pure-ish functions for line projection and GPU commit. They take the SceneLoader's per-call inputs as parameters (rootGroup, gpuBufferPool, updateVersion) instead of reading them off
this, so the lines pipeline is testable in isolation and the SceneLoader facade stays small.Behavior summary:
tolerance-computer,extend_to_allflips covered dimensions to infinite tolerance,useWebWorkers && segmentCount > 1000,interpolate_scalars_batchon the worker side,workers/data-worker/projection/in-process); any other failure — a rejection from the worker, a timeout — propagates instead, since the fallback shares the kernel and would only block the UI thread,updateVersion <= 1,updateInstancedLinesMesh.