Mesh data-processor concern — the Mesh sibling of
data-processor-lines.ts / data-processor-gsplats.ts.
Runs the display-space projection: extract_3d_positions, the whole-triangle nD
cull, and the winding post-pass (data/mesh/projection.ts). Unlike its two
async siblings there is no worker RPC — mesh projects in-process, and for a
different reason than Points does.
Points runs in-process because its projection is memory-bound per update, so
offloading would pay transfer cost both ways for negligible compute savings.
Mesh runs in-process because it is whole-node resident, so its payload is ONE
large transfer rather than lines' many small ones — a genuinely different
benefit profile that should be measured before a worker is built for it, not
assumed. That keeps the measure-first performance doctrine intact rather than
copying the lines shape because it exists.
It is still async, because selecting the backend is (pickBackend may await
the WASM module's first load).
Mesh data-processor concern — the Mesh sibling of
data-processor-lines.ts/data-processor-gsplats.ts.Runs the display-space projection:
extract_3d_positions, the whole-triangle nD cull, and the winding post-pass (data/mesh/projection.ts). Unlike its two async siblings there is no worker RPC — mesh projects in-process, and for a different reason than Points does.Points runs in-process because its projection is memory-bound per update, so offloading would pay transfer cost both ways for negligible compute savings. Mesh runs in-process because it is whole-node resident, so its payload is ONE large transfer rather than lines' many small ones — a genuinely different benefit profile that should be measured before a worker is built for it, not assumed. That keeps the measure-first performance doctrine intact rather than copying the lines shape because it exists.
It is still
async, because selecting the backend is (pickBackendmay await the WASM module's first load).