From 0360873dc4f813765281418587fde44f0a4126f0 Mon Sep 17 00:00:00 2001 From: mars Date: Sat, 7 May 2022 21:48:54 -0600 Subject: [PATCH] Add and record Skinning phase --- src/lib.rs | 12 ++++++++++++ src/phase.rs | 2 ++ 2 files changed, 14 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index b106a5d..cf5a980 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -224,6 +224,18 @@ impl Renderer { }); } + if let Some(skinning) = phase_passes.get_vec(&Phase::Skinning) { + let mut cmds = encoder.begin_compute_pass(&wgpu::ComputePassDescriptor { + label: Some("Skinning Phase"), + }); + + skinning.iter().for_each(|pass_index| { + let phase_data = frame_data.make_phase_data(Phase::Skinning, &viewport); + let pass = &self.render_passes[*pass_index]; + pass.record_compute(phase_data, &mut cmds); + }) + } + let record_render = |phase| { let cmds = Mutex::new(Vec::new()); if let Some(passes) = phase_passes.get_vec(&phase) { diff --git a/src/phase.rs b/src/phase.rs index 5df8664..4d2efd2 100644 --- a/src/phase.rs +++ b/src/phase.rs @@ -6,6 +6,7 @@ #[derive(Copy, Clone, Debug, Hash, Eq, Ord, PartialEq, PartialOrd, strum::EnumIter)] pub enum Phase { Upload, + Skinning, Depth, Opaque, Transparent, @@ -17,6 +18,7 @@ impl Phase { use Phase::*; match self { Upload => PhaseKind::Command, + Skinning => PhaseKind::Compute, Depth | Opaque | Transparent | Overlay => PhaseKind::Render, } }