git.lucas.co / cce-compositor
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 }