Move render pass creation into modules
That’s where the pipeline is created and, they need to match
This commit is contained in:
parent
fe94dd68a2
commit
d17a3e3613
|
|
@ -126,20 +126,7 @@ fn main() {
|
|||
let hdr = hdr.create_view(&wgpu::TextureViewDescriptor::default());
|
||||
let mut encoder = device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None });
|
||||
{
|
||||
let mut render_pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
|
||||
label: None,
|
||||
color_attachments: &[Some(wgpu::RenderPassColorAttachment {
|
||||
view: &hdr,
|
||||
resolve_target: None,
|
||||
ops: wgpu::Operations {
|
||||
load: wgpu::LoadOp::Clear(wgpu::Color::TRANSPARENT),
|
||||
store: wgpu::StoreOp::Store,
|
||||
},
|
||||
})],
|
||||
depth_stencil_attachment: None,
|
||||
occlusion_query_set: None,
|
||||
timestamp_writes: None,
|
||||
});
|
||||
let mut render_pass = tracer.prepare(&mut encoder, &hdr);
|
||||
for _ in 0..RAYS_PER_PIXEL {
|
||||
frame += 1;
|
||||
let time = frame as f32 / (60. * RAYS_PER_PIXEL as f32);
|
||||
|
|
@ -172,30 +159,15 @@ fn main() {
|
|||
);
|
||||
}
|
||||
}
|
||||
{
|
||||
let mut render_pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
|
||||
label: None,
|
||||
color_attachments: &[Some(wgpu::RenderPassColorAttachment {
|
||||
view: &view,
|
||||
resolve_target: None,
|
||||
ops: wgpu::Operations {
|
||||
load: wgpu::LoadOp::Clear(wgpu::Color::TRANSPARENT),
|
||||
store: wgpu::StoreOp::Store,
|
||||
},
|
||||
})],
|
||||
depth_stencil_attachment: None,
|
||||
occlusion_query_set: None,
|
||||
timestamp_writes: None,
|
||||
});
|
||||
presenter.render(
|
||||
&device,
|
||||
&mut render_pass,
|
||||
&hdr,
|
||||
present::Params {
|
||||
divisor: RAYS_PER_PIXEL as f32,
|
||||
},
|
||||
);
|
||||
}
|
||||
presenter.render(
|
||||
&device,
|
||||
&mut encoder,
|
||||
&hdr,
|
||||
&view,
|
||||
present::Params {
|
||||
divisor: RAYS_PER_PIXEL as f32,
|
||||
},
|
||||
);
|
||||
queue.submit(std::iter::once(encoder.finish()));
|
||||
output.present();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ impl Presenter {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn render(
|
||||
fn render_internal(
|
||||
&self,
|
||||
device: &wgpu::Device,
|
||||
pass: &mut wgpu::RenderPass,
|
||||
|
|
@ -121,4 +121,29 @@ impl Presenter {
|
|||
pass.set_bind_group(0, &bindings, &[]);
|
||||
pass.draw(0..4, 0..1);
|
||||
}
|
||||
|
||||
pub fn render(
|
||||
&self,
|
||||
device: &wgpu::Device,
|
||||
encoder: &mut wgpu::CommandEncoder,
|
||||
source: &wgpu::TextureView,
|
||||
target: &wgpu::TextureView,
|
||||
params: Params,
|
||||
) {
|
||||
let mut render_pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
|
||||
label: None,
|
||||
color_attachments: &[Some(wgpu::RenderPassColorAttachment {
|
||||
view: target,
|
||||
resolve_target: None,
|
||||
ops: wgpu::Operations {
|
||||
load: wgpu::LoadOp::Clear(wgpu::Color::TRANSPARENT),
|
||||
store: wgpu::StoreOp::Store,
|
||||
},
|
||||
})],
|
||||
depth_stencil_attachment: None,
|
||||
occlusion_query_set: None,
|
||||
timestamp_writes: None,
|
||||
});
|
||||
self.render_internal(device, &mut render_pass, source, params);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -233,6 +233,27 @@ impl Tracer {
|
|||
Self { view_buf, pipeline }
|
||||
}
|
||||
|
||||
pub fn prepare<'encoder>(
|
||||
&self,
|
||||
encoder: &'encoder mut wgpu::CommandEncoder,
|
||||
target: &wgpu::TextureView,
|
||||
) -> wgpu::RenderPass<'encoder> {
|
||||
encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
|
||||
label: None,
|
||||
color_attachments: &[Some(wgpu::RenderPassColorAttachment {
|
||||
view: &target,
|
||||
resolve_target: None,
|
||||
ops: wgpu::Operations {
|
||||
load: wgpu::LoadOp::Clear(wgpu::Color::TRANSPARENT),
|
||||
store: wgpu::StoreOp::Store,
|
||||
},
|
||||
})],
|
||||
depth_stencil_attachment: None,
|
||||
occlusion_query_set: None,
|
||||
timestamp_writes: None,
|
||||
})
|
||||
}
|
||||
|
||||
pub fn render(
|
||||
&self,
|
||||
pass: &mut wgpu::RenderPass,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user