summaryrefslogtreecommitdiffstats
path: root/wgpu/src/quad
diff options
context:
space:
mode:
authorLibravatar Jim Eckerlein <jim.eckerlein@icloud.com>2023-09-24 15:10:19 +0200
committerLibravatar Jim Eckerlein <jim.eckerlein@icloud.com>2023-09-24 15:10:19 +0200
commit3f467d121229142177ef1b2f417fe87c7bf7fdf2 (patch)
treef7c98f9009dca79b7d164801a8badb0fab1f7089 /wgpu/src/quad
parentbc9bb28b1ccd1248d63ccdfef2f57d7aa837abbb (diff)
downloadiced-3f467d121229142177ef1b2f417fe87c7bf7fdf2.tar.gz
iced-3f467d121229142177ef1b2f417fe87c7bf7fdf2.tar.bz2
iced-3f467d121229142177ef1b2f417fe87c7bf7fdf2.zip
Compute vertex position in shader
Diffstat (limited to 'wgpu/src/quad')
-rw-r--r--wgpu/src/quad/gradient.rs64
-rw-r--r--wgpu/src/quad/solid.rs47
2 files changed, 48 insertions, 63 deletions
diff --git a/wgpu/src/quad/gradient.rs b/wgpu/src/quad/gradient.rs
index a8e83d01..312408b7 100644
--- a/wgpu/src/quad/gradient.rs
+++ b/wgpu/src/quad/gradient.rs
@@ -106,36 +106,32 @@ impl Pipeline {
vertex: wgpu::VertexState {
module: &shader,
entry_point: "gradient_vs_main",
- buffers: &[
- quad::Vertex::buffer_layout(),
- wgpu::VertexBufferLayout {
- array_stride: std::mem::size_of::<Gradient>()
- as u64,
- step_mode: wgpu::VertexStepMode::Instance,
- attributes: &wgpu::vertex_attr_array!(
- // Colors 1-2
- 1 => Uint32x4,
- // Colors 3-4
- 2 => Uint32x4,
- // Colors 5-6
- 3 => Uint32x4,
- // Colors 7-8
- 4 => Uint32x4,
- // Offsets 1-8
- 5 => Uint32x4,
- // Direction
- 6 => Float32x4,
- // Position & Scale
- 7 => Float32x4,
- // Border color
- 8 => Float32x4,
- // Border radius
- 9 => Float32x4,
- // Border width
- 10 => Float32
- ),
- },
- ],
+ buffers: &[wgpu::VertexBufferLayout {
+ array_stride: std::mem::size_of::<Gradient>() as u64,
+ step_mode: wgpu::VertexStepMode::Instance,
+ attributes: &wgpu::vertex_attr_array!(
+ // Colors 1-2
+ 1 => Uint32x4,
+ // Colors 3-4
+ 2 => Uint32x4,
+ // Colors 5-6
+ 3 => Uint32x4,
+ // Colors 7-8
+ 4 => Uint32x4,
+ // Offsets 1-8
+ 5 => Uint32x4,
+ // Direction
+ 6 => Float32x4,
+ // Position & Scale
+ 7 => Float32x4,
+ // Border color
+ 8 => Float32x4,
+ // Border radius
+ 9 => Float32x4,
+ // Border width
+ 10 => Float32
+ ),
+ }],
},
fragment: Some(wgpu::FragmentState {
module: &shader,
@@ -171,12 +167,8 @@ impl Pipeline {
render_pass.set_pipeline(&self.pipeline);
render_pass.set_bind_group(0, constants, &[]);
- render_pass.set_vertex_buffer(1, layer.instances.slice(..));
+ render_pass.set_vertex_buffer(0, layer.instances.slice(..));
- render_pass.draw_indexed(
- 0..quad::INDICES.len() as u32,
- 0,
- range.start as u32..range.end as u32,
- );
+ render_pass.draw(0..6, range.start as u32..range.end as u32);
}
}
diff --git a/wgpu/src/quad/solid.rs b/wgpu/src/quad/solid.rs
index 9bc6b466..bab7367d 100644
--- a/wgpu/src/quad/solid.rs
+++ b/wgpu/src/quad/solid.rs
@@ -87,27 +87,24 @@ impl Pipeline {
vertex: wgpu::VertexState {
module: &shader,
entry_point: "solid_vs_main",
- buffers: &[
- quad::Vertex::buffer_layout(),
- wgpu::VertexBufferLayout {
- array_stride: std::mem::size_of::<Solid>() as u64,
- step_mode: wgpu::VertexStepMode::Instance,
- attributes: &wgpu::vertex_attr_array!(
- // Color
- 1 => Float32x4,
- // Position
- 2 => Float32x2,
- // Size
- 3 => Float32x2,
- // Border color
- 4 => Float32x4,
- // Border radius
- 5 => Float32x4,
- // Border width
- 6 => Float32,
- ),
- },
- ],
+ buffers: &[wgpu::VertexBufferLayout {
+ array_stride: std::mem::size_of::<Solid>() as u64,
+ step_mode: wgpu::VertexStepMode::Instance,
+ attributes: &wgpu::vertex_attr_array!(
+ // Color
+ 1 => Float32x4,
+ // Position
+ 2 => Float32x2,
+ // Size
+ 3 => Float32x2,
+ // Border color
+ 4 => Float32x4,
+ // Border radius
+ 5 => Float32x4,
+ // Border width
+ 6 => Float32,
+ ),
+ }],
},
fragment: Some(wgpu::FragmentState {
module: &shader,
@@ -143,12 +140,8 @@ impl Pipeline {
render_pass.set_pipeline(&self.pipeline);
render_pass.set_bind_group(0, constants, &[]);
- render_pass.set_vertex_buffer(1, layer.instances.slice(..));
+ render_pass.set_vertex_buffer(0, layer.instances.slice(..));
- render_pass.draw_indexed(
- 0..quad::INDICES.len() as u32,
- 0,
- range.start as u32..range.end as u32,
- );
+ render_pass.draw(0..6, range.start as u32..range.end as u32);
}
}