Repository navigation
Conversation
Scans of 100k+ vertices look up each vertex's nearest reference face in a WebGPU compute shader walking the reference's own BVH node buffer. The reading itself (distance, pseudonormal sign, facing limit, direction) is still resolved on the CPU in doubles on that face, so the map matches the CPU search. No WebGPU, an oversized reference or any GPU error falls back to the CPU BVH search unchanged.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The deviation map looks up each scan vertex's nearest reference face with a CPU BVH, which is the slow part on big scans.
Scans of 100k+ vertices now do that lookup in a WebGPU compute shader that walks the reference's own BVH node buffer (
src/core/deviation/gpuNearest.ts). The reading itself (distance, pseudonormal sign, facing limit, direction) is still worked out on the CPU in doubles on the face the GPU found, so the map matches the CPU search: in the tests the two differ by at most about 3e-6 mm. No WebGPU, a reference too large for the buffers, or any GPU error falls back to the CPU BVH search unchanged.src/core/deviation/gpuNearest.ts: the shader and its driversrc/core/deviation/surface.ts: the BVH laid out for the GPUsrc/core/deviation/deviation.ts,src/core/meshWorker.ts: use the GPU result when there is onetests/gpuDeviation.test.ts: GPU and CPU agree, fallbacks takenChecks:
npm run build: builtnpx vitest run --maxWorkers=8: passcheck-plugin-boundary,check-units: holdnpm run e2e:ci: all pass (e2e-patch-networkskipped, needs a real scan)