diff --git a/crates/bone-render/assets/icons_16.png b/crates/bone-render/assets/icons_16.png index 40594164b73d665a1b571d434e97dc7ba46c408d..8d22a655c8cf42504d2970c51a259183caff4b47 100644 GIT binary patch delta 12930 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 E0E2E0Jpcdz delta 11411 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 diff --git a/crates/bone-render/assets/icons_24.png b/crates/bone-render/assets/icons_24.png index abf3686c615bfdf8c34f2b1d270753ecab45e559..62ce24befeca2c9d79a3ce311c881291c1d4af1c 100644 GIT binary patch delta 23066 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≻z5ikPo-f(^ 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 C{w_=a delta 20365 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%0A^YXTDzF%`cvCe42ll$x5oA=c^o8Pbe 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 B6Sn{W diff --git a/crates/bone-render/assets/icons_32.png b/crates/bone-render/assets/icons_32.png index de305f6ebc1ad923407ad1c380395bab9416fc56..23cfc2cb80109825d13361729dc7d368dfe9fcfb 100644 GIT binary patch delta 36878 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 F69CaA`q}^h delta 32694 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

hYZ+iWw$@9N#&;R!<|DRfQb@g{fVf~o7 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 KpUXO@geCyXILP(@ diff --git a/crates/bone-render/src/atlas.rs b/crates/bone-render/src/atlas.rs index 87e7e01..e4b2602 100644 --- a/crates/bone-render/src/atlas.rs +++ b/crates/bone-render/src/atlas.rs @@ -15,7 +15,7 @@ pub struct AtlasGrid { } impl AtlasGrid { - pub const DEFAULT: Self = Self { cols: 7, rows: 7 }; + pub const DEFAULT: Self = Self { cols: 8, rows: 8 }; #[must_use] pub const fn new(cols: usize, rows: usize) -> Self { @@ -131,7 +131,7 @@ mod tests { #[test] fn default_grid_holds_every_icon() { - assert_eq!(AtlasGrid::DEFAULT.capacity(), 49); + assert_eq!(AtlasGrid::DEFAULT.capacity(), 64); assert!(IconId::COUNT <= AtlasGrid::DEFAULT.capacity()); } @@ -144,12 +144,12 @@ mod tests { GridCell { col: 6, row: 0 } ); assert_eq!( - grid.cell(IconId::CornerRectangle.tile()), - GridCell { col: 0, row: 1 } + grid.cell(IconId::ThreePointCornerRectangle.tile()), + GridCell { col: 1, row: 1 } ); assert_eq!( - grid.cell(IconId::CenterRectangle.tile()), - GridCell { col: 1, row: 1 } + grid.cell(IconId::ThreePointCenterRectangle.tile()), + GridCell { col: 2, row: 1 } ); } diff --git a/crates/bone-render/src/diff.rs b/crates/bone-render/src/diff.rs index 88b4f25..705e4a9 100644 --- a/crates/bone-render/src/diff.rs +++ b/crates/bone-render/src/diff.rs @@ -86,6 +86,11 @@ impl PixelDiffReport { pub const fn is_clean(&self) -> bool { self.over_threshold == 0 } + + #[must_use] + pub fn within_budget(&self, max_over_threshold: u64) -> bool { + u64::from(self.over_threshold) <= max_over_threshold + } } #[derive(Debug, thiserror::Error)] @@ -229,6 +234,24 @@ mod tests { assert_eq!(report.over_threshold(), 1); } + #[test] + fn within_budget_tolerates_a_capped_number_of_over_threshold_pixels() { + let a = vec![0_u8, 0, 0, 255, 200, 0, 0, 255]; + let b = vec![0_u8, 0, 0, 255, 50, 0, 0, 255]; + let report = run(extent(2, 1), &a, &b, PixelDiffThreshold::EXACT); + assert_eq!(report.over_threshold(), 1); + assert!(!report.is_clean()); + assert!( + report.within_budget(1), + "one mismatch is within a budget of one" + ); + assert!(report.within_budget(5)); + assert!( + !report.within_budget(0), + "a zero budget is the same as requiring a clean frame", + ); + } + #[test] fn tolerance_maps_to_threshold() { let t = Tolerance::new(8.0 / 255.0); diff --git a/crates/bone-render/src/lib.rs b/crates/bone-render/src/lib.rs index 23b0a77..9435500 100644 --- a/crates/bone-render/src/lib.rs +++ b/crates/bone-render/src/lib.rs @@ -24,7 +24,8 @@ pub use diff::{PixelDiff, PixelDiffError, PixelDiffReport, PixelDiffThreshold, P pub use gpu::{AdapterPolicy, BackendTag, Capabilities, Gpu, OffscreenContext}; pub use navigate::{DragModifiers, NavGesture, ViewportNavigator}; pub use pick::{ - EntityKindTag, PickAperture, PickId, PickIdError, PickIndex, PickQuery, PickedItem, Picker, + BodyKey, EntityKindTag, PickAperture, PickId, PickIdError, PickIndex, PickQuery, PickedItem, + Picker, SolidEdgeRef, SolidFaceRef, SolidPickTable, SolidVertexRef, }; pub use pipelines::{ ArcPipeline, ChromeInstance, ChromePipeline, ChromeTextPipeline, ConvexInstance, @@ -37,7 +38,7 @@ pub(crate) use pipelines::{ pub use preview::{PreviewArc, PreviewCircle, SketchPreview}; pub use scene::{ EdgeScene, GenuineEdge, RelationGlyphKind, SceneArc, SceneCircle, SceneDimension, SceneLine, - ScenePoint, SceneRelationGlyph, SilhouetteCandidate, SketchScene, SolidScene, + ScenePoint, SceneRelationGlyph, SilhouetteCandidate, SketchScene, SolidScene, single_body_pick, }; pub use snapshot::{ ClearColor, EdgeStyle, GlyphStyle, GridStyle, SnapshotFrame, StrokeStyle, Style, TextStyle, @@ -146,6 +147,30 @@ impl SketchRenderer { ) { self.grid.draw(encoder, targets.color, camera, style); gpu::clear_pick_attachment(encoder, targets.pick); + self.encode_vector_passes(encoder, targets, scene, preview, camera, style); + } + + pub fn encode_overlay_passes( + &self, + encoder: &mut wgpu::CommandEncoder, + targets: RenderTargets<'_>, + scene: &SketchScene, + preview: &SketchPreview, + camera: Camera2, + style: &Style, + ) { + self.encode_vector_passes(encoder, targets, scene, preview, camera, style); + } + + fn encode_vector_passes( + &self, + encoder: &mut wgpu::CommandEncoder, + targets: RenderTargets<'_>, + scene: &SketchScene, + preview: &SketchPreview, + camera: Camera2, + style: &Style, + ) { self.arcs .draw(encoder, targets, camera, style, scene, preview); self.lines @@ -301,6 +326,7 @@ impl SolidRenderer { shading: self.shading, fill, region: view.region, + clear: true, }, style, ), @@ -322,6 +348,83 @@ impl SolidRenderer { .draw(encoder, targets, depth_view, edges, edge_view, plan.hidden); } } + + pub fn encode_preview_edges( + &self, + encoder: &mut wgpu::CommandEncoder, + targets: RenderTargets<'_>, + depth_view: &wgpu::TextureView, + edges: &EdgeScene, + view: &SolidFrameView, + style: &Style, + ) { + let strokes = style.strokes(); + self.encode_styled_edges( + encoder, + targets, + depth_view, + edges, + view, + EdgeStroke { + color: strokes.construction().to_rgba_array(), + dash_period_px: strokes.construction_dash_period_px(), + dash_on_ratio: strokes.construction_dash_on_ratio(), + }, + ); + } + + pub fn encode_styled_edges( + &self, + encoder: &mut wgpu::CommandEncoder, + targets: RenderTargets<'_>, + depth_view: &wgpu::TextureView, + edges: &EdgeScene, + view: &SolidFrameView, + stroke: EdgeStroke, + ) { + if edges.is_empty() { + return; + } + let edge_view = EdgeView { + clip_from_world: view.clip_from_world, + projection: EdgeProjection::from_camera(view.camera), + viewport_px: view.viewport_px, + crease_threshold_rad: CREASE_THRESHOLD_RAD, + dash_period_px: stroke.dash_period_px, + dash_on_ratio: stroke.dash_on_ratio, + edge_color: stroke.color, + hidden_color: stroke.color, + region: view.region, + }; + self.edges + .draw_preview(encoder, targets, depth_view, edges, edge_view); + } + + pub fn encode_overlay_solid( + &self, + encoder: &mut wgpu::CommandEncoder, + targets: RenderTargets<'_>, + depth_view: &wgpu::TextureView, + scene: &SolidScene, + view: &SolidFrameView, + style: &Style, + ) { + self.solid.draw( + encoder, + targets, + depth_view, + scene, + SolidView { + clip_from_world: view.clip_from_world, + eye_world: view.eye_world, + shading: self.shading, + fill: FaceFill::Shaded, + region: view.region, + clear: false, + }, + style, + ); + } } pub(crate) fn apply_viewport_region(pass: &mut wgpu::RenderPass<'_>, region: ViewportRegion) { @@ -340,6 +443,24 @@ pub struct SolidDisplay<'a> { pub mode: bone_types::DisplayMode, } +#[derive(Copy, Clone, Debug, PartialEq)] +pub struct EdgeStroke { + pub color: [f32; 4], + pub dash_period_px: f32, + pub dash_on_ratio: f32, +} + +impl EdgeStroke { + #[must_use] + pub const fn solid(color: [f32; 4]) -> Self { + Self { + color, + dash_period_px: 1.0, + dash_on_ratio: 1.0, + } + } +} + #[derive(Copy, Clone)] pub struct SolidFrameView { camera: bone_types::Camera3, @@ -445,6 +566,35 @@ pub(crate) fn solid_clear_depth_attachment( } } +pub(crate) fn solid_load_color_attachments( + targets: RenderTargets<'_>, +) -> [Option>; 2] { + [targets.color, targets.pick].map(|view| { + Some(wgpu::RenderPassColorAttachment { + view, + resolve_target: None, + depth_slice: None, + ops: wgpu::Operations { + load: wgpu::LoadOp::Load, + store: wgpu::StoreOp::Store, + }, + }) + }) +} + +pub(crate) fn solid_load_depth_attachment( + depth_view: &wgpu::TextureView, +) -> wgpu::RenderPassDepthStencilAttachment<'_> { + wgpu::RenderPassDepthStencilAttachment { + view: depth_view, + depth_ops: Some(wgpu::Operations { + load: wgpu::LoadOp::Load, + store: wgpu::StoreOp::Store, + }), + stencil_ops: None, + } +} + fn clear_solid_targets( encoder: &mut wgpu::CommandEncoder, targets: RenderTargets<'_>, diff --git a/crates/bone-render/src/pick.rs b/crates/bone-render/src/pick.rs index 1463f53..f964fff 100644 --- a/crates/bone-render/src/pick.rs +++ b/crates/bone-render/src/pick.rs @@ -1,10 +1,75 @@ use bone_types::{ - BrepEdgeId, BrepFaceId, BrepVertexId, SketchDimensionId, SketchEntityId, SketchRelationId, + BodyOrdinal, BrepEdgeId, BrepFaceId, BrepVertexId, FeatureId, SketchDimensionId, + SketchEntityId, SketchRelationId, }; use slotmap::Key; use std::collections::HashMap; use std::collections::hash_map::Entry; +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] +pub struct BodyKey { + feature: FeatureId, + ordinal: BodyOrdinal, +} + +impl BodyKey { + #[must_use] + pub const fn new(feature: FeatureId, ordinal: BodyOrdinal) -> Self { + Self { feature, ordinal } + } + + #[must_use] + pub const fn feature(self) -> FeatureId { + self.feature + } + + #[must_use] + pub const fn ordinal(self) -> BodyOrdinal { + self.ordinal + } +} + +macro_rules! solid_ref { + ($name:ident, $id:ty, $accessor:ident) => { + #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] + pub struct $name { + body: BodyKey, + $accessor: $id, + } + + impl $name { + #[must_use] + pub const fn new(body: BodyKey, $accessor: $id) -> Self { + Self { body, $accessor } + } + + #[must_use] + pub const fn body(self) -> BodyKey { + self.body + } + + #[must_use] + pub const fn feature(self) -> FeatureId { + self.body.feature() + } + + #[must_use] + pub const fn ordinal(self) -> BodyOrdinal { + self.body.ordinal() + } + + #[must_use] + pub const fn $accessor(self) -> $id { + self.$accessor + } + } + }; +} + +solid_ref!(SolidFaceRef, BrepFaceId, face); +solid_ref!(SolidEdgeRef, BrepEdgeId, edge); +solid_ref!(SolidVertexRef, BrepVertexId, vertex); + use crate::camera::{ViewportExtent, ViewportPx}; use crate::gpu::{Gpu, PICK_BYTES_PER_PIXEL}; use crate::{RenderError, Result}; @@ -21,6 +86,8 @@ pub enum EntityKindTag { BrepFace = 6, BrepEdge = 7, BrepVertex = 8, + Ellipse = 9, + Spline = 10, } impl EntityKindTag { @@ -41,6 +108,8 @@ impl EntityKindTag { 6 => Some(Self::BrepFace), 7 => Some(Self::BrepEdge), 8 => Some(Self::BrepVertex), + 9 => Some(Self::Ellipse), + 10 => Some(Self::Spline), _ => None, } } @@ -50,7 +119,7 @@ impl EntityKindTag { Self::Point => 0, Self::Line => 1, Self::Arc => 2, - Self::Circle => 3, + Self::Circle | Self::Ellipse | Self::Spline => 3, Self::Relation => 4, Self::Dimension => 5, Self::BrepVertex => 6, @@ -72,6 +141,8 @@ impl core::fmt::Display for EntityKindTag { Self::BrepFace => "brep_face", Self::BrepEdge => "brep_edge", Self::BrepVertex => "brep_vertex", + Self::Ellipse => "ellipse", + Self::Spline => "spline", }; f.write_str(name) } @@ -88,9 +159,11 @@ pub enum PickedItem { Circle(SketchEntityId), Relation(SketchRelationId), Dimension(SketchDimensionId), - BrepFace(BrepFaceId), - BrepEdge(BrepEdgeId), - BrepVertex(BrepVertexId), + BrepFace(SolidFaceRef), + BrepEdge(SolidEdgeRef), + BrepVertex(SolidVertexRef), + Ellipse(SketchEntityId), + Spline(SketchEntityId), } impl PickedItem { @@ -106,6 +179,8 @@ impl PickedItem { Self::BrepFace(_) => EntityKindTag::BrepFace, Self::BrepEdge(_) => EntityKindTag::BrepEdge, Self::BrepVertex(_) => EntityKindTag::BrepVertex, + Self::Ellipse(_) => EntityKindTag::Ellipse, + Self::Spline(_) => EntityKindTag::Spline, } } } @@ -167,24 +242,30 @@ impl PickId { Self::from_keyed(EntityKindTag::Circle, id) } - pub fn relation(id: SketchRelationId) -> Result { - Self::from_keyed(EntityKindTag::Relation, id) + pub fn ellipse(id: SketchEntityId) -> Result { + Self::from_keyed(EntityKindTag::Ellipse, id) } - pub fn dimension(id: SketchDimensionId) -> Result { - Self::from_keyed(EntityKindTag::Dimension, id) + pub fn spline(id: SketchEntityId) -> Result { + Self::from_keyed(EntityKindTag::Spline, id) } - pub fn brep_face(id: BrepFaceId) -> Result { - Self::from_keyed(EntityKindTag::BrepFace, id) + pub fn relation(id: SketchRelationId) -> Result { + Self::from_keyed(EntityKindTag::Relation, id) } - pub fn brep_edge(id: BrepEdgeId) -> Result { - Self::from_keyed(EntityKindTag::BrepEdge, id) + pub fn dimension(id: SketchDimensionId) -> Result { + Self::from_keyed(EntityKindTag::Dimension, id) } - pub fn brep_vertex(id: BrepVertexId) -> Result { - Self::from_keyed(EntityKindTag::BrepVertex, id) + fn brep_slot(tag: EntityKindTag, slot: u32) -> Result { + if slot > Self::INDEX_MASK { + return Err(PickIdError::SlotIndexOverflow { + slot, + limit: Self::INDEX_MASK, + }); + } + Ok(Self::pack(tag, slot)) } #[must_use] @@ -196,6 +277,8 @@ impl PickId { EntityKindTag::Line => index.lookup_entity(slot, tag).map(PickedItem::Line), EntityKindTag::Arc => index.lookup_entity(slot, tag).map(PickedItem::Arc), EntityKindTag::Circle => index.lookup_entity(slot, tag).map(PickedItem::Circle), + EntityKindTag::Ellipse => index.lookup_entity(slot, tag).map(PickedItem::Ellipse), + EntityKindTag::Spline => index.lookup_entity(slot, tag).map(PickedItem::Spline), EntityKindTag::Relation => index .relations .get(&slot) @@ -583,9 +666,9 @@ pub struct PickIndex { entities: HashMap, relations: HashMap, dimensions: HashMap, - faces: HashMap, - edges: HashMap, - vertices: HashMap, + faces: HashMap, + edges: HashMap, + vertices: HashMap, } impl PickIndex { @@ -607,18 +690,12 @@ impl PickIndex { }) } - pub fn build_solid(faces: FI, edges: EI, vertices: VI) -> Result - where - FI: IntoIterator, - EI: IntoIterator, - VI: IntoIterator, - { - Ok(Self { - faces: try_collect_keyed(faces, |id| slot_index(*id))?, - edges: try_collect_keyed(edges, |id| slot_index(*id))?, - vertices: try_collect_keyed(vertices, |id| slot_index(*id))?, - ..Self::default() - }) + #[must_use] + pub fn with_solid(mut self, table: &SolidPickTable) -> Self { + self.faces = table.face_index(); + self.edges = table.edge_index(); + self.vertices = table.vertex_index(); + self } fn lookup_entity(&self, slot: u32, expected: EntityKindTag) -> Option { @@ -629,6 +706,119 @@ impl PickIndex { } } +#[derive(Debug, Default, Clone)] +pub struct SolidPickTable { + faces: HashMap<(BodyKey, BrepFaceId), u32>, + edges: HashMap<(BodyKey, BrepEdgeId), u32>, + vertices: HashMap<(BodyKey, BrepVertexId), u32>, + face_refs: Vec, + edge_refs: Vec, + vertex_refs: Vec, +} + +impl SolidPickTable { + #[must_use] + pub fn new() -> Self { + Self::default() + } + + pub fn add_body( + &mut self, + body: BodyKey, + faces: F, + edges: E, + vertices: V, + ) -> Result<(), PickIdError> + where + F: IntoIterator, + E: IntoIterator, + V: IntoIterator, + { + faces.into_iter().try_for_each(|id| { + let slot = next_slot(self.face_refs.len())?; + self.faces.insert((body, id), slot); + self.face_refs.push(SolidFaceRef::new(body, id)); + Ok(()) + })?; + edges.into_iter().try_for_each(|id| { + let slot = next_slot(self.edge_refs.len())?; + self.edges.insert((body, id), slot); + self.edge_refs.push(SolidEdgeRef::new(body, id)); + Ok(()) + })?; + vertices.into_iter().try_for_each(|id| { + let slot = next_slot(self.vertex_refs.len())?; + self.vertices.insert((body, id), slot); + self.vertex_refs.push(SolidVertexRef::new(body, id)); + Ok(()) + }) + } + + #[must_use] + pub fn is_empty(&self) -> bool { + self.face_refs.is_empty() && self.edge_refs.is_empty() && self.vertex_refs.is_empty() + } + + #[must_use] + pub fn face_pick(&self, body: BodyKey, id: BrepFaceId) -> Option { + self.faces + .get(&(body, id)) + .and_then(|&slot| PickId::brep_slot(EntityKindTag::BrepFace, slot).ok()) + } + + #[must_use] + pub fn edge_pick(&self, body: BodyKey, id: BrepEdgeId) -> Option { + self.edges + .get(&(body, id)) + .and_then(|&slot| PickId::brep_slot(EntityKindTag::BrepEdge, slot).ok()) + } + + #[must_use] + pub fn vertex_pick(&self, body: BodyKey, id: BrepVertexId) -> Option { + self.vertices + .get(&(body, id)) + .and_then(|&slot| PickId::brep_slot(EntityKindTag::BrepVertex, slot).ok()) + } + + fn face_index(&self) -> HashMap { + enumerate_refs(&self.face_refs) + } + + fn edge_index(&self) -> HashMap { + enumerate_refs(&self.edge_refs) + } + + fn vertex_index(&self) -> HashMap { + enumerate_refs(&self.vertex_refs) + } + + #[must_use] + pub fn pick_index(&self) -> PickIndex { + PickIndex::default().with_solid(self) + } +} + +fn next_slot(len: usize) -> Result { + let slot = u32::try_from(len).map_err(|_| PickIdError::SlotIndexOverflow { + slot: u32::MAX, + limit: PickId::INDEX_MASK, + })?; + if slot > PickId::INDEX_MASK { + return Err(PickIdError::SlotIndexOverflow { + slot, + limit: PickId::INDEX_MASK, + }); + } + Ok(slot) +} + +fn enumerate_refs(refs: &[R]) -> HashMap { + refs.iter() + .enumerate() + .filter_map(|(slot, item)| u32::try_from(slot).ok().map(|slot| (slot, *item))) + .collect() +} + #[allow( clippy::cast_possible_truncation, reason = "high 32 bits are masked off before the u64-to-u32 cast, so the low 32 bits fit u32 exactly" @@ -766,7 +956,9 @@ mod tests { PickedItem::Point(k) | PickedItem::Line(k) | PickedItem::Arc(k) - | PickedItem::Circle(k) => { + | PickedItem::Circle(k) + | PickedItem::Ellipse(k) + | PickedItem::Spline(k) => { slots.0.remove(k); } PickedItem::Relation(k) => { @@ -783,7 +975,7 @@ mod tests { #[test] fn tag_bits_roundtrip() { - (0u8..9).for_each(|bits| { + (0u8..11).for_each(|bits| { let Some(tag) = EntityKindTag::from_bits(bits) else { panic!("tag {bits} should decode"); }; @@ -793,7 +985,7 @@ mod tests { #[test] fn invalid_tag_bits_return_none() { - (9u8..16).for_each(|bits| { + (11u8..16).for_each(|bits| { assert!(EntityKindTag::from_bits(bits).is_none()); }); } @@ -946,7 +1138,7 @@ mod tests { } #[test] - fn invalid_tag_bits_unpack_to_none(bits in 9u8..16, idx in 0u32..=PickId::INDEX_MASK) { + fn invalid_tag_bits_unpack_to_none(bits in 11u8..16, idx in 0u32..=PickId::INDEX_MASK) { let raw = (u32::from(bits) << PickId::TAG_SHIFT) | (idx & PickId::INDEX_MASK); let pid = PickId::from_raw(raw); prop_assert!(pid.unpack(&PickIndex::default()).is_none()); @@ -991,42 +1183,74 @@ mod tests { (f, e, v, (faces, edges, vertices)) } - fn build_brep_index(slots: &BrepSlots) -> PickIndex { - ok(PickIndex::build_solid( - slots.0.keys(), - slots.1.keys(), - slots.2.keys(), - )) + fn body_key(seed: u64) -> BodyKey { + BodyKey::new( + FeatureId::from(KeyData::from_ffi((1u64 << 32) | seed)), + BodyOrdinal::new(0), + ) + } + + fn brep_table(body: BodyKey, slots: &BrepSlots) -> SolidPickTable { + let mut table = SolidPickTable::new(); + ok(table.add_body(body, slots.0.keys(), slots.1.keys(), slots.2.keys())); + table } - fn build_brep_case( + fn brep_case( kind: BrepKind, + body: BodyKey, + table: &SolidPickTable, f: &[BrepFaceId], e: &[BrepEdgeId], v: &[BrepVertexId], target: usize, ) -> (PickId, PickedItem) { match kind { - BrepKind::Face => ( - ok(PickId::brep_face(f[target])), - PickedItem::BrepFace(f[target]), - ), - BrepKind::Edge => ( - ok(PickId::brep_edge(e[target])), - PickedItem::BrepEdge(e[target]), - ), - BrepKind::Vertex => ( - ok(PickId::brep_vertex(v[target])), - PickedItem::BrepVertex(v[target]), - ), + BrepKind::Face => { + let Some(pid) = table.face_pick(body, f[target]) else { + panic!("face is in the table") + }; + ( + pid, + PickedItem::BrepFace(SolidFaceRef::new(body, f[target])), + ) + } + BrepKind::Edge => { + let Some(pid) = table.edge_pick(body, e[target]) else { + panic!("edge is in the table") + }; + ( + pid, + PickedItem::BrepEdge(SolidEdgeRef::new(body, e[target])), + ) + } + BrepKind::Vertex => { + let Some(pid) = table.vertex_pick(body, v[target]) else { + panic!("vertex is in the table") + }; + ( + pid, + PickedItem::BrepVertex(SolidVertexRef::new(body, v[target])), + ) + } } } #[test] fn brep_tag_and_index_split_cleanly() { + let body = body_key(1); let mut faces: SlotMap = SlotMap::with_key(); let k = faces.insert(()); - let pid = ok(PickId::brep_face(k)); + let mut table = SolidPickTable::new(); + ok(table.add_body( + body, + [k], + std::iter::empty::(), + std::iter::empty::(), + )); + let Some(pid) = table.face_pick(body, k) else { + panic!("face is in the table") + }; assert_eq!(pid.tag(), Some(EntityKindTag::BrepFace)); assert_eq!(pid.raw() & PickId::TAG_MASK, 6u32 << PickId::TAG_SHIFT); assert_eq!(pid.index(), pid.raw() & PickId::INDEX_MASK); @@ -1035,32 +1259,70 @@ mod tests { #[test] fn brep_families_resolve_by_tag_at_shared_slot() { + let body = body_key(1); let (f, e, v, slots) = populate_brep(1); - let index = build_brep_index(&slots); + let table = brep_table(body, &slots); + let index = table.pick_index(); assert_eq!( - ok(PickId::brep_face(f[0])).unpack(&index), - Some(PickedItem::BrepFace(f[0])) + table + .face_pick(body, f[0]) + .and_then(|pid| pid.unpack(&index)), + Some(PickedItem::BrepFace(SolidFaceRef::new(body, f[0]))) ); assert_eq!( - ok(PickId::brep_edge(e[0])).unpack(&index), - Some(PickedItem::BrepEdge(e[0])) + table + .edge_pick(body, e[0]) + .and_then(|pid| pid.unpack(&index)), + Some(PickedItem::BrepEdge(SolidEdgeRef::new(body, e[0]))) ); assert_eq!( - ok(PickId::brep_vertex(v[0])).unpack(&index), - Some(PickedItem::BrepVertex(v[0])) + table + .vertex_pick(body, v[0]) + .and_then(|pid| pid.unpack(&index)), + Some(PickedItem::BrepVertex(SolidVertexRef::new(body, v[0]))) ); } #[test] - fn brep_slot_overflow_is_rejected_by_build_solid() { - let bad_slot: u32 = PickId::INDEX_MASK + 1; - let key = BrepFaceId::from(KeyData::from_ffi((1u64 << 32) | u64::from(bad_slot))); - let result = PickIndex::build_solid( - [key], + fn two_bodies_sharing_a_face_key_do_not_alias() { + let mut faces: SlotMap = SlotMap::with_key(); + let shared = faces.insert(()); + let (first, second) = (body_key(1), body_key(2)); + let mut table = SolidPickTable::new(); + ok(table.add_body( + first, + [shared], + std::iter::empty::(), + std::iter::empty::(), + )); + ok(table.add_body( + second, + [shared], std::iter::empty::(), std::iter::empty::(), + )); + let index = table.pick_index(); + assert_eq!( + table + .face_pick(first, shared) + .and_then(|pid| pid.unpack(&index)), + Some(PickedItem::BrepFace(SolidFaceRef::new(first, shared))) + ); + assert_eq!( + table + .face_pick(second, shared) + .and_then(|pid| pid.unpack(&index)), + Some(PickedItem::BrepFace(SolidFaceRef::new(second, shared))) ); - assert!(matches!(result, Err(PickIdError::SlotIndexOverflow { .. }))); + } + + #[test] + fn brep_slot_overflow_is_rejected() { + let too_many = usize::try_from(PickId::INDEX_MASK).unwrap_or(usize::MAX) + 1; + assert!(matches!( + next_slot(too_many), + Err(PickIdError::SlotIndexOverflow { .. }) + )); } proptest! { @@ -1071,29 +1333,31 @@ mod tests { target in 0usize..32, ) { let target = target % n; + let body = body_key(7); let (f, e, v, slots) = populate_brep(n); - let (pid, expected) = build_brep_case(kind, &f, &e, &v, target); - let index = build_brep_index(&slots); + let table = brep_table(body, &slots); + let (pid, expected) = brep_case(kind, body, &table, &f, &e, &v, target); + let index = table.pick_index(); prop_assert_eq!(pid.unpack(&index), Some(expected)); prop_assert_eq!(pid.tag(), Some(expected.tag())); } #[test] - fn brep_removed_slot_unpacks_to_none( + fn brep_out_of_range_slot_unpacks_to_none( kind in arb_brep_kind(), n in 1usize..32, - target in 0usize..32, ) { - let target = target % n; - let (f, e, v, mut slots) = populate_brep(n); - let (pid, _) = build_brep_case(kind, &f, &e, &v, target); - match kind { - BrepKind::Face => slots.0.remove(f[target]), - BrepKind::Edge => slots.1.remove(e[target]), - BrepKind::Vertex => slots.2.remove(v[target]), + let body = body_key(7); + let (_, _, _, slots) = populate_brep(n); + let table = brep_table(body, &slots); + let index = table.pick_index(); + let tag = match kind { + BrepKind::Face => EntityKindTag::BrepFace, + BrepKind::Edge => EntityKindTag::BrepEdge, + BrepKind::Vertex => EntityKindTag::BrepVertex, }; - let index = build_brep_index(&slots); - prop_assert!(pid.unpack(&index).is_none()); + let stale = ok(PickId::brep_slot(tag, u32::try_from(n).unwrap_or(u32::MAX))); + prop_assert!(stale.unpack(&index).is_none()); } } @@ -1107,10 +1371,8 @@ mod tests { #[test] fn nearest_pick_prefers_vertex_over_face_at_equal_distance() { - let mut faces: SlotMap = SlotMap::with_key(); - let mut verts: SlotMap = SlotMap::with_key(); - let face_pid = ok(PickId::brep_face(faces.insert(()))); - let vert_pid = ok(PickId::brep_vertex(verts.insert(()))); + let face_pid = pid_for(0, EntityKindTag::BrepFace); + let vert_pid = pid_for(0, EntityKindTag::BrepVertex); let q = query_at(10, 10); assert_eq!( nearest_pick(q, &[(9, 10, face_pid), (11, 10, vert_pid)]), @@ -1124,10 +1386,8 @@ mod tests { #[test] fn nearest_pick_prefers_edge_over_face_at_equal_distance() { - let mut faces: SlotMap = SlotMap::with_key(); - let mut edges: SlotMap = SlotMap::with_key(); - let face_pid = ok(PickId::brep_face(faces.insert(()))); - let edge_pid = ok(PickId::brep_edge(edges.insert(()))); + let face_pid = pid_for(0, EntityKindTag::BrepFace); + let edge_pid = pid_for(1, EntityKindTag::BrepEdge); let q = query_at(10, 10); assert_eq!( nearest_pick(q, &[(9, 10, face_pid), (11, 10, edge_pid)]), @@ -1216,7 +1476,7 @@ mod tests { #[test] fn nearest_pick_ignores_invalid_tag() { let q = query_at(10, 10); - let invalid = PickId::from_raw((10u32 << PickId::TAG_SHIFT) | 3); + let invalid = PickId::from_raw((11u32 << PickId::TAG_SHIFT) | 3); assert_eq!(invalid.tag(), None); assert_ne!(invalid, PickId::NONE); let real = pid_for(7, EntityKindTag::Line); diff --git a/crates/bone-render/src/pipelines/edge_3d.rs b/crates/bone-render/src/pipelines/edge_3d.rs index f57b5d8..2b913ea 100644 --- a/crates/bone-render/src/pipelines/edge_3d.rs +++ b/crates/bone-render/src/pipelines/edge_3d.rs @@ -83,10 +83,11 @@ struct EdgeFrame { edge_color: [f32; 4], hidden_color: [f32; 4], viewport_px: [f32; 2], + viewport_origin: [f32; 2], dash_period_px: f32, dash_on_ratio: f32, depth_bias_ndc: f32, - _pad: [f32; 3], + _pad: [f32; 1], } const UNIFORM_SIZE: u64 = core::mem::size_of::() as u64; @@ -228,23 +229,52 @@ impl Edge3dPipeline { } HiddenEdges::Omit => Vec::new(), }; + self.encode_layers(encoder, targets, depth_view, view, &visible, &occluded); + } + + pub fn draw_preview( + &self, + encoder: &mut wgpu::CommandEncoder, + targets: RenderTargets<'_>, + depth_view: &wgpu::TextureView, + scene: &EdgeScene, + view: EdgeView, + ) { + let visible = build_instances(scene, view, STYLE_DASHED); + self.encode_layers(encoder, targets, depth_view, view, &visible, &[]); + } + + fn encode_layers( + &self, + encoder: &mut wgpu::CommandEncoder, + targets: RenderTargets<'_>, + depth_view: &wgpu::TextureView, + view: EdgeView, + visible: &[EdgeInstance], + occluded: &[EdgeInstance], + ) { if visible.is_empty() && occluded.is_empty() { return; } + let (origin_x, origin_y, _, _) = view.region.scissor(); let uniform = EdgeFrame { clip_from_world: view.clip_from_world, edge_color: view.edge_color, hidden_color: view.hidden_color, viewport_px: view.viewport_px, + viewport_origin: [ + crate::lower_f32(f64::from(origin_x)), + crate::lower_f32(f64::from(origin_y)), + ], dash_period_px: view.dash_period_px, dash_on_ratio: view.dash_on_ratio, depth_bias_ndc: DEPTH_BIAS_NDC_PER_PX, - _pad: [0.0; 3], + _pad: [0.0; 1], }; self.queue .write_buffer(&self.uniform_buffer, 0, bytemuck::bytes_of(&uniform)); - let visible_buffer = (!visible.is_empty()).then(|| self.instance_buffer(&visible)); - let occluded_buffer = (!occluded.is_empty()).then(|| self.instance_buffer(&occluded)); + let visible_buffer = (!visible.is_empty()).then(|| self.instance_buffer(visible)); + let occluded_buffer = (!occluded.is_empty()).then(|| self.instance_buffer(occluded)); let mut pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { label: Some("bone-render:edge3d-pass"), color_attachments: &[ diff --git a/crates/bone-render/src/pipelines/edge_3d.wgsl b/crates/bone-render/src/pipelines/edge_3d.wgsl index dde6eef..fba8181 100644 --- a/crates/bone-render/src/pipelines/edge_3d.wgsl +++ b/crates/bone-render/src/pipelines/edge_3d.wgsl @@ -3,12 +3,11 @@ struct Frame { edge_color: vec4, hidden_color: vec4, viewport_px: vec2, + viewport_origin: vec2, dash_period_px: f32, dash_on_ratio: f32, depth_bias_ndc: f32, _pad0: f32, - _pad1: f32, - _pad2: f32, }; struct Instance { @@ -112,7 +111,7 @@ fn vs(@builtin(vertex_index) vid: u32, inst: Instance) -> VsOut { @fragment fn fs(in: VsOut) -> FsOut { - let p = in.clip.xy; + let p = in.clip.xy - u.viewport_origin; let ab = in.fb_b - in.fb_a; let ab2 = max(dot(ab, ab), 1.0e-6); let h = clamp(dot(p - in.fb_a, ab) / ab2, 0.0, 1.0); diff --git a/crates/bone-render/src/pipelines/solid.rs b/crates/bone-render/src/pipelines/solid.rs index 1c91b0f..01431c1 100644 --- a/crates/bone-render/src/pipelines/solid.rs +++ b/crates/bone-render/src/pipelines/solid.rs @@ -48,6 +48,7 @@ pub(crate) struct SolidView { pub shading: ShadingModel, pub fill: FaceFill, pub region: ViewportRegion, + pub clear: bool, } #[repr(C)] @@ -202,6 +203,10 @@ impl SolidPipeline { view: SolidView, style: &Style, ) { + if !view.clear && scene.triangles().is_empty() { + return; + } + let clear = view.clear; let uniform = SolidUniform { clip_from_world: view.clip_from_world, light_dir: LIGHT_DIR, @@ -218,10 +223,20 @@ impl SolidPipeline { .write_buffer(&self.uniform_buffer, 0, bytemuck::bytes_of(&uniform)); let vertices = build_vertices(scene); let indices = build_indices(scene); + let color_attachments = if clear { + crate::solid_clear_color_attachments(targets, style) + } else { + crate::solid_load_color_attachments(targets) + }; + let depth_attachment = if clear { + crate::solid_clear_depth_attachment(depth_view) + } else { + crate::solid_load_depth_attachment(depth_view) + }; let mut pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { label: Some("bone-render:solid-pass"), - color_attachments: &crate::solid_clear_color_attachments(targets, style), - depth_stencil_attachment: Some(crate::solid_clear_depth_attachment(depth_view)), + color_attachments: &color_attachments, + depth_stencil_attachment: Some(depth_attachment), timestamp_writes: None, occlusion_query_set: None, multiview_mask: None, diff --git a/crates/bone-render/src/pipelines/text.rs b/crates/bone-render/src/pipelines/text.rs index e6444a8..48096dc 100644 --- a/crates/bone-render/src/pipelines/text.rs +++ b/crates/bone-render/src/pipelines/text.rs @@ -17,7 +17,6 @@ use crate::snapshot::{Style, TextStyle}; #[derive(Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)] struct TextUniform { clip_from_world: [f32; 16], - text_color: [f32; 4], pixels_per_mm: f32, _pad0: f32, _pad1: f32, @@ -31,6 +30,7 @@ const UNIFORM_SIZE: u64 = core::mem::size_of::() as u64; struct TextVertex { anchor_mm: [f32; 2], offset_px: [f32; 2], + color: [f32; 4], pick_id: u32, _pad: u32, } @@ -134,11 +134,11 @@ impl TextPipeline { style: &Style, scene: &SketchScene, ) { - let (vertices, indices) = assemble_geometry(scene, &self.cache); + let (vertices, indices) = assemble_geometry(scene, &self.cache, style.text()); if indices.is_empty() { return; } - let uniform = build_uniform(camera, style.text()); + let uniform = build_uniform(camera); self.queue .write_buffer(&self.uniform_buffer, 0, bytemuck::bytes_of(&uniform)); let vertex_buffer = self @@ -207,10 +207,11 @@ impl core::fmt::Debug for TextPipeline { } } -const VERTEX_ATTRS: [wgpu::VertexAttribute; 3] = wgpu::vertex_attr_array![ +const VERTEX_ATTRS: [wgpu::VertexAttribute; 4] = wgpu::vertex_attr_array![ 0 => Float32x2, 1 => Float32x2, - 2 => Uint32, + 2 => Float32x4, + 3 => Uint32, ]; fn create_bind_group_layout(device: &wgpu::Device) -> wgpu::BindGroupLayout { @@ -293,10 +294,9 @@ fn create_pipeline( clippy::cast_possible_truncation, reason = "mm coordinates and pixel offsets fit f32 mantissa at CAD scales" )] -fn build_uniform(camera: Camera2, text: TextStyle) -> TextUniform { +fn build_uniform(camera: Camera2) -> TextUniform { TextUniform { clip_from_world: camera.clip_from_world_mm(), - text_color: text.color().to_rgba_array(), pixels_per_mm: camera.zoom().value() as f32, _pad0: 0.0, _pad1: 0.0, @@ -311,6 +311,7 @@ fn build_uniform(camera: Camera2, text: TextStyle) -> TextUniform { fn assemble_geometry( scene: &SketchScene, cache: &HashMap, + text: TextStyle, ) -> (Vec, Vec) { scene .dimensions() @@ -322,12 +323,19 @@ fn assemble_geometry( let (ax, ay) = d.anchor_mm().coords_mm(); let anchor = [ax as f32, ay as f32]; let pick_id = d.pick().raw(); + let color = if d.driven() { + text.driven_color() + } else { + text.color() + } + .to_rgba_array(); let Ok(base) = u32::try_from(vs.len()) else { panic!("text vertex count exceeds u32::MAX"); }; vs.extend(cached.tess.vertices_px.iter().map(|offset| TextVertex { anchor_mm: anchor, offset_px: *offset, + color, pick_id, _pad: 0, })); diff --git a/crates/bone-render/src/pipelines/text.wgsl b/crates/bone-render/src/pipelines/text.wgsl index 81a9116..9f0ba40 100644 --- a/crates/bone-render/src/pipelines/text.wgsl +++ b/crates/bone-render/src/pipelines/text.wgsl @@ -1,6 +1,5 @@ struct Frame { clip_from_world: mat4x4, - text_color: vec4, pixels_per_mm: f32, _pad0: f32, _pad1: f32, @@ -10,12 +9,14 @@ struct Frame { struct Vertex { @location(0) anchor_mm: vec2, @location(1) offset_px: vec2, - @location(2) pick_id: u32, + @location(2) color: vec4, + @location(3) pick_id: u32, }; struct VsOut { @builtin(position) clip: vec4, @location(0) @interpolate(flat) pick_id: u32, + @location(1) color: vec4, }; struct FsOut { @@ -32,12 +33,13 @@ fn vs(in: Vertex) -> VsOut { var out: VsOut; out.clip = clip; out.pick_id = in.pick_id; + out.color = in.color; return out; } @fragment fn fs(in: VsOut) -> FsOut { - let c = u.text_color; + let c = in.color; var out: FsOut; out.color = vec4(c.rgb * c.a, c.a); out.pick_id = in.pick_id; diff --git a/crates/bone-render/src/scene.rs b/crates/bone-render/src/scene.rs index 74d40a4..5a65c9c 100644 --- a/crates/bone-render/src/scene.rs +++ b/crates/bone-render/src/scene.rs @@ -2,17 +2,21 @@ use bone_document::{ ArcData, CircleData, DimensionValue, LineData, Sketch, SketchDimension, SketchEntity, SketchRelation, }; -use bone_kernel::{Aabb2, Arc2, BrepSolid, FaceMesh, SolidMesh, arc_bounding_box}; +use bone_kernel::{ + Aabb2, Arc2, BrepEdge, BrepFace, BrepSolid, BrepVertex, Curve2, FaceMesh, SolidMesh, + arc_bounding_box, +}; use bone_types::{ - Angle, ChordHeightTolerance, CreaseAngle, Length, LinearRgba, Point2, Point3, - SketchDimensionId, SketchEntityId, SketchRelationId, Tolerance, UnitVec3, Vec2, + Angle, BodyOrdinal, ChordHeightTolerance, CreaseAngle, FeatureId, Length, LinearRgba, + Parameter, Point2, Point3, SketchDimensionId, SketchEntityId, SketchRelationId, Tolerance, + UnitVec3, Vec2, }; use core::f64::consts::FRAC_1_SQRT_2; use std::collections::BTreeMap; use uom::si::angle::degree; use uom::si::length::millimeter; -use crate::pick::{EntityKindTag, PickId, PickIdError, PickIndex}; +use crate::pick::{BodyKey, EntityKindTag, PickId, PickIdError, PickIndex, SolidPickTable}; const ARC_TOLERANCE: Tolerance = Tolerance::new(1.0e-9); @@ -257,6 +261,7 @@ pub struct SceneDimension { text: String, dimension: SketchDimensionId, pick: PickId, + driven: bool, } impl SceneDimension { @@ -279,6 +284,11 @@ impl SceneDimension { pub const fn pick(&self) -> PickId { self.pick } + + #[must_use] + pub const fn driven(&self) -> bool { + self.driven + } } #[derive(Clone, Debug, Default, PartialEq)] @@ -393,7 +403,11 @@ impl SketchScene { .points .iter() .map(|p| (p.entity, EntityKindTag::Point)) - .chain(self.lines.iter().map(|l| (l.entity, EntityKindTag::Line))) + .chain( + self.lines + .iter() + .filter_map(|l| l.pick.tag().map(|tag| (l.entity, tag))), + ) .chain(self.arcs.iter().map(|a| (a.entity, EntityKindTag::Arc))) .chain( self.circles @@ -440,6 +454,7 @@ impl SketchScene { text: format_dimension(dim), dimension: id, pick: PickId::dimension(id)?, + driven: matches!(dim.kind(), bone_document::DimensionKind::Driven), }); Ok(self) } @@ -449,7 +464,7 @@ impl SketchScene { sketch: &Sketch, id: SketchEntityId, ) -> Result { - let Some(entity) = sketch.entities().get(id).copied() else { + let Some(entity) = sketch.entities().get(id) else { unreachable!( "entity_order references id {id:?} missing from entities — Sketch invariants broken" ); @@ -472,7 +487,7 @@ impl SketchScene { }); } SketchEntity::Arc(a) => { - if let Some(arc) = derive_arc(sketch, id, a, PickId::arc(id)?) { + if let Some(arc) = derive_arc(sketch, id, *a, PickId::arc(id)?) { self.arcs.push(arc); } } @@ -485,11 +500,69 @@ impl SketchScene { for_construction: c.for_construction(), }); } + SketchEntity::Ellipse(e) => { + if let Some(curve) = sketch.ellipse_curve(*e) { + let pick = PickId::ellipse(id)?; + let points: Vec = (0..=ELLIPSE_SEGMENTS) + .map(|i| { + curve.evaluate(Parameter::new( + f64::from(i) / f64::from(ELLIPSE_SEGMENTS), + )) + }) + .collect(); + self.lines + .extend(outline_lines(&points, id, pick, e.for_construction())); + } + } + SketchEntity::Spline(s) => { + let spans = sketch.spline_spans(s); + if !spans.is_empty() { + let pick = PickId::spline(id)?; + let mut points: Vec = spans + .iter() + .flat_map(|span| { + (0..SPLINE_SPAN_SAMPLES).map(move |j| { + span.evaluate(Parameter::new( + f64::from(j) / f64::from(SPLINE_SPAN_SAMPLES), + )) + }) + }) + .collect(); + if s.closed() + && let Some(first) = points.first().copied() + { + points.push(first); + } + self.lines + .extend(outline_lines(&points, id, pick, s.for_construction())); + } + } } Ok(self) } } +const ELLIPSE_SEGMENTS: u32 = 64; +const SPLINE_SPAN_SAMPLES: u32 = 24; + +fn outline_lines( + points: &[Point2], + entity: SketchEntityId, + pick: PickId, + for_construction: bool, +) -> Vec { + points + .windows(2) + .map(|segment| SceneLine { + a: segment[0], + b: segment[1], + entity, + pick, + for_construction, + }) + .collect() +} + fn point_position(sketch: &Sketch, id: SketchEntityId) -> Point2 { let Some(entity) = sketch.entities().get(id) else { unreachable!( @@ -514,11 +587,28 @@ fn relation_anchor(sketch: &Sketch, rel: SketchRelation) -> Option<(Point2, Vec2 fn entity_anchor(sketch: &Sketch, id: SketchEntityId) -> Option<(Point2, Vec2)> { let e = sketch.entities().get(id)?; - Some(match *e { + Some(match e { SketchEntity::Point(p) => (p.at(), Vec2::from_mm(FRAC_1_SQRT_2, FRAC_1_SQRT_2)), - SketchEntity::Line(l) => line_anchor(sketch, l), - SketchEntity::Arc(a) => arc_anchor(sketch, a), - SketchEntity::Circle(c) => circle_anchor(sketch, c), + SketchEntity::Line(l) => line_anchor(sketch, *l), + SketchEntity::Arc(a) => arc_anchor(sketch, *a), + SketchEntity::Circle(c) => circle_anchor(sketch, *c), + SketchEntity::Ellipse(e) => { + let center = point_position(sketch, e.center()); + let major = point_position(sketch, e.major()); + let (cx, cy) = center.coords_mm(); + let (mx, my) = major.coords_mm(); + ( + major, + unit_or(Vec2::from_mm(mx - cx, my - cy), Vec2::from_mm(1.0, 0.0)), + ) + } + SketchEntity::Spline(s) => { + let first = *s.control().first()?; + ( + point_position(sketch, first), + Vec2::from_mm(FRAC_1_SQRT_2, FRAC_1_SQRT_2), + ) + } }) } @@ -644,14 +734,18 @@ impl SolidScene { } } - pub fn from_mesh(mesh: &SolidMesh) -> Result { + pub fn from_mesh( + mesh: &SolidMesh, + body: BodyKey, + table: &SolidPickTable, + ) -> Result { mesh.faces() .iter() .try_fold(Self::empty(), |mut scene, face| { let Ok(base) = u32::try_from(scene.positions.len()) else { panic!("solid mesh vertex count fits a u32 index"); }; - let pick = PickId::brep_face(face.face())?; + let pick = table.face_pick(body, face.face()).unwrap_or(PickId::NONE); scene.positions.extend_from_slice(face.positions()); scene.normals.extend_from_slice(face.normals()); scene.colors.extend(face.positions().iter().map(|_| WHITE)); @@ -700,6 +794,48 @@ impl SolidScene { } } + #[must_use] + pub fn from_parts_picked( + positions: Vec, + normals: Vec, + colors: Vec, + pick_ids: Vec, + triangles: Vec<[u32; 3]>, + ) -> Self { + assert_eq!( + positions.len(), + normals.len(), + "solid scene needs one normal per position", + ); + assert_eq!( + positions.len(), + colors.len(), + "solid scene needs one color per position", + ); + assert_eq!( + positions.len(), + pick_ids.len(), + "solid scene needs one pick id per position", + ); + let Ok(vertex_count) = u32::try_from(positions.len()) else { + panic!("solid scene vertex count fits a u32 index"); + }; + assert!( + triangles + .iter() + .flatten() + .all(|&index| index < vertex_count), + "solid scene triangle index out of range", + ); + Self { + positions, + normals, + colors, + pick_ids, + triangles, + } + } + #[must_use] pub fn merge(mut self, other: Self) -> Self { let Ok(base) = u32::try_from(self.positions.len()) else { @@ -740,6 +876,18 @@ impl SolidScene { } } +pub fn single_body_pick(solid: &BrepSolid) -> Result<(BodyKey, SolidPickTable), PickIdError> { + let body = BodyKey::new(FeatureId::default(), BodyOrdinal::new(0)); + let mut table = SolidPickTable::new(); + table.add_body( + body, + solid.iter_faces().map(BrepFace::id), + solid.iter_edges().map(BrepEdge::id), + solid.iter_vertices().map(BrepVertex::id), + )?; + Ok((body, table)) +} + const NORMAL_TOLERANCE: Tolerance = Tolerance::new(1.0e-12); const COPLANAR_DOT: f64 = 1.0 - 1.0e-9; @@ -841,13 +989,17 @@ impl EdgeScene { solid: &BrepSolid, mesh: &SolidMesh, chord: ChordHeightTolerance, + body: BodyKey, + table: &SolidPickTable, ) -> Result { let genuine = solid .edges_for_render(chord) .iter() .try_fold(Vec::new(), |mut acc, polyline| { - let pick = PickId::brep_edge(polyline.edge())?; + let pick = table + .edge_pick(body, polyline.edge()) + .unwrap_or(PickId::NONE); let crease = polyline.crease(); acc.extend(polyline.points().windows(2).map(|pair| GenuineEdge { a: pair[0], @@ -858,7 +1010,7 @@ impl EdgeScene { Ok::<_, PickIdError>(acc) })?; let silhouettes = mesh.faces().iter().try_fold(Vec::new(), |mut acc, slab| { - let pick = PickId::brep_face(slab.face())?; + let pick = table.face_pick(body, slab.face()).unwrap_or(PickId::NONE); acc.extend(slab_silhouettes(slab, pick)); Ok::<_, PickIdError>(acc) })?; diff --git a/crates/bone-render/src/snapshot.rs b/crates/bone-render/src/snapshot.rs index 11ff6b7..d7c601a 100644 --- a/crates/bone-render/src/snapshot.rs +++ b/crates/bone-render/src/snapshot.rs @@ -264,17 +264,20 @@ impl Default for GlyphStyle { #[derive(Copy, Clone, Debug, PartialEq)] pub struct TextStyle { color: ClearColor, + driven_color: ClearColor, font_size_px: f32, } impl TextStyle { pub const DEFAULT: Self = Self { color: ClearColor::new(0.95, 0.95, 0.98, 1.0), + driven_color: ClearColor::new(0.494, 0.494, 0.494, 1.0), font_size_px: 14.0, }; pub const LIGHT: Self = Self { color: ClearColor::new(0.10, 0.11, 0.13, 1.0), + driven_color: ClearColor::new(0.42, 0.42, 0.46, 1.0), font_size_px: 14.0, }; @@ -283,6 +286,19 @@ impl TextStyle { self.color } + #[must_use] + pub const fn driven_color(self) -> ClearColor { + self.driven_color + } + + #[must_use] + pub const fn with_driven_color(self, driven_color: ClearColor) -> Self { + Self { + driven_color, + ..self + } + } + #[must_use] pub const fn font_size_px(self) -> f32 { self.font_size_px diff --git a/crates/bone-render/tests/common/mod.rs b/crates/bone-render/tests/common/mod.rs index 71ad346..f28565b 100644 --- a/crates/bone-render/tests/common/mod.rs +++ b/crates/bone-render/tests/common/mod.rs @@ -13,6 +13,7 @@ use bone_render::{ const ADAPTER_RETRIES: u32 = 3; const ADAPTER_RETRY_BACKOFF_MS: u64 = 100; const GOLDEN_DIFF_TOLERANCE: f64 = 16.0 / 255.0; +const GOLDEN_MISMATCH_BUDGET_DIVISOR: u64 = 1000; #[must_use] pub fn extent_square(side: u32) -> ViewportExtent { @@ -49,7 +50,7 @@ pub fn make_context(extent: ViewportExtent) -> OffscreenContext { pub fn check_golden(frame: &SnapshotFrame, golden_rel: &str, update_env: &str) { let path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join(golden_rel); - if std::env::var(update_env).is_ok() { + if std::env::var(update_env).is_ok_and(|value| !matches!(value.as_str(), "" | "0")) { let Ok(bytes) = encode_png(frame) else { panic!("encode_png failed"); }; @@ -80,10 +81,12 @@ pub fn check_golden(frame: &SnapshotFrame, golden_rel: &str, update_env: &str) { let Ok(report) = PixelDiff::compare(frame, &golden_rgba, threshold) else { panic!("PixelDiff rejected inputs"); }; + let budget = frame.extent().pixel_count() / GOLDEN_MISMATCH_BUDGET_DIVISOR; assert!( - report.is_clean(), - "{golden_rel} drifted from golden: {} mismatches, worst {:?}, backend {}", + report.within_budget(budget), + "{golden_rel} drifted from golden: {} of {} pixels over threshold (budget {budget}), worst {:?}, backend {}", report.over_threshold(), + frame.extent().pixel_count(), report.worst(), frame.backend(), ); diff --git a/crates/bone-render/tests/cube_camera.rs b/crates/bone-render/tests/cube_camera.rs index d5ef6c9..27bacc9 100644 --- a/crates/bone-render/tests/cube_camera.rs +++ b/crates/bone-render/tests/cube_camera.rs @@ -1,8 +1,8 @@ use bone_kernel::{ - BrepSolid, Curve2Kind, ExtrudeDirection, ExtrudeEndCondition, ExtrudeFeature, ExtrudeProfile, - ExtrudeSense, Line2, MergeResult, ProfileEdge, ProfileLoop, evaluate_extrude, + BrepSolid, Curve2Kind, ExtrudeFeature, ExtrudeProfile, Line2, ProfileEdge, ProfileLoop, + evaluate_extrude, }; -use bone_render::{SolidRenderer, SolidScene, Style, frame_isometric}; +use bone_render::{SolidRenderer, SolidScene, Style, frame_isometric, single_body_pick}; use bone_types::{ AngleTolerance, ChordHeightTolerance, FeatureId, Length, Plane3, Point2, Point3, PositiveLength, SketchEntityId, SketchId, Tolerance, UnitVec3, millimeter, @@ -52,16 +52,7 @@ fn unit_cube() -> BrepSolid { let Ok(depth) = PositiveLength::new(Length::new::(1.0)) else { panic!("1 mm is a positive length"); }; - let feature = ExtrudeFeature { - sketch: SketchId::null(), - direction: ExtrudeDirection::Normal { - sense: ExtrudeSense::Forward, - }, - end_condition: ExtrudeEndCondition::Blind { depth }, - draft: None, - thin_wall: None, - merge_result: MergeResult::Merge, - }; + let feature = ExtrudeFeature::blind(SketchId::null(), depth); let Ok(solid) = evaluate_extrude(features.insert(()), &profile, &feature) else { panic!("the unit square extrudes into a cube"); }; @@ -80,7 +71,10 @@ fn cube_iso_matches_golden() { ) else { panic!("the cube tessellates"); }; - let Ok(scene) = SolidScene::from_mesh(&mesh) else { + let Ok((body, table)) = single_body_pick(&solid) else { + panic!("the cube builds a pick table"); + }; + let Ok(scene) = SolidScene::from_mesh(&mesh, body, &table) else { panic!("the cube mesh packs face pick ids"); }; let Some(aabb) = solid.bounding_box() else { diff --git a/crates/bone-render/tests/edges.rs b/crates/bone-render/tests/edges.rs index ae76ab0..2836b67 100644 --- a/crates/bone-render/tests/edges.rs +++ b/crates/bone-render/tests/edges.rs @@ -1,10 +1,10 @@ use bone_kernel::{ - BrepSolid, Circle2, Curve2Kind, ExtrudeDirection, ExtrudeEndCondition, ExtrudeFeature, - ExtrudeProfile, ExtrudeSense, Line2, MergeResult, ProfileEdge, ProfileLoop, SolidMesh, - evaluate_extrude, + BrepSolid, Circle2, Curve2Kind, ExtrudeFeature, ExtrudeProfile, Line2, ProfileEdge, + ProfileLoop, SolidMesh, evaluate_extrude, }; use bone_render::{ EdgeScene, OffscreenContext, SnapshotFrame, SolidRenderer, SolidScene, Style, frame_isometric, + single_body_pick, }; use bone_types::{ Aabb3, Angle, AngleTolerance, Camera3, ChordHeightTolerance, DisplayMode, FeatureId, Length, @@ -39,16 +39,7 @@ fn blind(depth_mm: f64) -> ExtrudeFeature { let Ok(depth) = PositiveLength::new(Length::new::(depth_mm)) else { panic!("{depth_mm} mm is a positive length"); }; - ExtrudeFeature { - sketch: SketchId::null(), - direction: ExtrudeDirection::Normal { - sense: ExtrudeSense::Forward, - }, - end_condition: ExtrudeEndCondition::Blind { depth }, - draft: None, - thin_wall: None, - merge_result: MergeResult::Merge, - } + ExtrudeFeature::blind(SketchId::null(), depth) } fn unit_cube() -> BrepSolid { @@ -116,11 +107,19 @@ fn mesh_of(solid: &BrepSolid) -> SolidMesh { fn scenes(solid: &BrepSolid) -> (SolidScene, EdgeScene) { let mesh = mesh_of(solid); - let Ok(faces) = SolidScene::from_mesh(&mesh) else { + let Ok((body, table)) = single_body_pick(solid) else { + panic!("the solid builds a pick table"); + }; + let Ok(faces) = SolidScene::from_mesh(&mesh, body, &table) else { panic!("the mesh packs face pick ids"); }; - let Ok(edges) = EdgeScene::from_solid(solid, &mesh, ChordHeightTolerance::from_mm(CHORD_MM)) - else { + let Ok(edges) = EdgeScene::from_solid( + solid, + &mesh, + ChordHeightTolerance::from_mm(CHORD_MM), + body, + &table, + ) else { panic!("the solid packs edge pick ids"); }; (faces, edges) @@ -326,8 +325,16 @@ fn cylinder_shaded_no_edges_matches_golden() { fn cube_genuine_edges_classify_as_creases() { let solid = unit_cube(); let mesh = mesh_of(&solid); - let Ok(edges) = EdgeScene::from_solid(&solid, &mesh, ChordHeightTolerance::from_mm(CHORD_MM)) - else { + let Ok((body, table)) = single_body_pick(&solid) else { + panic!("the solid builds a pick table"); + }; + let Ok(edges) = EdgeScene::from_solid( + &solid, + &mesh, + ChordHeightTolerance::from_mm(CHORD_MM), + body, + &table, + ) else { panic!("the cube packs edge pick ids"); }; assert!(!edges.genuine().is_empty(), "the cube emits genuine edges"); @@ -345,8 +352,16 @@ fn cube_genuine_edges_classify_as_creases() { fn cube_flat_faces_emit_no_silhouette_candidates() { let solid = unit_cube(); let mesh = mesh_of(&solid); - let Ok(edges) = EdgeScene::from_solid(&solid, &mesh, ChordHeightTolerance::from_mm(CHORD_MM)) - else { + let Ok((body, table)) = single_body_pick(&solid) else { + panic!("the solid builds a pick table"); + }; + let Ok(edges) = EdgeScene::from_solid( + &solid, + &mesh, + ChordHeightTolerance::from_mm(CHORD_MM), + body, + &table, + ) else { panic!("the cube packs edge pick ids"); }; assert!( @@ -359,8 +374,16 @@ fn cube_flat_faces_emit_no_silhouette_candidates() { fn cylinder_side_yields_silhouette_candidates() { let solid = cylinder(); let mesh = mesh_of(&solid); - let Ok(edges) = EdgeScene::from_solid(&solid, &mesh, ChordHeightTolerance::from_mm(CHORD_MM)) - else { + let Ok((body, table)) = single_body_pick(&solid) else { + panic!("the solid builds a pick table"); + }; + let Ok(edges) = EdgeScene::from_solid( + &solid, + &mesh, + ChordHeightTolerance::from_mm(CHORD_MM), + body, + &table, + ) else { panic!("the cylinder packs edge pick ids"); }; assert!( @@ -375,3 +398,84 @@ fn cylinder_side_yields_silhouette_candidates() { "neighboring side facets disagree in orientation so a silhouette can form", ); } + +#[test] +fn edges_render_under_an_inset_viewport_offset() { + use bone_render::{ + GenuineEdge, PickId, RenderTargets, SolidDisplay, SolidFrameView, ViewportExtent, + ViewportPx, ViewportRegion, frame_isometric, + }; + use bone_types::CreaseAngle; + + let surface = ViewportExtent::new(ViewportPx::new(512), ViewportPx::new(512)); + let region = ViewportRegion::new( + ViewportPx::new(160), + ViewportPx::new(120), + ViewportExtent::new(ViewportPx::new(256), ViewportPx::new(256)), + ); + let crease = CreaseAngle::from_dot(-1.0); + let segment = |a: Point3, b: Point3| GenuineEdge::new(a, b, PickId::NONE, crease); + let edges = EdgeScene::from_genuine(vec![ + segment( + Point3::from_mm(-10.0, -10.0, 0.0), + Point3::from_mm(10.0, -10.0, 0.0), + ), + segment( + Point3::from_mm(10.0, -10.0, 0.0), + Point3::from_mm(10.0, 10.0, 0.0), + ), + segment( + Point3::from_mm(10.0, 10.0, 0.0), + Point3::from_mm(-10.0, 10.0, 0.0), + ), + segment( + Point3::from_mm(-10.0, 10.0, 0.0), + Point3::from_mm(-10.0, -10.0, 0.0), + ), + ]); + let aabb = Aabb3::from_corners( + Point3::from_mm(-15.0, -15.0, -15.0), + Point3::from_mm(15.0, 15.0, 15.0), + ); + let Ok(camera) = frame_isometric(aabb, region.extent()) else { + panic!("the box frames an isometric camera"); + }; + let ctx = make_context(surface); + let renderer = SolidRenderer::new(ctx.gpu(), ctx.color_format()); + let Ok(view) = SolidFrameView::new(camera, region) else { + panic!("the offset region yields a frame view"); + }; + ctx.render_passes(|encoder, color, pick, depth| { + renderer.encode_passes( + encoder, + RenderTargets::new(color, pick), + depth, + &SolidScene::empty(), + &edges, + &SolidDisplay { + view: &view, + style: &Style::default(), + mode: DisplayMode::ShadedWithEdges, + }, + ); + }); + let Ok(frame) = ctx.capture() else { + panic!("the offscreen color reads back"); + }; + let rgba = frame.rgba(); + let background = [rgba[0], rgba[1], rgba[2]]; + let delta = |a: u8, b: u8| i16::from(a) - i16::from(b); + let drawn = rgba + .chunks_exact(4) + .filter(|pixel| { + delta(pixel[0], background[0]).abs() + + delta(pixel[1], background[1]).abs() + + delta(pixel[2], background[2]).abs() + > 24 + }) + .count(); + assert!( + drawn > 50, + "3d edges must survive a non-zero viewport offset, drew {drawn}", + ); +} diff --git a/crates/bone-render/tests/frame_budget.rs b/crates/bone-render/tests/frame_budget.rs index 4a6aace..c55adaf 100644 --- a/crates/bone-render/tests/frame_budget.rs +++ b/crates/bone-render/tests/frame_budget.rs @@ -1,12 +1,8 @@ -use bone_document::{ - DimensionKind, EditOutcome, Sketch, SketchDimension, SketchEdit, SketchEntity, SketchRelation, - evaluate_extrude, evaluate_sketch, -}; -use bone_kernel::{ - ExtrudeDirection, ExtrudeEndCondition, ExtrudeFeature, ExtrudeSense, MergeResult, -}; +use bone_document::{Sketch3, Sketch3Entity, Sketch3Relation, evaluate_extrude, evaluate_sketch}; +use bone_kernel::ExtrudeFeature; use bone_render::{ Camera2, OffscreenContext, SketchRenderer, SketchScene, SolidRenderer, SolidScene, Style, + single_body_pick, }; use bone_types::{ Aabb3, AngleTolerance, BudgetCeiling, Camera3, ChordHeightTolerance, FeatureId, Point2, Point3, @@ -39,89 +35,74 @@ fn xy_plane() -> SketchPlaneBasis { basis } -fn add_point(s: Sketch, x: f64, y: f64) -> (Sketch, SketchEntityId) { - let Ok((next, EditOutcome::Entity(id))) = s.apply(SketchEdit::AddEntity(SketchEntity::point( - Point2::from_mm(x, y), - ))) else { - panic!("add point"); - }; - (next, id) -} - -fn add_line(s: Sketch, a: SketchEntityId, b: SketchEntityId) -> (Sketch, SketchEntityId) { - let Ok((next, EditOutcome::Entity(id))) = - s.apply(SketchEdit::AddEntity(SketchEntity::line(a, b, false))) - else { - panic!("add line"); - }; - (next, id) +fn add_rel3(s: &Sketch3, r: Sketch3Relation) -> Sketch3 { + s.with_relation(r).0 } -fn add_circle(s: Sketch, center: SketchEntityId, radius_mm: f64) -> Sketch { - let Ok((next, _)) = s.apply(SketchEdit::AddEntity(SketchEntity::circle( - center, - UomLength::new::(radius_mm), +fn reference_sketch3() -> (Sketch3, SketchEntityId) { + let plane = xy_plane(); + let (s, p0) = add_point3(&Sketch3::on_plane(plane), 0.0, 0.0); + let (s, p1) = add_point3(&s, 10.0, 0.0); + let (s, p2) = add_point3(&s, 10.0, 5.0); + let (s, p3) = add_point3(&s, 0.0, 5.0); + let (s, e_bottom) = add_line3(&s, p0, p1); + let (s, e_right) = add_line3(&s, p1, p2); + let (s, e_top) = add_line3(&s, p2, p3); + let (s, e_left) = add_line3(&s, p3, p0); + let s = add_rel3( + &s, + Sketch3Relation::AlongAxis { + line: e_bottom, + axis: plane.x_axis(), + }, + ); + let s = add_rel3( + &s, + Sketch3Relation::AlongAxis { + line: e_top, + axis: plane.x_axis(), + }, + ); + let s = add_rel3( + &s, + Sketch3Relation::AlongAxis { + line: e_right, + axis: plane.y_axis(), + }, + ); + let s = add_rel3( + &s, + Sketch3Relation::AlongAxis { + line: e_left, + axis: plane.y_axis(), + }, + ); + let s = add_rel3(&s, Sketch3Relation::Fix(p0)); + let s = add_rel3( + &s, + Sketch3Relation::Distance { + a: p0, + b: p1, + value: UomLength::new::(10.0), + reference: false, + }, + ); + let (s, _circle) = s.with_entity(Sketch3Entity::circle( + p0, + UomLength::new::(5.0), + plane.normal(), false, - ))) else { - panic!("add circle"); - }; - next -} - -fn add_arc( - s: Sketch, - center: SketchEntityId, - start: SketchEntityId, - end: SketchEntityId, -) -> Sketch { - let Ok((next, _)) = s.apply(SketchEdit::AddEntity(SketchEntity::arc( - center, start, end, false, - ))) else { - panic!("add arc"); - }; - next -} - -fn add_relation(s: Sketch, r: SketchRelation) -> Sketch { - let Ok((next, _)) = s.apply(SketchEdit::AddRelation(r)) else { - panic!("add relation"); - }; - next -} - -fn add_linear_dim(s: Sketch, a: SketchEntityId, b: SketchEntityId, value_mm: f64) -> Sketch { - let Ok((next, _)) = s.apply(SketchEdit::AddDimension(SketchDimension::Linear { - a, - b, - value: UomLength::new::(value_mm), - kind: DimensionKind::Driving, - })) else { - panic!("add linear dimension"); - }; - next -} - -fn reference_sketch() -> (Sketch, SketchEntityId) { - let s = Sketch::new(xy_plane()); - let (s, p0) = add_point(s, 0.0, 0.0); - let (s, p1) = add_point(s, 10.0, 0.0); - let (s, p2) = add_point(s, 10.0, 5.0); - let (s, p3) = add_point(s, 0.0, 5.0); - let (s, e_bottom) = add_line(s, p0, p1); - let (s, e_right) = add_line(s, p1, p2); - let (s, e_top) = add_line(s, p2, p3); - let (s, e_left) = add_line(s, p3, p0); - let s = add_relation(s, SketchRelation::Horizontal(e_bottom)); - let s = add_relation(s, SketchRelation::Horizontal(e_top)); - let s = add_relation(s, SketchRelation::Vertical(e_right)); - let s = add_relation(s, SketchRelation::Vertical(e_left)); - let s = add_relation(s, SketchRelation::Fix(p0)); - let s = add_linear_dim(s, p0, p1, 10.0); - let s = add_circle(s, p0, 5.0); - let (s, arc_center) = add_point(s, -12.0, 0.0); - let (s, arc_start) = add_point(s, -8.0, 0.0); - let (s, arc_end) = add_point(s, -12.0, 4.0); - let s = add_arc(s, arc_center, arc_start, arc_end); + )); + let (s, arc_center) = add_point3(&s, -12.0, 0.0); + let (s, arc_start) = add_point3(&s, -8.0, 0.0); + let (s, arc_end) = add_point3(&s, -12.0, 4.0); + let (s, _arc) = s.with_entity(Sketch3Entity::arc( + arc_center, + arc_start, + arc_end, + plane.normal(), + false, + )); (s, p2) } @@ -130,7 +111,8 @@ fn reference_sketch() -> (Sketch, SketchEntityId) { reason = "stepper bundles per-frame pipeline state alongside per-step drag inputs" )] fn drag_resolve_render( - current: &Sketch, + current: &Sketch3, + plane: SketchPlaneBasis, dragged: SketchEntityId, target: Point2, solver_budget: BudgetCeiling, @@ -138,12 +120,16 @@ fn drag_resolve_render( ctx: &OffscreenContext, camera: Camera2, style: &Style, -) -> (Sketch, Duration) { +) -> (Sketch3, Duration) { let started = Instant::now(); - let Ok(next) = current.solve_with_drag(dragged, target, solver_budget) else { + let (tx, ty) = target.coords_mm(); + let Ok(next) = + current.solve_with_drag_pins(&[(dragged, Point3::from_mm(tx, ty, 0.0))], solver_budget) + else { panic!("drag must converge inside solver budget"); }; - let Ok(scene) = SketchScene::extract(&next) else { + let projected = next.project_onto(plane); + let Ok(scene) = SketchScene::extract(projected.sketch()) else { panic!("scene extract must succeed for solved sketch"); }; let Ok(_frame) = renderer.render(ctx, &scene, camera, style) else { @@ -160,7 +146,8 @@ const DRAG_STEPS: u32 = 16; ignore = "frame budget assertions are only meaningful in release builds" )] fn drag_resolve_plus_render_fits_frame_budget_on_reference_sketch() { - let (sketch, dragged) = reference_sketch(); + let plane = xy_plane(); + let (sketch, dragged) = reference_sketch3(); let Ok(sketch) = sketch.solve() else { panic!("reference sketch must solve at rest"); }; @@ -175,6 +162,7 @@ fn drag_resolve_plus_render_fits_frame_budget_on_reference_sketch() { let warmup_target = Point2::from_mm(10.0, 4.0); let (warmed, _warmup_elapsed) = drag_resolve_render( &sketch, + plane, dragged, warmup_target, solver_budget, @@ -189,6 +177,7 @@ fn drag_resolve_plus_render_fits_frame_budget_on_reference_sketch() { let target = Point2::from_mm(10.0, 5.0 + 0.1 * f64::from(i)); let (next, elapsed) = drag_resolve_render( ¤t, + plane, dragged, target, solver_budget, @@ -221,38 +210,30 @@ fn drag_resolve_plus_render_fits_frame_budget_on_reference_sketch() { println!("median {median:?}, worst {worst:?}"); } -fn reference_rectangle() -> Sketch { - let s = Sketch::new(xy_plane()); - let (s, p0) = add_point(s, 0.0, 0.0); - let (s, p1) = add_point(s, 10.0, 0.0); - let (s, p2) = add_point(s, 10.0, 5.0); - let (s, p3) = add_point(s, 0.0, 5.0); - let (s, e_bottom) = add_line(s, p0, p1); - let (s, e_right) = add_line(s, p1, p2); - let (s, e_top) = add_line(s, p2, p3); - let (s, e_left) = add_line(s, p3, p0); - let s = add_relation(s, SketchRelation::Horizontal(e_bottom)); - let s = add_relation(s, SketchRelation::Horizontal(e_top)); - let s = add_relation(s, SketchRelation::Vertical(e_right)); - let s = add_relation(s, SketchRelation::Vertical(e_left)); - let s = add_relation(s, SketchRelation::Fix(p0)); - add_linear_dim(s, p0, p1, 10.0) +fn add_point3(s: &Sketch3, x: f64, y: f64) -> (Sketch3, SketchEntityId) { + s.with_entity(Sketch3Entity::point(Point3::from_mm(x, y, 0.0))) +} + +fn add_line3(s: &Sketch3, a: SketchEntityId, b: SketchEntityId) -> (Sketch3, SketchEntityId) { + s.with_entity(Sketch3Entity::line(a, b, false)) +} + +fn reference_rectangle() -> Sketch3 { + let (s, p0) = add_point3(&Sketch3::on_plane(xy_plane()), 0.0, 0.0); + let (s, p1) = add_point3(&s, 10.0, 0.0); + let (s, p2) = add_point3(&s, 10.0, 5.0); + let (s, p3) = add_point3(&s, 0.0, 5.0); + let (s, _) = add_line3(&s, p0, p1); + let (s, _) = add_line3(&s, p1, p2); + let (s, _) = add_line3(&s, p2, p3); + add_line3(&s, p3, p0).0 } fn blind(depth_mm: f64) -> ExtrudeFeature { let Ok(depth) = PositiveLength::new(UomLength::new::(depth_mm)) else { panic!("{depth_mm} mm is a positive length"); }; - ExtrudeFeature { - sketch: SketchId::null(), - direction: ExtrudeDirection::Normal { - sense: ExtrudeSense::Forward, - }, - end_condition: ExtrudeEndCondition::Blind { depth }, - draft: None, - thin_wall: None, - merge_result: MergeResult::Merge, - } + ExtrudeFeature::blind(SketchId::null(), depth) } fn direction(x: f64, y: f64, z: f64) -> UnitVec3 { @@ -275,7 +256,7 @@ fn framed(aabb: Aabb3, from: UnitVec3, up: UnitVec3) -> Camera3 { camera } -fn frame_slab(sketch: &Sketch, extrude: FeatureId, depth_mm: f64) -> Camera3 { +fn frame_slab(sketch: &Sketch3, extrude: FeatureId, depth_mm: f64) -> Camera3 { let evaluated = evaluate_sketch(sketch); let extruded = evaluate_extrude(extrude, &evaluated, &blind(depth_mm)); let Some(solid) = extruded.solid() else { @@ -295,7 +276,7 @@ struct SolidStage<'a> { } impl SolidStage<'_> { - fn step(&mut self, sketch: &Sketch, extrude: FeatureId, depth_mm: f64) -> Duration { + fn step(&mut self, sketch: &Sketch3, extrude: FeatureId, depth_mm: f64) -> Duration { let started = Instant::now(); let evaluated = evaluate_sketch(sketch); let extruded = evaluate_extrude(extrude, &evaluated, &blind(depth_mm)); @@ -308,7 +289,10 @@ impl SolidStage<'_> { ) else { panic!("the slab tessellates at {depth_mm} mm"); }; - let Ok(scene) = SolidScene::from_mesh(&mesh) else { + let Ok((body, table)) = single_body_pick(solid) else { + panic!("the slab builds a pick table"); + }; + let Ok(scene) = SolidScene::from_mesh(&mesh, body, &table) else { panic!("the slab mesh packs face pick ids"); }; let Ok(_frame) = self diff --git a/crates/bone-render/tests/solid_pipeline.rs b/crates/bone-render/tests/solid_pipeline.rs index e6f418d..83c05b5 100644 --- a/crates/bone-render/tests/solid_pipeline.rs +++ b/crates/bone-render/tests/solid_pipeline.rs @@ -1,11 +1,9 @@ use bone_kernel::{ - BrepEdge, BrepFace, BrepSolid, BrepVertex, Circle2, Curve2Kind, ExtrudeDirection, - ExtrudeEndCondition, ExtrudeFeature, ExtrudeProfile, ExtrudeSense, MergeResult, ProfileLoop, - evaluate_extrude, + BrepSolid, Circle2, Curve2Kind, ExtrudeFeature, ExtrudeProfile, ProfileLoop, evaluate_extrude, }; use bone_render::{ - OffscreenContext, PickId, PickIndex, PickQuery, PickedItem, SnapshotFrame, SolidRenderer, - SolidScene, Style, ViewportPx, + OffscreenContext, PickId, PickQuery, PickedItem, SnapshotFrame, SolidRenderer, SolidScene, + Style, ViewportPx, single_body_pick, }; use bone_types::{ Aabb3, AngleTolerance, Camera3, ChordHeightTolerance, FeatureId, Length, Plane3, Point2, @@ -53,16 +51,7 @@ fn blind(depth_mm: f64) -> ExtrudeFeature { let Ok(depth) = PositiveLength::new(Length::new::(depth_mm)) else { panic!("{depth_mm} mm is a positive length"); }; - ExtrudeFeature { - sketch: SketchId::null(), - direction: ExtrudeDirection::Normal { - sense: ExtrudeSense::Forward, - }, - end_condition: ExtrudeEndCondition::Blind { depth }, - draft: None, - thin_wall: None, - merge_result: MergeResult::Merge, - } + ExtrudeFeature::blind(SketchId::null(), depth) } fn solid_from(loops: Vec, depth_mm: f64) -> BrepSolid { @@ -113,7 +102,10 @@ fn mesh_scene(solid: &BrepSolid) -> SolidScene { ) else { panic!("the solid tessellates"); }; - let Ok(scene) = SolidScene::from_mesh(&mesh) else { + let Ok((body, table)) = single_body_pick(solid) else { + panic!("the solid builds a pick table"); + }; + let Ok(scene) = SolidScene::from_mesh(&mesh, body, &table) else { panic!("the mesh packs face pick ids"); }; scene @@ -172,13 +164,10 @@ fn solid_pass_writes_unpackable_face_pick_ids() { ); let _frame = render(&ctx, &scene, camera); - let Ok(index) = PickIndex::build_solid( - solid.iter_faces().map(BrepFace::id), - solid.iter_edges().map(BrepEdge::id), - solid.iter_vertices().map(BrepVertex::id), - ) else { - panic!("the solid's faces, edges, and vertices build a pick index"); + let Ok((_, table)) = single_body_pick(&solid) else { + panic!("the solid builds a pick table"); }; + let index = table.pick_index(); let picker = ctx.picker(index.clone()); let Ok(corner) = picker.raw_at(PickQuery::new(ViewportPx::new(3), ViewportPx::new(3))) else { diff --git a/crates/bone-render/tests/standard_views.rs b/crates/bone-render/tests/standard_views.rs index 9fba18e..7980b85 100644 --- a/crates/bone-render/tests/standard_views.rs +++ b/crates/bone-render/tests/standard_views.rs @@ -1,12 +1,12 @@ use core::time::Duration; use bone_kernel::{ - BrepSolid, Curve2Kind, ExtrudeDirection, ExtrudeEndCondition, ExtrudeFeature, ExtrudeProfile, - ExtrudeSense, Line2, MergeResult, ProfileEdge, ProfileLoop, evaluate_extrude, + BrepSolid, Curve2Kind, ExtrudeFeature, ExtrudeProfile, Line2, ProfileEdge, ProfileLoop, + evaluate_extrude, }; use bone_render::{ CameraTween, EdgeScene, OffscreenContext, SnapshotFrame, SolidRenderer, SolidScene, Style, - frame_standard_view, + frame_standard_view, single_body_pick, }; use bone_types::{ Aabb3, AngleTolerance, Camera3, ChordHeightTolerance, CubicEasing, DisplayMode, FeatureId, @@ -59,16 +59,7 @@ fn slab() -> BrepSolid { let Ok(depth) = PositiveLength::new(Length::new::(3.0)) else { panic!("3 mm is a positive length"); }; - let feature = ExtrudeFeature { - sketch: SketchId::null(), - direction: ExtrudeDirection::Normal { - sense: ExtrudeSense::Forward, - }, - end_condition: ExtrudeEndCondition::Blind { depth }, - draft: None, - thin_wall: None, - merge_result: MergeResult::Merge, - }; + let feature = ExtrudeFeature::blind(SketchId::null(), depth); let Ok(solid) = evaluate_extrude(features.insert(()), &profile, &feature) else { panic!("the rectangle extrudes into a 2x1x3 slab"); }; @@ -89,11 +80,19 @@ fn scenes(solid: &BrepSolid) -> (SolidScene, EdgeScene) { ) else { panic!("the solid tessellates"); }; - let Ok(faces) = SolidScene::from_mesh(&mesh) else { + let Ok((body, table)) = single_body_pick(solid) else { + panic!("the solid builds a pick table"); + }; + let Ok(faces) = SolidScene::from_mesh(&mesh, body, &table) else { panic!("the mesh packs face pick ids"); }; - let Ok(edges) = EdgeScene::from_solid(solid, &mesh, ChordHeightTolerance::from_mm(CHORD_MM)) - else { + let Ok(edges) = EdgeScene::from_solid( + solid, + &mesh, + ChordHeightTolerance::from_mm(CHORD_MM), + body, + &table, + ) else { panic!("the solid packs edge pick ids"); }; (faces, edges)