54 lines
1.3 KiB
Rust
54 lines
1.3 KiB
Rust
use super::*;
|
|
use crate::mesh::*;
|
|
|
|
pub struct FrameData {}
|
|
|
|
pub struct MeshPass {
|
|
attr_store: Arc<AttrStore>,
|
|
mesh_pool: Arc<MeshPool>,
|
|
}
|
|
|
|
impl MeshPass {
|
|
pub fn new(device: Arc<wgpu::Device>) -> Self {
|
|
let attr_store = AttrStore::new();
|
|
let mesh_pool = MeshPool::new(device, attr_store.to_owned());
|
|
|
|
Self {
|
|
attr_store,
|
|
mesh_pool,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl RenderPass for MeshPass {
|
|
type FrameData = FrameData;
|
|
|
|
fn create_frame_data(&mut self) -> FrameData {
|
|
FrameData {}
|
|
}
|
|
|
|
fn begin_frame(&mut self, data: &mut FrameData, phases: &mut PhaseList) {
|
|
println!("MeshPass::begin_frame()");
|
|
|
|
phases.insert_pre(PrePhase::VertexSkinning);
|
|
|
|
phases.insert_viewport(ViewportPhase::Depth);
|
|
phases.insert_viewport(ViewportPhase::Opaque);
|
|
phases.insert_viewport(ViewportPhase::Transparent);
|
|
}
|
|
|
|
fn render_pre(&self, phase: PrePhase, data: &FrameData, cmds: &mut gpu::RenderBundleEncoder) {
|
|
println!("MeshPass::render_pre(phase: {:?})", phase);
|
|
}
|
|
|
|
fn render_viewport(
|
|
&self,
|
|
phase: ViewportPhase,
|
|
data: &FrameData,
|
|
viewport: &ViewportData,
|
|
cmds: &mut gpu::RenderBundleEncoder,
|
|
) {
|
|
println!("MeshPass::render_viewport(phase: {:?})", phase);
|
|
}
|
|
}
|