Add placeholder phases and improve test

This commit is contained in:
mars 2022-04-03 22:11:14 -06:00
parent 25ef497821
commit 67f0eb6ef1
2 changed files with 51 additions and 7 deletions

View File

@ -70,6 +70,7 @@ pub mod gpu {
mod tests { mod tests {
use super::*; use super::*;
#[derive(Copy, Clone)]
struct DummyPass; struct DummyPass;
impl RenderPass for DummyPass { impl RenderPass for DummyPass {
@ -81,6 +82,14 @@ mod tests {
fn begin_frame(&mut self, data: &mut Self::FrameData, phases: &mut PhaseList) { fn begin_frame(&mut self, data: &mut Self::FrameData, phases: &mut PhaseList) {
println!("begin_frame()"); println!("begin_frame()");
for phase in PrePhase::iter() {
phases.insert_pre(phase);
}
for phase in ViewportPhase::iter() {
phases.insert_viewport(phase);
}
} }
fn render_pre( fn render_pre(
@ -106,11 +115,18 @@ mod tests {
#[test] #[test]
fn dummy_pass() { fn dummy_pass() {
use std::sync::{Arc, RwLock}; use std::sync::{Arc, RwLock};
let dummy_pass = DummyPass; let render_passes = (0..10)
let dummy_pass = Arc::new(RwLock::new(dummy_pass)); .map(|_| {
let dummy_pass = RenderPassBox::new(dummy_pass, 1); let dummy_pass = DummyPass;
let render_passes = vec![dummy_pass]; let dummy_pass = Arc::new(RwLock::new(dummy_pass));
RenderPassBox::new(dummy_pass, 1)
})
.collect();
let mut renderer = Renderer { render_passes }; let mut renderer = Renderer { render_passes };
renderer.render();
for n in 0..10 {
println!("Frame #{}", n);
renderer.render();
}
} }
} }

View File

@ -13,12 +13,30 @@
use std::collections::HashMap; use std::collections::HashMap;
/// The rendering pre-phase group; before viewport acquisition. /// The rendering pre-phase group; before viewport acquisition.
///
/// These variants are temporary and for testing purposes.
#[derive(Copy, Clone, Debug, Hash, Eq, Ord, PartialEq, PartialOrd, strum::EnumIter)] #[derive(Copy, Clone, Debug, Hash, Eq, Ord, PartialEq, PartialOrd, strum::EnumIter)]
pub enum PrePhase {} pub enum PrePhase {
VertexSkinning,
}
/// The main viewport rendering phase group. /// The main viewport rendering phase group.
///
/// These variants are temporary and for testing purposes.
#[derive(Copy, Clone, Debug, Hash, Eq, Ord, PartialEq, PartialOrd, strum::EnumIter)] #[derive(Copy, Clone, Debug, Hash, Eq, Ord, PartialEq, PartialOrd, strum::EnumIter)]
pub enum ViewportPhase {} pub enum ViewportPhase {
CullLights,
CullPolys,
ShadowRendering,
Depth,
DepthMips,
AO,
Opaque,
Transparent,
Bloom,
Overlay,
Composite
}
/// A container of phases of each group. /// A container of phases of each group.
/// ///
@ -36,6 +54,16 @@ impl PhaseList {
self.pre.clear(); self.pre.clear();
self.viewport.clear(); self.viewport.clear();
} }
/// Inserts a [PrePhase].
pub fn insert_pre(&mut self, phase: PrePhase) {
self.pre.push(phase);
}
/// Inserts a [ViewportPhase].
pub fn insert_viewport(&mut self, phase: ViewportPhase) {
self.viewport.push(phase);
}
} }
/// Maps phases of each group to sets of values. /// Maps phases of each group to sets of values.