#version 450 layout (set = 0, binding = 0) uniform Descriptor { vec4 background_color; vec4 border_color; uint width; uint height; uint border_thickness; } descriptor; layout (location = 0) out vec4 out_color; void main() { vec2 st = gl_FragCoord.xy/vec2((float)descriptor.width, (float)descriptor.height); if ((uint)st.x <= descriptor.border_thickness || (uint)st.x >= (descriptor.width - descriptor.border_thickness)) { out_color = descriptor.border_color; } else if ( (uint)st.y <= descriptor.border_thickness || (uint)st.y >= (descriptor.height - descriptor.border_thickness) ) { out_color = descriptor.border_color; } else { out_color = descriptor.background_color; } }