From 2774d90e2363a592cc2daa12084ad11fc764f495 Mon Sep 17 00:00:00 2001 From: Raphael Amorim Date: Tue, 13 Feb 2024 00:29:55 +0100 Subject: [PATCH] layer_brush with rpass --- sugarloaf/src/components/layer/mod.rs | 12 ++++++++++-- sugarloaf/src/sugarloaf.rs | 26 ++++++++++++++------------ 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/sugarloaf/src/components/layer/mod.rs b/sugarloaf/src/components/layer/mod.rs index 954a3be4c2..bbdc8bda97 100644 --- a/sugarloaf/src/components/layer/mod.rs +++ b/sugarloaf/src/components/layer/mod.rs @@ -438,16 +438,24 @@ impl LayerBrush { self.prepare_layer += 1; } + #[inline] pub fn render<'a>( &'a self, layer: usize, - bounds: Rectangle, render_pass: &mut wgpu::RenderPass<'a>, + rect_bounds: Option>, ) { if let Some(layer) = self.layers.get(layer) { render_pass.set_pipeline(&self.pipeline); - render_pass.set_scissor_rect(bounds.x, bounds.y, bounds.width, bounds.height); + if let Some(bounds) = rect_bounds { + render_pass.set_scissor_rect( + bounds.x, + bounds.y, + bounds.width, + bounds.height, + ); + } render_pass.set_bind_group(1, &self.texture, &[]); render_pass diff --git a/sugarloaf/src/sugarloaf.rs b/sugarloaf/src/sugarloaf.rs index ef45b60352..50ab60debb 100644 --- a/sugarloaf/src/sugarloaf.rs +++ b/sugarloaf/src/sugarloaf.rs @@ -347,6 +347,13 @@ impl Sugarloaf { // } else { // wgpu::LoadOp::Load // }; + if let Some(bg_image) = &self.background_image { + self.layer_brush.prepare_ref( + &mut encoder, + &mut self.ctx, + &[bg_image], + ); + } { let mut rpass = @@ -365,18 +372,9 @@ impl Sugarloaf { depth_stencil_attachment: None, }); - // if let Some(bg_image) = &self.background_image { - // self.layer_brush.prepare_ref( - // &mut encoder, - // &mut self.ctx, - // &[bg_image], - // ); - - // self.layer_brush - // .render_with_encoder(0, view, &mut encoder, None); - - // self.layer_brush.end_frame(); - // } + if self.background_image.is_some() { + self.layer_brush.render(0, &mut rpass, None); + } self.rect_brush .render(&mut rpass, view, &self.state, &mut self.ctx); @@ -428,6 +426,10 @@ impl Sugarloaf { // self.layer_brush.end_frame(); } + if self.background_image.is_some() { + self.layer_brush.end_frame(); + } + self.ctx.queue.submit(Some(encoder.finish())); frame.present(); }