1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
//! Built-in render passes for the default pipeline.
//!
//! These passes implement [`PassNode`](super::rendergraph::PassNode) and can be used
//! directly or as references for custom pass implementations.
//!
//! # Geometry Passes
//!
//! | Pass | Description |
//! |------|-------------|
//! | [`ScenePass`] | Main PBR mesh rendering with lighting |
//! | [`MeshPass`] | Static mesh rendering |
//! | [`SkinnedMeshPass`] | Animated skeletal mesh rendering |
//! | [`DecalPass`] | Projected decal rendering |
//! | [`WaterPass`] | Water surface with reflections/refractions |
//! | [`WaterMeshPass`] | Water mesh displacement |
//! | [`ParticlePass`] | GPU particle billboard rendering |
//! | [`TextPass`] | 3D text rendering |
//! | [`HudPass`] | Screen-space HUD text |
//! | [`SpritePass`] | 2D sprite rendering |
//! | [`LinesPass`] | Debug line rendering |
//! | [`GridPass`] | Infinite ground grid |
//! | [`SkyPass`] | Procedural sky/atmosphere |
//! | [`UiRectPass`] | UI rectangle rendering |
//!
//! # Shadow Passes
//!
//! | Pass | Description |
//! |------|-------------|
//! | [`ShadowDepthPass`] | Cascaded shadow map generation |
//!
//! Shadow mapping uses 4 cascades (`NUM_SHADOW_CASCADES`) for directional lights.
//!
//! # Post-Processing Passes
//!
//! | Pass | Description |
//! |------|-------------|
//! | [`PostProcessPass`] | Final compositing with tonemapping |
//! | [`BloomPass`] | HDR bloom effect |
//! | [`SsaoPass`] | Screen-space ambient occlusion |
//! | [`SsaoBlurPass`] | SSAO blur for soft shadows |
//! | [`SsgiPass`] | Screen-space global illumination |
//! | [`SsgiBlurPass`] | SSGI bilateral blur |
//! | [`DepthOfFieldPass`] | Bokeh depth of field |
//! | [`OutlinePass`] | Selection outline rendering |
//! | [`SelectionMaskPass`] | Selection mask generation |
//! | [`BlitPass`] | Simple texture copy |
//! | [`ComputeGrayscalePass`] | Grayscale conversion |
//!
//! # UI Passes
//!
//! | Pass | Description |
//! |------|-------------|
//! | `EguiPass` | egui immediate mode UI (requires `egui` feature) |
//!
//! # Using Built-in Passes
//!
//! ```ignore
//! fn configure_render_graph(
//! &mut self,
//! graph: &mut RenderGraph<World>,
//! device: &wgpu::Device,
//! surface_format: wgpu::TextureFormat,
//! resources: RenderResources,
//! ) {
//! // Add bloom post-processing
//! let bloom = BloomPass::new(device, width, height);
//! graph.pass(Box::new(bloom))
//! .read("hdr", resources.scene_color)
//! .write("bloom", bloom_texture);
//!
//! // Add SSAO
//! let ssao = SsaoPass::new(device, width, height);
//! graph.pass(Box::new(ssao))
//! .read("depth", resources.depth)
//! .read("normals", resources.view_normals)
//! .write("ssao_raw", ssao_raw);
//!
//! let ssao_blur = SsaoBlurPass::new(device, width, height);
//! graph.pass(Box::new(ssao_blur))
//! .read("input", ssao_raw)
//! .write("output", ssao_final);
//!
//! // Final post-process with tonemapping
//! let postprocess = PostProcessPass::new(device, surface_format, bloom_intensity);
//! graph.pass(Box::new(postprocess))
//! .read("hdr", resources.scene_color)
//! .read("bloom", bloom_texture)
//! .read("ssao", ssao_final)
//! .write("output", resources.swapchain);
//! }
//! ```
//!
//! # Pass Configuration
//!
//! Most passes accept configuration in their constructors:
//!
//! ```ignore
//! // Bloom with custom mip levels
//! let bloom = BloomPass::new(device, width, height);
//!
//! // SSAO with custom radius/samples
//! let ssao = SsaoPass::new(device, width, height);
//!
//! // Post-process with bloom intensity
//! let postprocess = PostProcessPass::new(device, format, 0.3); // 30% bloom
//! ```
pub use ClearPass;
pub use SdfPass;
pub use ;
pub use ;
pub use ;
pub use EguiPass;