cad-editor/src/scene
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Hakan Seven f39a2d3126 perf(render): unify model/paper/block spaces on one resident wire path
Model space held a full, camera-independent, un-culled wire set with a
stable content id, so pan/zoom re-drew without re-tessellating or
re-uploading and idle frames collapsed to a single blit. Paper did none of
that: the sheet was camera-keyed (full re-tess every pan/zoom), content
viewports re-baked per zoom step with their own frustum cull + LOD, and a
per-frame wire_force_nonce forced a GPU re-upload every frame AND poisoned
render_signature so paper never hit the single-blit scene cache.

Route every space through one Scene::resident_wires_for(block, anno, frozen):
the full, un-culled, LOD-free set per (block, ambient bg, anno, frozen) key,
held resident and stamped with a stable WIRE_CONTENT_GEN id. Model tiles,
BEDIT, the paper sheet (a thin border-drop + printable-area dressing over the
resident base) and paper content viewports all share it. When annotation is
inert (PSLTSCALE off and no annotative entity, cached per epoch) the per-
viewport scale is normalized away so every viewport reuses one tessellation.

Result: paper pan/zoom does zero re-tessellation and zero wire re-upload, and
paper now hits the single-blit scene cache exactly like model. Deletes
wire_force_nonce, the per-viewport height/view wire cache, and view_cull_aabb.
Tradeoff (deliberate, matches model): no cull/LOD anywhere.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 20:50:37 +03:00
..
cache feat(properties): make the Hyperlink field editable 2026-07-12 23:24:34 +03:00
convert feat(annotative): scale text/dims/tables/blocks at the annotation scale + editable property pickers 2026-07-12 23:16:44 +03:00
model fix(precision): keep typed hatch boundaries exact in f64 (#311) 2026-07-11 21:55:10 +03:00
pick fix(stretch): free crossing-window corners from Ortho, draw filled marquee (#291) 2026-07-10 13:32:32 +03:00
pipeline feat(web): render hatches on WebGL2 via a texture-backed renderer 2026-07-14 00:53:51 +03:00
text fix(text): grow the SDF glyph atlas instead of dropping glyphs (#347) 2026-07-12 11:36:33 +03:00
view perf(render): unify model/paper/block spaces on one resident wire path 2026-07-14 20:50:37 +03:00
annotative.rs feat(annotative): synthesize per-object contexts + editable UI 2026-07-13 22:38:29 +03:00
camera_ops.rs fix(dxf): stop writing a duplicate *Active viewport (#319) 2026-07-09 22:36:00 +03:00
entity.rs feat(block): BEDIT block editor as a dedicated space tab (#261) 2026-07-14 13:03:04 +03:00
group_layer.rs feat(ui): bulk layer on/off, lock, freeze, transparency + Ctrl+A (#236) 2026-07-03 16:06:10 +03:00
layout.rs feat(layout): reopen a drawing in the space it was saved in 2026-07-12 01:01:40 +03:00
mod.rs perf(render): unify model/paper/block spaces on one resident wire path 2026-07-14 20:50:37 +03:00
modify.rs fix(clipboard): paste copies dimensions correctly (#290) 2026-07-07 15:53:21 +02:00
mspace.rs feat(nav): turntable orbit, selection/cursor pivot, Shift+MMB rotate (#229) 2026-07-01 21:58:04 +03:00
page_setup.rs fix(io): resolve root named-objects dict robustly on foreign DWGs 2026-07-13 16:28:21 +03:00
paper.rs perf(render): unify model/paper/block spaces on one resident wire path 2026-07-14 20:50:37 +03:00
preview.rs fix(stretch): free crossing-window corners from Ortho, draw filled marquee (#291) 2026-07-10 13:32:32 +03:00
project.rs refactor: split four oversized files into submodule trees 2026-06-26 22:51:29 +03:00
selection.rs feat(properties): navigate polyline vertices from the panel 2026-07-08 17:53:05 +03:00