summaryrefslogtreecommitdiffstats
path: root/wgpu/src/image.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-05-19 03:58:25 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-05-19 03:59:58 +0200
commitf557b810f5931e69a9a35353b20fff1b07480715 (patch)
tree395af28ef1c06cea532ff45947156e598e9e9e7b /wgpu/src/image.rs
parent49353bc4ea2e93e5d70f026e7eda169987b7c1c7 (diff)
downloadiced-f557b810f5931e69a9a35353b20fff1b07480715.tar.gz
iced-f557b810f5931e69a9a35353b20fff1b07480715.tar.bz2
iced-f557b810f5931e69a9a35353b20fff1b07480715.zip
Keep `image` pipeline decoupled from `quad` in `iced_wgpu`
Diffstat (limited to 'wgpu/src/image.rs')
-rw-r--r--wgpu/src/image.rs42
1 files changed, 37 insertions, 5 deletions
diff --git a/wgpu/src/image.rs b/wgpu/src/image.rs
index 6fe02b91..c3479652 100644
--- a/wgpu/src/image.rs
+++ b/wgpu/src/image.rs
@@ -11,7 +11,7 @@ use atlas::Atlas;
use crate::buffer::Buffer;
use crate::core::{Rectangle, Size};
use crate::graphics::Transformation;
-use crate::{layer, quad};
+use crate::layer;
use std::cell::RefCell;
use std::mem;
@@ -131,7 +131,7 @@ impl Layer {
render_pass.set_vertex_buffer(1, self.instances.slice(..));
render_pass.draw_indexed(
- 0..quad::INDICES.len() as u32,
+ 0..QUAD_INDICES.len() as u32,
0,
0..self.instance_count as u32,
);
@@ -244,7 +244,22 @@ impl Pipeline {
fragment: Some(wgpu::FragmentState {
module: &shader,
entry_point: "fs_main",
- targets: &quad::color_target_state(format),
+ targets: &[Some(wgpu::ColorTargetState {
+ format,
+ blend: Some(wgpu::BlendState {
+ color: wgpu::BlendComponent {
+ src_factor: wgpu::BlendFactor::SrcAlpha,
+ dst_factor: wgpu::BlendFactor::OneMinusSrcAlpha,
+ operation: wgpu::BlendOperation::Add,
+ },
+ alpha: wgpu::BlendComponent {
+ src_factor: wgpu::BlendFactor::One,
+ dst_factor: wgpu::BlendFactor::OneMinusSrcAlpha,
+ operation: wgpu::BlendOperation::Add,
+ },
+ }),
+ write_mask: wgpu::ColorWrites::ALL,
+ })],
}),
primitive: wgpu::PrimitiveState {
topology: wgpu::PrimitiveTopology::TriangleList,
@@ -263,14 +278,14 @@ impl Pipeline {
let vertices =
device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("iced_wgpu::image vertex buffer"),
- contents: bytemuck::cast_slice(&quad::VERTICES),
+ contents: bytemuck::cast_slice(&QUAD_VERTICES),
usage: wgpu::BufferUsages::VERTEX,
});
let indices =
device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("iced_wgpu::image index buffer"),
- contents: bytemuck::cast_slice(&quad::INDICES),
+ contents: bytemuck::cast_slice(&QUAD_INDICES),
usage: wgpu::BufferUsages::INDEX,
});
@@ -483,6 +498,23 @@ pub struct Vertex {
_position: [f32; 2],
}
+const QUAD_INDICES: [u16; 6] = [0, 1, 2, 0, 2, 3];
+
+const QUAD_VERTICES: [Vertex; 4] = [
+ Vertex {
+ _position: [0.0, 0.0],
+ },
+ Vertex {
+ _position: [1.0, 0.0],
+ },
+ Vertex {
+ _position: [1.0, 1.0],
+ },
+ Vertex {
+ _position: [0.0, 1.0],
+ },
+];
+
#[repr(C)]
#[derive(Debug, Clone, Copy, Zeroable, Pod)]
struct Instance {