Thanks so much! That’s basically my favorite thing to hear. :) We spent a ton of time ironing out the bottlenecks for huge projects. CAD users are notorious for pushing products as hard as possible. A few things we did:
The C++/WASM engine owns the model, selection and WebGL2 renderer on one thread, so nothing is copied back and forth on every edit. We use multithreading, SIMD, the works...
For instance, we wrote our own tessellator to replace OpenCASCADE’s mesher, and it only re-meshes the faces that changed. A plate with 2,500 holes meshes in 127 ms instead of about 10 s.
Solids are batched into a few draw calls, and repeated geometry is instanced automatically.
We hunt down anything quadratic. If I had to guess, that is what makes most CAD software interaction slow.
Thanks so much! That’s basically my favorite thing to hear. :) We spent a ton of time ironing out the bottlenecks for huge projects. CAD users are notorious for pushing products as hard as possible. A few things we did:
The C++/WASM engine owns the model, selection and WebGL2 renderer on one thread, so nothing is copied back and forth on every edit. We use multithreading, SIMD, the works...
For instance, we wrote our own tessellator to replace OpenCASCADE’s mesher, and it only re-meshes the faces that changed. A plate with 2,500 holes meshes in 127 ms instead of about 10 s.
Solids are batched into a few draw calls, and repeated geometry is instanced automatically.
We hunt down anything quadratic. If I had to guess, that is what makes most CAD software interaction slow.