state::render cleanup
This commit is contained in:
parent
450fc7a518
commit
2fdae1a23a
1 changed files with 39 additions and 16 deletions
|
@ -341,8 +341,8 @@ impl State {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn render(&mut self) -> Result<(), wgpu::SurfaceError> {
|
pub fn render(&mut self) -> Result<(), wgpu::SurfaceError> {
|
||||||
let output = self.surface.get_current_texture()?;
|
let surface_texture = self.surface.get_current_texture()?;
|
||||||
let view = output
|
let surface_view = surface_texture
|
||||||
.texture
|
.texture
|
||||||
.create_view(&wgpu::TextureViewDescriptor::default());
|
.create_view(&wgpu::TextureViewDescriptor::default());
|
||||||
let mut encoder = self
|
let mut encoder = self
|
||||||
|
@ -352,10 +352,10 @@ impl State {
|
||||||
});
|
});
|
||||||
|
|
||||||
{
|
{
|
||||||
let mut render_pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
|
let mut geom_render_pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
|
||||||
label: Some("Render Pass"),
|
label: Some("Geometry Render Pass"),
|
||||||
color_attachments: &[Some(wgpu::RenderPassColorAttachment {
|
color_attachments: &[Some(wgpu::RenderPassColorAttachment {
|
||||||
view: &view,
|
view: &surface_view,
|
||||||
resolve_target: None,
|
resolve_target: None,
|
||||||
ops: wgpu::Operations {
|
ops: wgpu::Operations {
|
||||||
load: wgpu::LoadOp::Clear(wgpu::Color {
|
load: wgpu::LoadOp::Clear(wgpu::Color {
|
||||||
|
@ -377,16 +377,9 @@ impl State {
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
render_pass.set_pipeline(&self.light_debug_pass.pipeline);
|
geom_render_pass.set_vertex_buffer(1, self.instance_buffer.slice(..));
|
||||||
render_pass.draw_light_model(
|
geom_render_pass.set_pipeline(&self.geometry_pass.pipeline);
|
||||||
&self.light_model,
|
geom_render_pass.draw_model_instanced(
|
||||||
&self.camera_bind_group,
|
|
||||||
&self.light_bind_group,
|
|
||||||
);
|
|
||||||
|
|
||||||
render_pass.set_vertex_buffer(1, self.instance_buffer.slice(..));
|
|
||||||
render_pass.set_pipeline(&self.geometry_pass.pipeline);
|
|
||||||
render_pass.draw_model_instanced(
|
|
||||||
&self.model,
|
&self.model,
|
||||||
0..self.instances.len() as u32,
|
0..self.instances.len() as u32,
|
||||||
&self.camera_bind_group,
|
&self.camera_bind_group,
|
||||||
|
@ -394,9 +387,39 @@ impl State {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
let mut light_debug_render_pass =
|
||||||
|
encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
|
||||||
|
label: Some("Light Debug Render Pass"),
|
||||||
|
color_attachments: &[Some(wgpu::RenderPassColorAttachment {
|
||||||
|
view: &surface_view,
|
||||||
|
resolve_target: None,
|
||||||
|
ops: wgpu::Operations {
|
||||||
|
load: wgpu::LoadOp::Load,
|
||||||
|
store: true,
|
||||||
|
},
|
||||||
|
})],
|
||||||
|
depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachment {
|
||||||
|
view: &self.depth_texture.view,
|
||||||
|
depth_ops: Some(wgpu::Operations {
|
||||||
|
load: wgpu::LoadOp::Load,
|
||||||
|
store: true,
|
||||||
|
}),
|
||||||
|
stencil_ops: None,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
light_debug_render_pass.set_pipeline(&self.light_debug_pass.pipeline);
|
||||||
|
light_debug_render_pass.draw_light_model(
|
||||||
|
&self.light_model,
|
||||||
|
&self.camera_bind_group,
|
||||||
|
&self.light_bind_group,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// submit will accept anything that implements IntoIter
|
// submit will accept anything that implements IntoIter
|
||||||
self.queue.submit(std::iter::once(encoder.finish()));
|
self.queue.submit(std::iter::once(encoder.finish()));
|
||||||
output.present();
|
surface_texture.present();
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue