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
use {
crate::{
layout::{Layout, Plain},
shader::ShaderType,
},
wgpu::{VertexAttribute, VertexStepMode},
};
pub trait Vertex: Layout + ShaderType {}
#[repr(C)]
#[derive(Copy, Clone, Debug)]
pub struct ColorVertex {
pub pos: [f32; 3],
pub col: [f32; 3],
}
unsafe impl Plain for ColorVertex {}
impl Layout for ColorVertex {
const ATTRIBS: &'static [VertexAttribute] =
&wgpu::vertex_attr_array![0 => Float32x3, 1 => Float32x3];
const VERTEX_STEP_MODE: VertexStepMode = VertexStepMode::Vertex;
}
impl Vertex for ColorVertex {}
#[repr(C)]
#[derive(Copy, Clone, Debug)]
pub struct TextureVertex {
pub pos: [f32; 3],
pub map: [f32; 2],
}
unsafe impl Plain for TextureVertex {}
impl Layout for TextureVertex {
const ATTRIBS: &'static [VertexAttribute] =
&wgpu::vertex_attr_array![0 => Float32x3, 1 => Float32x2];
const VERTEX_STEP_MODE: VertexStepMode = VertexStepMode::Vertex;
}
impl Vertex for TextureVertex {}
#[repr(C)]
#[derive(Copy, Clone, Debug)]
pub struct FlatVertex {
pub pos: [f32; 2],
pub map: [f32; 2],
}
unsafe impl Plain for FlatVertex {}
impl Layout for FlatVertex {
const ATTRIBS: &'static [VertexAttribute] =
&wgpu::vertex_attr_array![0 => Float32x2, 1 => Float32x2];
const VERTEX_STEP_MODE: VertexStepMode = VertexStepMode::Vertex;
}
impl Vertex for FlatVertex {}