cad-editor/docs
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Hakan Seven a994a148fe perf(render): batch solid meshes, fix per-pick freezes on heavy 3D models
Opening / navigating a heavy 3D DWG (e.g. a BIM model with ~10k ACIS solids)
was effectively frozen. Several independent costs, all addressed here:

- Face3D edge/fill buffers were re-uploaded on every camera move (keyed on
  camera_generation). They are world-space and selection-independent, so gate
  them on (geometry_epoch, fill_mode) instead — a pan no longer re-walks every
  wire.
- Solid meshes were drawn one buffer + one draw call per solid (~10k draws/
  frame), which strangled the GPU front end. Concatenate every solid's LOD0
  into a few large buffers (split only to stay under the 256 MB buffer cap) and
  draw the whole set in a handful of calls. Built once per geometry epoch, so
  selection / hover never re-pack it.
- Selection / hover highlight is now a small tinted overlay of just the picked
  solids, drawn last with an Always-depth pipeline so it shows on top even when
  the solid is occluded — instead of re-tinting and re-uploading all meshes.
- Hover / pick hit-testing scanned every triangle of every solid each move
  (seconds on a heavy model). Add a 3D-AABB screen-rect broad phase
  (MeshLodSet now carries z_aabb) and reuse the renderer's cached expanded mesh
  set, so picking is O(solids) cheap projections plus the few solids actually
  under the cursor.
- Block-internal hatch hit-testing exploded every INSERT on every hover.
  Cache the result per geometry epoch and skip blocks that contain no hatch.
- Curved-surface (cone/sphere/torus) tessellation tolerance is now radius-
  relative (CURVE_REL_TOL) so a cylinder's facet count is size-independent and
  matches the circle/arc wire tessellation, instead of exploding on large radii.

Also adds docs/tessellation.md mapping every EntityType to its tessellation
path (truck B-rep vs truck curve topology vs direct).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 22:46:29 +03:00
..
automation feat(automation): local TCP socket transport for --serve 2026-06-18 01:54:03 +03:00
plugin-template Initial commit 2026-06-25 00:01:36 +03:00
plugin-template-v2 Fix 5: Allow backward-compatibility and add plugin-template-v2 2026-06-25 00:02:17 +03:00
issue-78-comment.txt Add demo_plugin and plugin host integration tests 2026-06-09 13:52:15 -04:00
issue-78-reply.md Add plugin host architecture and Storm Sewer add-on package 2026-06-09 13:41:21 -04:00
native-vs-web.md docs: document native vs. web (wasm) differences 2026-06-17 04:44:12 +03:00
pane-grid-migration.md docs: plan for migrating model tiles to iced pane_grid 2026-06-18 23:53:52 +03:00
plugin-architecture.md Adding timeout protection to host from stuck runner 2026-06-26 10:10:56 +02:00
PR-plugin-host.md Add demo_plugin and plugin host integration tests 2026-06-09 13:52:15 -04:00
tessellation.md perf(render): batch solid meshes, fix per-pick freezes on heavy 3D models 2026-06-30 22:46:29 +03:00