webgl_rc/
uniforms.rs

1use super::texture::Texture;
2
3#[derive(Clone, Debug)]
4pub enum UniformValue {
5    None,
6    Boolean(bool),
7    Float(f32),
8    Vec2([f32; 2]),
9    Vec3([f32; 3]),
10    Vec4([f32; 4]),
11    Mat2([f32; 4]),
12    Mat3([f32; 9]),
13    Mat4([f32; 16]),
14    Texture(Texture),
15}
16
17#[derive(Clone, Debug)]
18pub struct Field {
19    pub name: &'static str,
20    pub value: UniformValue,
21}
22
23pub trait IntoUniform {
24    fn into_uniform(&self) -> UniformValue;
25}
26
27pub trait Uniforms {
28    fn uniforms(&self) -> Vec<Field>;
29}