docs(rendering): drop completed roadmap phases (1.4 / 3.3 / 3.4)

Phase 1.4 (hatch/image scissor), Phase 3.3 (hatch LOD), and Phase 3.4
(mesh LOD) landed in commits fbbac42, e7675be, and 8c08ae1. Removed
their roadmap sections and pruned the Implementation Order / Key Files
/ Success Metrics tables to reflect what's still outstanding (Phase 2
spatial index, Phase 4 GPU compute cull + Hi-Z).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Hakan Seven 2026-05-15 23:34:42 +03:00
commit 41cf2ffe11

View file

@ -12,18 +12,6 @@ Current pipeline order:
---
## Phase 1 — Viewport Bounding-Box Culling
**Goal:** Skip CPU upload and draw calls for entities outside the camera view.
### 1.4 Scissor Rects (Partial — Hatch/Image still pending)
Viewport scissoring for wires already exists (`wire_pixel_scissors` / `WireModel.vp_scissor`).
Extend same logic to hatch and image passes so paper-space viewport content is clipped at the
GPU stage instead of overdrawn.
---
## Phase 2 — Spatial Acceleration Structure
**Goal:** O(log n) visibility queries instead of O(n) linear scan.
@ -60,41 +48,6 @@ let candidates = scene.quadtree.query_rect(view_aabb);
---
## Phase 3 — Level of Detail
**Goal:** Reduce geometric complexity when entities are small or far away.
### 3.3 Hatch LOD — Density Reduction
At low zoom, hatch line spacing appears smaller than 1px. Options:
- **Solid fill substitution:** replace hatch pattern with solid color below a density threshold.
- **Skip hatch entirely:** at very low zoom, hatches are not readable; skip the hatch pass.
Threshold: `hatch_spacing_px = hatch_spacing_world * px_per_unit`. If `< 2.0`, use solid fill.
### 3.4 Mesh LOD — Tessellation Resolution
`truck_tess.rs` / `solid3d_tess.rs` tessellate ACIS solids at a fixed tolerance. Switch to
multiple precomputed LOD meshes:
```rust
pub struct MeshModel {
pub lod: [Option<GpuMesh>; 3], // [high, mid, low]
}
```
| LOD | Tolerance | Use when projected diagonal |
|-----|-----------|------------------------------|
| 0 | 0.01 mm | > 200 px |
| 1 | 0.5 mm | 50200 px |
| 2 | 5.0 mm | < 50 px |
Build LOD 0 eagerly; build LOD 1 & 2 lazily in a background thread (already have
async tessellation pattern from `truck_tess.rs`).
---
## Phase 4 — GPU-Side Culling (Advanced)
**Goal:** Offload culling to the GPU; zero CPU cost for large entity counts.
@ -136,10 +89,7 @@ Relevant only for perspective (3D) mode with many overlapping solids.
## Implementation Order
```
Phase 1.4 Scissor for hatch/image low complexity
Phase 2.1 Quadtree for 2D medium complexity, scales 2D docs
Phase 3.3 Hatch LOD low complexity
Phase 3.4 Mesh LOD high complexity, background thread
Phase 2.2 Octree for 3D medium, needed for dense 3D
Phase 4.1 Indirect draw + GPU cull high complexity, defer
Phase 4.2 Hi-Z occlusion high complexity, 3D only, last
@ -151,10 +101,6 @@ Phase 4.2 Hi-Z occlusion high complexity, 3D only, last
| File | Change |
|------|--------|
| `src/scene/mesh_model.rs` | Add `Aabb3`, LOD mesh array |
| `src/scene/hatch_model.rs` | Add `Aabb2` field |
| `src/scene/image_model.rs` | Add `Aabb2` field |
| `src/scene/truck_tess.rs` | Multi-resolution mesh tessellation |
| `src/scene/mod.rs` | Quadtree/octree; LOD epoch tracking |
| `src/scene/pipeline/mod.rs` | Cull hatch/image entities before upload loops |
| `src/shaders/cull.wgsl` | New — Phase 4 compute culling shader |
@ -164,7 +110,6 @@ Phase 4.2 Hi-Z occlusion high complexity, 3D only, last
## Success Metrics
- **Phase 2 target:** Pan/zoom frame cost O(visible) not O(total).
- **Phase 3 target:** Complex solid scene at far zoom → mesh triangle count < 10% of full detail.
- **Phase 4 target:** GPU-cull overhead < 0.5 ms for 1M entity scene.
---