Project GSplats to 3D on a worker thread. Only when the pool has no worker
at all (WorkerUnavailableError) does it degrade to the in-process
dispatcher — the same projection kernel run on the main thread — rather
than a separate hand-written copy.
Every other failure propagates. A rejection that came back FROM the worker
would only reproduce the fault on the UI thread (the fallback shares the
kernel); a WASM trap there blocks the frame. A timeout means work the main
thread cannot afford either — a hung kernel or a genuinely-slow projection
re-run in-process blocks the frame at least as long again, and the pool has
already evicted the wedged worker, so a retry gets a fresh one.
Project GSplats to 3D on a worker thread. Only when the pool has no worker at all (
WorkerUnavailableError) does it degrade to the in-process dispatcher — the same projection kernel run on the main thread — rather than a separate hand-written copy.Every other failure propagates. A rejection that came back FROM the worker would only reproduce the fault on the UI thread (the fallback shares the kernel); a WASM trap there blocks the frame. A timeout means work the main thread cannot afford either — a hung kernel or a genuinely-slow projection re-run in-process blocks the frame at least as long again, and the pool has already evicted the wedged worker, so a retry gets a fresh one.
updateVersiongates the first-update info logs.