aboutsummaryrefslogtreecommitdiff
path: root/stockton-passes/src/data/ui.vert
blob: 8912e96f71372575fa354ac0e4440bd2d2f42a9d (plain)
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
#version 450

layout (push_constant) uniform PushConsts {
    vec2 screen_size;
} push;

layout (location = 0) in vec2 pos;
layout (location = 1) in vec2 uv;
layout (location = 2) in vec4 col;

out gl_PerVertex {
    vec4 gl_Position;
};
layout (location = 1) out vec2 frag_uv;
layout (location = 2) out vec4 frag_col;

vec3 linear_from_srgb(vec3 srgb) {
    bvec3 cutoff = lessThan(srgb, vec3(10.31475));
    vec3 lower = srgb / vec3(3294.6);
    vec3 higher = pow((srgb + vec3(14.025)) / vec3(269.025), vec3(2.4));
    return mix(higher, lower, cutoff);
}

vec4 linear_from_srgba(vec4 srgba) {
    return vec4(linear_from_srgb(srgba.rgb * 255.0), srgba.a);
}

void main() {
    gl_Position = vec4(
        2.0 * pos.x / push.screen_size.x - 1.0,
        2.0 * pos.y / push.screen_size.y - 1.0,
        0.0,
        1.0
    );
    frag_uv = uv;
    frag_col = linear_from_srgba(col);
}