ranim_render/graph/
clear.rs1use crate::{RenderContext, graph::GlobalRenderNodeTrait, resource::RenderTextures};
2
3pub struct ClearNode;
4
5impl GlobalRenderNodeTrait for ClearNode {
6 type Query = ();
7 fn run(
8 &self,
9 #[cfg(not(feature = "profiling"))] encoder: &mut wgpu::CommandEncoder,
10 #[cfg(feature = "profiling")] encoder: &mut wgpu_profiler::Scope<'_, wgpu::CommandEncoder>,
11 _render_packets: <Self::Query as super::RenderPacketsQuery>::Output<'_>,
12 render_ctx: RenderContext,
13 ) {
14 #[cfg(feature = "profiling")]
15 profiling::scope!("clear_screen");
16 let RenderTextures {
17 render_view,
18 depth_stencil_view,
20 ..
21 } = render_ctx.render_textures;
22
23 let pass_desc = wgpu::RenderPassDescriptor {
24 label: Some("Clear Pass"),
25 color_attachments: &[Some(wgpu::RenderPassColorAttachment {
26 depth_slice: None,
27 view: render_view,
28 resolve_target: None,
29 ops: wgpu::Operations {
30 load: wgpu::LoadOp::Clear(render_ctx.clear_color),
31 store: wgpu::StoreOp::Store,
32 },
33 })],
34 depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachment {
35 view: depth_stencil_view,
36 depth_ops: Some(wgpu::Operations {
37 load: wgpu::LoadOp::Clear(1.0),
38 store: wgpu::StoreOp::Store,
39 }),
40 stencil_ops: None,
41 }),
42 timestamp_writes: None,
43 occlusion_query_set: None,
44 multiview_mask: None,
45 };
46 encoder.begin_render_pass(&pass_desc);
47 }
48}