coffee 0.4.1

An opinionated 2D game engine focused on simplicity, explicitness, and type-safety
Documentation
#version 450

layout(location = 0) in vec2 a_Pos;
layout(location = 1) in vec4 a_Src;
layout(location = 2) in vec2 a_Scale;
layout(location = 3) in vec2 a_Translation;
layout(location = 4) in uint t_Layer;

layout (set = 0, binding = 0) uniform Globals {
    mat4 u_Transform;
};

layout(location = 0) out vec2 v_Uv;
layout(location = 1) flat out uint v_Layer;

void main() {
    v_Uv = a_Pos * a_Src.zw + a_Src.xy;
    v_Layer = t_Layer;

    mat4 a_Transform = mat4(
        vec4(a_Scale.x, 0.0, 0.0, 0.0),
        vec4(0.0, a_Scale.y, 0.0, 0.0),
        vec4(0.0, 0.0, 1.0, 0.0),
        vec4(a_Translation, 0.0, 1.0)
    );

    gl_Position = u_Transform * a_Transform * vec4(a_Pos, 0.0, 1.0);
}