Scene::print_path_counts
diff --git a/examples/scenes/src/mmark.rs b/examples/scenes/src/mmark.rs index 3deea8d..ac4924a 100644 --- a/examples/scenes/src/mmark.rs +++ b/examples/scenes/src/mmark.rs
@@ -105,7 +105,7 @@ element.is_split ^= true; } } - let label = format!("mmark test: {} path elements (up/down to adjust)", n); + let label = format!("mmark test: complexity: {}, {} path elements (up/down to adjust)", c, n); params.text.add( scene, None,
diff --git a/examples/with_winit/src/lib.rs b/examples/with_winit/src/lib.rs index 8346274..fa23ee2 100644 --- a/examples/with_winit/src/lib.rs +++ b/examples/with_winit/src/lib.rs
@@ -181,6 +181,7 @@ } let mut prev_scene_ix = scene_ix - 1; let mut modifiers = ModifiersState::default(); + let mut debug_dump_time = Instant::now(); event_loop .run(move |event, event_loop| match event { Event::WindowEvent { @@ -525,6 +526,23 @@ frame_time_us: (new_time - frame_start_time).as_micros() as u64, }); frame_start_time = new_time; + + if (new_time - debug_dump_time).as_secs() > 2 && scene_complexity.is_some() { + scene.print_path_counts(); + //let bump_estimate = scene.bump_estimate(None); + let bump_actual = scene_complexity.as_ref().unwrap(); + //println!("Last frame estimated bump buffer counts:{bump_estimate}\n"); + println!( + "Last frame actual bump buffer counts:{}\n \ + \tBlend:\t\t\t{}\n\ + \tError Bits:\t\t0x{:#08x}\n\ + --------\n", + bump_actual.memory(), + bump_actual.blend, + bump_actual.failed + ); + debug_dump_time = new_time; + } } _ => {} }
diff --git a/shader/flatten.wgsl b/shader/flatten.wgsl index 6b20026..dede2f2 100644 --- a/shader/flatten.wgsl +++ b/shader/flatten.wgsl
@@ -421,7 +421,7 @@ let normalized_offset = offset / cubic_params.chord_len; let dist_scaled = normalized_offset * es.params.ch; // NOTE: set this to "ifndef" to lower to arcs before flattening. Use ifdef to lower directly to lines. -#ifdef arcs +#ifndef arcs let arclen = length(es.p0 - es.p1) / es.params.ch; let est_err = (1. / 120.) / tol * abs(k1) * (arclen + 0.4 * abs(k1 * offset)); let n_subdiv = cbrt(est_err); @@ -546,7 +546,7 @@ path_ix: u32, begin: vec2f, end: vec2f, center: vec2f, angle: f32, transform: Transform ) { // NOTE: change this to "ifndef" to just render the arc chords. -#ifdef ablate_arc_flattening +#ifndef ablate_arc_flattening output_line_with_transform(path_ix, begin, end, transform); #else var p0 = transform_apply(transform, begin);
diff --git a/src/lib.rs b/src/lib.rs index 194b9a0..dcdc731 100644 --- a/src/lib.rs +++ b/src/lib.rs
@@ -434,7 +434,7 @@ let mut render = Render::new(); let encoding = scene.encoding(); // TODO: turn this on; the download feature interacts with CPU dispatch - let robust = false; + let robust = true; let recording = render.render_encoding_coarse(encoding, &self.shaders, params, robust); let target = render.out_image(); let bump_buf = render.bump_buf();
diff --git a/src/scene.rs b/src/scene.rs index c93d68a..c272d3c 100644 --- a/src/scene.rs +++ b/src/scene.rs
@@ -29,6 +29,10 @@ Self::default() } + pub fn print_path_counts(&self) { + println!("scene n_paths: {}, n_path_segments: {}", self.encoding.n_paths, self.encoding.n_path_segments); + } + /// Removes all content from the scene. pub fn reset(&mut self) { self.encoding.reset();