aboutsummaryrefslogtreecommitdiff
path: root/src/render_helpers/shaders/gradient_border.frag
blob: 67114eb43298a4b4927bf1421e1c9174ab340f07 (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
precision mediump float;
uniform float alpha;
#if defined(DEBUG_FLAGS)
uniform float tint;
#endif
uniform vec2 size;
varying vec2 v_coords;

uniform vec4 color_from;
uniform vec4 color_to;
uniform vec2 grad_offset;
uniform float grad_width;
uniform vec2 grad_vec;

void main() {
    vec2 coords = v_coords * size + grad_offset;

    if ((grad_vec.x < 0.0 && 0.0 <= grad_vec.y) || (0.0 <= grad_vec.x && grad_vec.y < 0.0))
        coords.x -= grad_width;

    float frac = dot(coords, grad_vec) / dot(grad_vec, grad_vec);

    if (grad_vec.y < 0.0)
        frac += 1.0;

    frac = clamp(frac, 0.0, 1.0);
    vec4 out_color = mix(color_from, color_to, frac);

#if defined(DEBUG_FLAGS)
    if (tint == 1.0)
        out_color = vec4(0.0, 0.3, 0.0, 0.2) + out_color * 0.8;
#endif

    gl_FragColor = out_color;
}