forked from AuroraMiddleware/gtk
6a60e335cd
That way we don't need to move the clip rounded rect manually through the vertex shader into the fragment shader but can just look at the push constants. Simplifies shaders a lot.
33 lines
970 B
GLSL
33 lines
970 B
GLSL
#version 420 core
|
|
|
|
#include "constants.glsl"
|
|
#include "rounded-rect.glsl"
|
|
|
|
layout(location = 0) in vec2 inPos;
|
|
layout(location = 1) in vec4 inColor;
|
|
layout(location = 2) in vec4 inRect;
|
|
layout(location = 3) in vec4 inCornerWidths;
|
|
layout(location = 4) in vec4 inCornerHeights;
|
|
layout(location = 5) in vec4 inBorderWidths;
|
|
|
|
layout(location = 0) out vec4 color;
|
|
|
|
vec4
|
|
clip (vec4 color)
|
|
{
|
|
RoundedRect r = RoundedRect(vec4(push.clip_bounds.xy, push.clip_bounds.xy + push.clip_bounds.zw), push.clip_widths, push.clip_heights);
|
|
|
|
return color * rounded_rect_coverage (r, inPos);
|
|
}
|
|
|
|
void main()
|
|
{
|
|
RoundedRect routside = RoundedRect (vec4(inRect.xy, inRect.xy + inRect.zw), inCornerWidths, inCornerHeights);
|
|
RoundedRect rinside = rounded_rect_shrink (routside, inBorderWidths);
|
|
|
|
float alpha = clamp (rounded_rect_coverage (routside, inPos) -
|
|
rounded_rect_coverage (rinside, inPos),
|
|
0.0, 1.0);
|
|
color = clip (inColor);
|
|
}
|