forked from AuroraMiddleware/gtk
900a4e4d31
Move the resources of each renderer to its subdirectory. We've previously done that for the ngl renderer, but it is better to be consistent and do it for all the renderers.
34 lines
862 B
GLSL
34 lines
862 B
GLSL
// VERTEX_SHADER:
|
|
uniform vec4 u_color;
|
|
uniform vec4[3] u_outline_rect;
|
|
|
|
_OUT_ vec4 final_color;
|
|
_OUT_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outline;
|
|
|
|
void main() {
|
|
gl_Position = u_projection * u_modelview * vec4(aPosition, 0.0, 1.0);
|
|
|
|
vUv = vec2(aUv.x, aUv.y);
|
|
|
|
final_color = gsk_premultiply(u_color) * u_alpha;
|
|
|
|
GskRoundedRect outline = gsk_create_rect(u_outline_rect);
|
|
gsk_rounded_rect_transform(outline, u_modelview);
|
|
gsk_rounded_rect_encode(outline, transformed_outline);
|
|
}
|
|
|
|
// FRAGMENT_SHADER:
|
|
_IN_ vec4 final_color;
|
|
_IN_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outline;
|
|
|
|
void main() {
|
|
vec2 frag = gsk_get_frag_coord();
|
|
|
|
float alpha = GskTexture(u_source, vUv).a;
|
|
alpha *= (1.0 - clamp(gsk_rounded_rect_coverage(gsk_decode_rect(transformed_outline), frag), 0.0, 1.0));
|
|
|
|
vec4 color = final_color * alpha;
|
|
|
|
gskSetOutputColor(color);
|
|
}
|