Skip to content

Commit a36889e

Browse files
Fix clippy, rewrite the render pass abstraction
1 parent 4e6eb03 commit a36889e

8 files changed

Lines changed: 177 additions & 202 deletions

File tree

src/png/grammar.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ impl ImageHeader {
3939
pub(crate) const fn num_bytes_per_pixel(&self) -> usize {
4040
let bits_per_pixel = self.color_type.num_channels() * self.bit_depth;
4141

42-
((bits_per_pixel + 7) / 8) as usize
42+
bits_per_pixel.div_ceil(8) as usize
4343
}
4444
}
4545

src/renderer/app_state.rs

Lines changed: 59 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,9 @@ use crate::{
66
FeatureUniform,
77
TransformAction,
88
},
9-
gpu_state::{
10-
GpuResourceAllocator,
11-
Shader,
12-
},
9+
gpu_state::GpuResourceAllocator,
1310
mouse_state::MouseState,
11+
shader::Shader,
1412
shape::{
1513
compute_radius,
1614
Shape,
@@ -19,7 +17,16 @@ use crate::{
1917
},
2018
};
2119
use anyhow::Result;
22-
use wgpu::SurfaceError;
20+
use wgpu::{
21+
Color,
22+
IndexFormat,
23+
LoadOp,
24+
Operations,
25+
RenderPassColorAttachment,
26+
RenderPassDescriptor,
27+
StoreOp,
28+
SurfaceError,
29+
};
2330
use winit::{
2431
dpi::PhysicalSize,
2532
event::{
@@ -246,7 +253,53 @@ impl<'a> AppState<'a> {
246253
}
247254

248255
pub(crate) fn render(&self) -> Result<(), SurfaceError> {
249-
self.gpu_allocator.render(&self.image_shader)?;
256+
let (output, view, mut encoder) = self.gpu_allocator.begin_frame()?;
257+
258+
// Image shader render pass
259+
{
260+
let mut render_pass = encoder.begin_render_pass(&RenderPassDescriptor {
261+
label: Some("content render pass"),
262+
color_attachments: &[Some(RenderPassColorAttachment {
263+
view: &view,
264+
resolve_target: None,
265+
ops: Operations {
266+
load: LoadOp::Clear(Color {
267+
r: 0.1,
268+
g: 0.2,
269+
b: 0.3,
270+
a: 1.0,
271+
}),
272+
store: StoreOp::Store,
273+
},
274+
})],
275+
depth_stencil_attachment: None,
276+
occlusion_query_set: None,
277+
timestamp_writes: None,
278+
});
279+
280+
render_pass.set_pipeline(&self.image_shader.render_pipeline);
281+
282+
let mut i = 0;
283+
284+
self.image_shader.texture_resources.iter().for_each(|r| {
285+
render_pass.set_bind_group(i, &r.bind_group, &[]);
286+
i += 1;
287+
});
288+
289+
self.image_shader.uniform_resources.iter().for_each(|r| {
290+
render_pass.set_bind_group(i, &r.bind_group, &[]);
291+
i += 1;
292+
});
293+
294+
render_pass.set_vertex_buffer(0, self.gpu_allocator.vertex_buffer.slice(..));
295+
render_pass.set_index_buffer(
296+
self.gpu_allocator.index_buffer.slice(..),
297+
IndexFormat::Uint16,
298+
);
299+
}
300+
301+
self.gpu_allocator.end_frame(encoder);
302+
output.present();
250303

251304
Ok(())
252305
}

src/renderer/draw_uniform.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,16 @@ impl DrawUniform {
2121
self.crosshair == 1
2222
}
2323

24-
pub(crate) fn toggle_crosshair(&mut self) {
24+
pub(crate) const fn toggle_crosshair(&mut self) {
2525
self.crosshair = !self.crosshair() as u32;
2626
}
2727

28-
pub(crate) fn set_circle_center(&mut self, x: f32, y: f32) {
28+
pub(crate) const fn set_circle_center(&mut self, x: f32, y: f32) {
2929
self.circle_center_x = x;
3030
self.circle_center_y = y;
3131
}
3232

33-
pub(crate) fn set_circle_radius(&mut self, radius: f32) {
33+
pub(crate) const fn set_circle_radius(&mut self, radius: f32) {
3434
self.circle_radius = radius;
3535
}
3636
}

src/renderer/feature_uniform.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ impl FeatureUniform {
3535
}
3636
}
3737

38-
pub(crate) fn reset_features(&mut self) {
38+
pub(crate) const fn reset_features(&mut self) {
3939
self.grayscale = 0;
4040
// self.sepia = 0;
4141
self.invert = 0;
@@ -59,15 +59,15 @@ impl FeatureUniform {
5959
self.invert == 1
6060
}
6161

62-
pub(crate) fn toggle_grayscale(&mut self) {
62+
pub(crate) const fn toggle_grayscale(&mut self) {
6363
self.grayscale = !self.grayscale() as u32;
6464
}
6565

6666
// pub(crate) fn toggle_sepia(&mut self) {
6767
// self.sepia = !self.sepia() as u32;
6868
// }
6969

70-
pub(crate) fn toggle_invert(&mut self) {
70+
pub(crate) const fn toggle_invert(&mut self) {
7171
self.invert = !self.invert() as u32;
7272
}
7373
}
@@ -81,7 +81,7 @@ impl FeatureUniform {
8181
self.blur == 1
8282
}
8383

84-
pub(crate) fn toggle_blur(&mut self) {
84+
pub(crate) const fn toggle_blur(&mut self) {
8585
self.blur = !self.blur() as u32;
8686
}
8787

@@ -103,7 +103,7 @@ impl FeatureUniform {
103103
self.sharpen == 1
104104
}
105105

106-
pub(crate) fn toggle_sharpen(&mut self) {
106+
pub(crate) const fn toggle_sharpen(&mut self) {
107107
self.sharpen = !self.sharpen() as u32;
108108
}
109109

@@ -117,7 +117,7 @@ impl FeatureUniform {
117117
}
118118

119119
impl FeatureUniform {
120-
pub(crate) fn update_window_dimensions(&mut self, width: u32, height: u32) {
120+
pub(crate) const fn update_window_dimensions(&mut self, width: u32, height: u32) {
121121
self.width = width;
122122
self.height = height;
123123
}
@@ -128,7 +128,7 @@ impl FeatureUniform {
128128
self.edge_detect == 1
129129
}
130130

131-
pub(crate) fn toggle_edge_detect(&mut self) {
131+
pub(crate) const fn toggle_edge_detect(&mut self) {
132132
self.edge_detect = !self.edge_detect() as u32;
133133
}
134134
}

0 commit comments

Comments
 (0)