frienderer 0.13.0

Very simple OpenGL renderer, mainly for GUIs.
Documentation
#version 330 core

uniform vec2 u_viewport;

in vec2 pos;
in vec2 uv;
in vec2 size;
in int color;
in int control; // bitflags
in int box_blur; // value arrives multiplied by 4
in vec4 border;
in vec4 radius;

out vec2 v_uv;
out vec2 v_local_uv;
out vec2 v_size;
flat out int v_control;
out float v_box_blur;
out vec4 v_color;
out vec4 v_border;
out vec4 v_radius;

vec2 from_pixel_pos(vec2 position, vec2 viewport) {
    return mix(vec2(-1.0, 1.0), vec2(1.0, -1.0), position / u_viewport);
}

vec4 int_to_color(int c) {
    return vec4(
        float((c >> 24) & 0xff),
        float((c >> 16) & 0xff),
        float((c >> 8) & 0xff),
        float((c >> 0) & 0xff)
    ) / 255.0;
}

void main() {
    gl_Position = vec4(from_pixel_pos(pos, u_viewport), 0.0, 1.0);

    float local_uv_x = (control & (1 << 6)) > 0 ? 1.0 : 0.0;
    float local_uv_y = (control & (1 << 7)) > 0 ? 1.0 : 0.0;

    v_uv = uv;
    v_local_uv = vec2(local_uv_x, local_uv_y);
    v_size = size;
    v_control = control;
    v_box_blur = box_blur / 4.0;
    v_color = int_to_color(color);
    v_border = border;
    v_radius = radius;
}