Merge branch 'feature/scrollables' into feature/text-input
This commit is contained in:
commit
374b54c3ec
4 changed files with 22 additions and 27 deletions
|
|
@ -13,5 +13,5 @@ wgpu = { version = "0.3", git = "https://github.com/gfx-rs/wgpu-rs", rev = "ed2c
|
||||||
wgpu_glyph = { version = "0.4", git = "https://github.com/hecrj/wgpu_glyph", rev = "954ac865ca1b7f6b97bf403f8c6174a7120e667c" }
|
wgpu_glyph = { version = "0.4", git = "https://github.com/hecrj/wgpu_glyph", rev = "954ac865ca1b7f6b97bf403f8c6174a7120e667c" }
|
||||||
raw-window-handle = "0.3"
|
raw-window-handle = "0.3"
|
||||||
image = "0.22"
|
image = "0.22"
|
||||||
nalgebra = "0.18"
|
glam = "0.8"
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
|
|
|
||||||
|
|
@ -222,11 +222,9 @@ impl Pipeline {
|
||||||
bounds: Rectangle<u32>,
|
bounds: Rectangle<u32>,
|
||||||
target: &wgpu::TextureView,
|
target: &wgpu::TextureView,
|
||||||
) {
|
) {
|
||||||
let matrix: [f32; 16] = transformation.into();
|
|
||||||
|
|
||||||
let transform_buffer = device
|
let transform_buffer = device
|
||||||
.create_buffer_mapped(16, wgpu::BufferUsage::COPY_SRC)
|
.create_buffer_mapped(16, wgpu::BufferUsage::COPY_SRC)
|
||||||
.fill_from_slice(&matrix[..]);
|
.fill_from_slice(transformation.as_ref());
|
||||||
|
|
||||||
encoder.copy_buffer_to_buffer(
|
encoder.copy_buffer_to_buffer(
|
||||||
&transform_buffer,
|
&transform_buffer,
|
||||||
|
|
|
||||||
|
|
@ -23,14 +23,12 @@ impl Pipeline {
|
||||||
}],
|
}],
|
||||||
});
|
});
|
||||||
|
|
||||||
let matrix: [f32; 16] = Transformation::identity().into();
|
|
||||||
|
|
||||||
let transform = device
|
let transform = device
|
||||||
.create_buffer_mapped(
|
.create_buffer_mapped(
|
||||||
16,
|
16,
|
||||||
wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST,
|
wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST,
|
||||||
)
|
)
|
||||||
.fill_from_slice(&matrix[..]);
|
.fill_from_slice(Transformation::identity().as_ref());
|
||||||
|
|
||||||
let constants = device.create_bind_group(&wgpu::BindGroupDescriptor {
|
let constants = device.create_bind_group(&wgpu::BindGroupDescriptor {
|
||||||
layout: &constant_layout,
|
layout: &constant_layout,
|
||||||
|
|
@ -169,11 +167,9 @@ impl Pipeline {
|
||||||
bounds: Rectangle<u32>,
|
bounds: Rectangle<u32>,
|
||||||
target: &wgpu::TextureView,
|
target: &wgpu::TextureView,
|
||||||
) {
|
) {
|
||||||
let matrix: [f32; 16] = transformation.into();
|
|
||||||
|
|
||||||
let transform_buffer = device
|
let transform_buffer = device
|
||||||
.create_buffer_mapped(16, wgpu::BufferUsage::COPY_SRC)
|
.create_buffer_mapped(16, wgpu::BufferUsage::COPY_SRC)
|
||||||
.fill_from_slice(&matrix[..]);
|
.fill_from_slice(transformation.as_ref());
|
||||||
|
|
||||||
encoder.copy_buffer_to_buffer(
|
encoder.copy_buffer_to_buffer(
|
||||||
&transform_buffer,
|
&transform_buffer,
|
||||||
|
|
|
||||||
|
|
@ -1,29 +1,30 @@
|
||||||
use nalgebra::Matrix3;
|
use glam::{Mat4, Vec3, Vec4};
|
||||||
use std::ops::Mul;
|
use std::ops::Mul;
|
||||||
|
|
||||||
/// A 2D transformation matrix.
|
/// A 2D transformation matrix.
|
||||||
#[derive(Debug, Clone, Copy, PartialEq)]
|
#[derive(Debug, Clone, Copy, PartialEq)]
|
||||||
pub struct Transformation(Matrix3<f32>);
|
pub struct Transformation(Mat4);
|
||||||
|
|
||||||
impl Transformation {
|
impl Transformation {
|
||||||
/// Get the identity transformation.
|
/// Get the identity transformation.
|
||||||
pub fn identity() -> Transformation {
|
pub fn identity() -> Transformation {
|
||||||
Transformation(Matrix3::identity())
|
Transformation(Mat4::identity())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates an orthographic projection.
|
/// Creates an orthographic projection.
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
pub fn orthographic(width: u16, height: u16) -> Transformation {
|
pub fn orthographic(width: u16, height: u16) -> Transformation {
|
||||||
Transformation(nalgebra::Matrix3::new(
|
Transformation(Mat4::from_cols(
|
||||||
2.0 / f32::from(width), 0.0, -1.0,
|
Vec4::new(2.0 / f32::from(width), 0.0, 0.0, 0.0),
|
||||||
0.0, 2.0 / f32::from(height), -1.0,
|
Vec4::new(0.0, 2.0 / f32::from(height), 0.0, 0.0),
|
||||||
0.0, 0.0, 1.0
|
Vec4::new(0.0, 0.0, -1.0, 0.0),
|
||||||
|
Vec4::new(-1.0, -1.0, 0.0, 1.0)
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates a translate transformation.
|
/// Creates a translate transformation.
|
||||||
pub fn translate(x: f32, y: f32) -> Transformation {
|
pub fn translate(x: f32, y: f32) -> Transformation {
|
||||||
Transformation(Matrix3::new_translation(&nalgebra::Vector2::new(x, y)))
|
Transformation(Mat4::from_translation(Vec3::new(x, y, 0.0)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -35,14 +36,14 @@ impl Mul for Transformation {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<Transformation> for [f32; 16] {
|
impl AsRef<[f32; 16]> for Transformation {
|
||||||
#[rustfmt::skip]
|
fn as_ref(&self) -> &[f32; 16] {
|
||||||
fn from(t: Transformation) -> [f32; 16] {
|
self.0.as_ref()
|
||||||
[
|
}
|
||||||
t.0[0], t.0[1], 0.0, t.0[2],
|
}
|
||||||
t.0[3], t.0[4], 0.0, t.0[5],
|
|
||||||
0.0, 0.0, -1.0, 0.0,
|
impl From<Transformation> for [f32; 16] {
|
||||||
t.0[6], t.0[7], 0.0, t.0[8]
|
fn from(t: Transformation) -> [f32; 16] {
|
||||||
]
|
t.as_ref().clone()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue