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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
pub(crate) mod textured_quad;
// #[repr(C)]
// pub struct Vertex {
// // pub position: Vec2,
// }
// #[repr(C)]
// #[derive(Debug)]
// pub struct Uniforms {
// pub projection: Mat4,
// pub model: Mat4,
// pub source: Vec4,
// pub color: Vec4,
// pub z_index: f32,
// }
// impl Default for Uniforms {
// fn default() -> Uniforms {
// Uniforms {
// projection: Mat4::orthographic_lh(0.0, 1.0, 0.0, 1.0, -100.0, 100.0),
// model: Mat4::IDENTITY,
// source: Vec4::new(0.0, 0.0, 1.0, 1.0),
// color: Vec4::new(1.0, 1.0, 1.0, 1.0),
// z_index: 0.0,
// }
// }
// }
// pub const VERTEX: &str = r#"
// #version 100
// attribute vec2 position;
// varying lowp vec4 color;
// varying lowp vec2 uv;
// uniform mat4 Projection;
// uniform vec4 Source;
// uniform vec4 Color;
// uniform mat4 Model;
// uniform float z_index;
// void main() {
// gl_Position = Projection * Model * vec4(position, 0, 1);
// gl_Position.z = z_index;
// color = Color;
// uv = position * Source.zw + Source.xy;
// }"#;
// pub const FRAGMENT: &str = r#"
// #version 100
// varying lowp vec4 color;
// varying lowp vec2 uv;
// uniform sampler2D tex;
// void main() {
// gl_FragColor = texture2D(tex, uv) * color;
// }"#;
// pub fn meta() -> ShaderMeta {
// ShaderMeta {
// images: vec![String::from("tex")],
// uniforms: UniformBlockLayout {
// uniforms: vec![
// UniformDesc::new("Projection", UniformType::Mat4),
// UniformDesc::new("Model", UniformType::Mat4),
// UniformDesc::new("Source", UniformType::Float4),
// UniformDesc::new("Color", UniformType::Float4),
// UniformDesc::new("z_index", UniformType::Float1),
// ],
// },
// }
// }
// // Credit(https://github.com/not-fl3/good-web-game/blob/master/src/graphics/image.rs#L129)
// pub(crate) fn param_to_instance_transform(
// rotation: f32,
// scale: Vec2,
// offset: Vec2,
// dest: Vec2,
// ) -> Mat4 {
// let cosr = rotation.cos();
// let sinr = rotation.sin();
// let m00 = cosr * scale.x;
// let m01 = -sinr * scale.y;
// let m10 = sinr * scale.x;
// let m11 = cosr * scale.y;
// let m03 = offset.x * (1.0 - m00) - offset.y * m01 + dest.x;
// let m13 = offset.y * (1.0 - m11) - offset.x * m10 + dest.y;
// Mat4::from_cols(
// Vec4::new(m00, m10, 0.0, 0.0),
// Vec4::new(m01, m11, 0.0, 0.0),
// Vec4::new(0.0, 0.0, 1.0, 0.0),
// Vec4::new(m03, m13, 0.0, 1.0),
// )
// }