Something went wrong. Try again.
art software for the rest of us
drawing paint image sdl art
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546#version 450
struct UIInstance { vec4 rect; vec4 color; vec4 borderColor; vec2 borderAttr; vec2 mode; // 0 = rect, 1 = image, 2 text};
layout(set = 0, binding = 0) readonly buffer UIInstances { UIInstance data[];} uiInstances;
layout(location = 0) out vec4 out_color;layout(location = 1) out vec4 out_borderColor;layout(location = 2) out vec2 out_local;layout(location = 3) out vec2 out_halfSize;layout(location = 4) out vec2 out_borderRound;layout(location = 5) out vec2 out_texcoord;layout(location = 6) flat out float out_mode;
layout(set = 1, binding = 0) uniform PushConstants { vec4 params;} pc;
void main() { UIInstance instance = uiInstances.data[gl_InstanceIndex + uint(pc.params.z)]; vec2 cornerOffset = vec2( float(gl_VertexIndex & 1), float((gl_VertexIndex >> 1) & 1) ); vec2 pixelPos = instance.rect.xy + cornerOffset * instance.rect.zw; vec2 ndc = (pixelPos / pc.params.xy) * 2.0 - 1.0; ndc.y = -ndc.y; gl_Position = vec4(ndc, 0.0, 1.0);
out_color = instance.color; out_borderColor = instance.borderColor; out_local = (cornerOffset - 0.5) * instance.rect.zw; out_halfSize = instance.rect.zw * 0.5; out_borderRound = instance.borderAttr.xy; out_texcoord = cornerOffset; out_mode = instance.mode.x;}