Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git
scenefx/render/fx_renderer/shaders/quad_grad_round.frag (1.1K)
1 #define LEN %d
2
3 #ifdef GL_FRAGMENT_PRECISION_HIGH
4 precision highp float;
5 #else
6 precision mediump float;
7 #endif
8
9 varying vec4 v_color;
10 varying vec2 v_texcoord;
11
12 uniform vec2 size;
13 uniform vec2 position;
14
15 uniform float radius_top_left;
16 uniform float radius_top_right;
17 uniform float radius_bottom_left;
18 uniform float radius_bottom_right;
19
20 uniform vec4 colors[LEN];
21 uniform vec2 grad_size;
22 uniform float degree;
23 uniform vec2 grad_box;
24 uniform vec2 origin;
25 uniform bool linear;
26 uniform bool blend;
27 uniform int count;
28
29 vec4 gradient(vec4 colors[LEN], int count, vec2 size, vec2 grad_box, vec2 origin, float degree, bool linear, bool blend);
30
31 float corner_alpha(vec2 size, vec2 position, bool is_cutout,
32 float radius_tl, float radius_tr, float radius_bl, float radius_br);
33
34 // TODO:
35 void main() {
36 float quad_corner_alpha = corner_alpha(
37 size - 1.0,
38 position + 0.5,
39 false,
40 radius_top_left,
41 radius_top_right,
42 radius_bottom_left,
43 radius_bottom_right
44 );
45 float rect_alpha = v_color.a * quad_corner_alpha;
46
47 gl_FragColor = mix(vec4(0.0), gradient(colors, count, size, grad_box, origin, degree, linear, blend), rect_alpha);
48 }