mirror of
https://github.com/hannobraun/Fornjot
synced 2025-05-06 02:48:27 +00:00
Prepare for making another render pass
This commit is contained in:
parent
3f82cbbcc9
commit
357210937c
@ -1,4 +1,4 @@
|
||||
use super::shaders::Shaders;
|
||||
use super::{geometry::Geometry, shaders::Shaders};
|
||||
|
||||
pub struct Pipeline {
|
||||
render_pipeline: wgpu::RenderPipeline,
|
||||
@ -60,6 +60,49 @@ impl Pipeline {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn draw(
|
||||
&self,
|
||||
encoder: &mut wgpu::CommandEncoder,
|
||||
frame_view: &wgpu::TextureView,
|
||||
depth_view: &wgpu::TextureView,
|
||||
geometry: &Geometry,
|
||||
) {
|
||||
let mut render_pass =
|
||||
encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
|
||||
label: None,
|
||||
color_attachments: &[Some(wgpu::RenderPassColorAttachment {
|
||||
view: frame_view,
|
||||
resolve_target: None,
|
||||
ops: wgpu::Operations {
|
||||
load: wgpu::LoadOp::Clear(wgpu::Color::WHITE),
|
||||
store: wgpu::StoreOp::Store,
|
||||
},
|
||||
})],
|
||||
depth_stencil_attachment: Some(
|
||||
wgpu::RenderPassDepthStencilAttachment {
|
||||
view: depth_view,
|
||||
depth_ops: Some(wgpu::Operations {
|
||||
load: wgpu::LoadOp::Clear(1.0),
|
||||
store: wgpu::StoreOp::Store,
|
||||
}),
|
||||
stencil_ops: None,
|
||||
},
|
||||
),
|
||||
timestamp_writes: None,
|
||||
occlusion_query_set: None,
|
||||
});
|
||||
|
||||
if geometry.num_indices > 0 {
|
||||
render_pass.set_index_buffer(
|
||||
geometry.indices.slice(..),
|
||||
wgpu::IndexFormat::Uint32,
|
||||
);
|
||||
render_pass.set_vertex_buffer(0, geometry.vertices.slice(..));
|
||||
self.set(&mut render_pass);
|
||||
render_pass.draw_indexed(0..geometry.num_indices, 0, 0..1);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn set(&self, render_pass: &mut wgpu::RenderPass) {
|
||||
render_pass.set_pipeline(&self.render_pipeline);
|
||||
render_pass.set_bind_group(0, &self.bind_group, &[]);
|
||||
|
@ -137,44 +137,12 @@ impl Renderer {
|
||||
.device
|
||||
.create_command_encoder(&wgpu::CommandEncoderDescriptor::default());
|
||||
|
||||
{
|
||||
let mut render_pass =
|
||||
encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
|
||||
label: None,
|
||||
color_attachments: &[Some(
|
||||
wgpu::RenderPassColorAttachment {
|
||||
view: &frame_view,
|
||||
resolve_target: None,
|
||||
ops: wgpu::Operations {
|
||||
load: wgpu::LoadOp::Clear(wgpu::Color::WHITE),
|
||||
store: wgpu::StoreOp::Store,
|
||||
},
|
||||
},
|
||||
)],
|
||||
depth_stencil_attachment: Some(
|
||||
wgpu::RenderPassDepthStencilAttachment {
|
||||
view: &self.depth_view,
|
||||
depth_ops: Some(wgpu::Operations {
|
||||
load: wgpu::LoadOp::Clear(1.0),
|
||||
store: wgpu::StoreOp::Store,
|
||||
}),
|
||||
stencil_ops: None,
|
||||
},
|
||||
),
|
||||
timestamp_writes: None,
|
||||
occlusion_query_set: None,
|
||||
});
|
||||
|
||||
if triangles.num_indices > 0 {
|
||||
render_pass.set_index_buffer(
|
||||
triangles.indices.slice(..),
|
||||
wgpu::IndexFormat::Uint32,
|
||||
);
|
||||
render_pass.set_vertex_buffer(0, triangles.vertices.slice(..));
|
||||
self.pipeline.set(&mut render_pass);
|
||||
render_pass.draw_indexed(0..triangles.num_indices, 0, 0..1);
|
||||
}
|
||||
}
|
||||
self.pipeline.draw(
|
||||
&mut encoder,
|
||||
&frame_view,
|
||||
&self.depth_view,
|
||||
&triangles,
|
||||
);
|
||||
|
||||
self.queue.submit(Some(encoder.finish()));
|
||||
frame.present();
|
||||
|
Loading…
Reference in New Issue
Block a user