diff --git a/src/legion.rs b/src/legion.rs index bc8383f..8fbf92e 100644 --- a/src/legion.rs +++ b/src/legion.rs @@ -30,6 +30,8 @@ pub fn build_renderer( resources: &mut Resources, builder: &mut Builder, ) { + puffin::profile_function!(); + let renderer = resources.get_mut::().unwrap(); let viewport_info = resources.get::().unwrap(); let mesh_shaders = resources.get::().unwrap(); @@ -78,7 +80,13 @@ fn render( #[resource] mesh_pass: &mut pass::RenderPassBox, #[resource] debug_pass: &mut pass::RenderPassBox, ) { - let viewports = callbacks.get_viewports(); + puffin::profile_function!(); + + let viewports = { + puffin::profile_scope!("RenderCallbacks::get_viewports()"); + callbacks.get_viewports() + }; + if viewports.len() > 1 { eprintln!("Cyborg does not currently support more than one viewport at a time!"); return; @@ -92,6 +100,8 @@ fn render( #[system] fn present(#[resource] callbacks: &mut T) { + puffin::profile_function!(); + callbacks.present(); } @@ -101,6 +111,8 @@ fn draw_transformed_meshes( transform: &scene::Transform, mesh: &scene::Mesh, ) { + puffin::profile_function!(); + mesh_pass.add_transformed_meshes(&[mesh::TransformedMesh { transform: transform.transform, mesh: mesh.mesh, @@ -113,6 +125,8 @@ fn draw_debug( #[resource] debug_pass: &pass::RenderPassBox, draw_list: &scene::DebugDrawList, ) { + puffin::profile_function!(); + debug_pass.add_draw_list(draw_list); } @@ -122,6 +136,8 @@ fn draw_debug_transformed( world: &SubWorld, query: &mut Query<(&scene::DebugDrawList, &scene::Transform)>, ) { + puffin::profile_function!(); + query.par_iter_chunks(world).for_each(|draw_list_chunk| { let mut sub_list = scene::DebugDrawList::default(); for (draw_list, transform) in draw_list_chunk { diff --git a/src/lib.rs b/src/lib.rs index c45bd91..110e9f2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -179,6 +179,8 @@ impl Renderer { target: &dyn Viewport, camera: &Camera, ) { + puffin::profile_function!(); + self.frame_index += 1; if self.frame_index >= self.frame_datas.len() { self.frame_index = 0;