#version 450 layout(set = 0, binding = 0) uniform UIUniform { mat4 screen; } ubo; layout(set = 1, binding = 0) uniform FontUniform { vec2 size; uint cols; uint rows; uint start; } font; layout(location = 0) in vec2 inVertexPosition; layout(location = 1) in vec3 inPosition; layout(location = 2) in vec2 inSize; layout(location = 3) in vec4 inColor; layout(location = 4) in uint code; layout(location = 0) out vec4 fragColor; layout(location = 1) out vec2 fragUV; void main() { float row = floor(code/font.cols); float col = code - row*font.cols; fragUV = (vec2(col, row) + inVertexPosition) / vec2(font.cols, font.rows); fragColor = inColor; gl_Position = ubo.screen * vec4(vec3(inVertexPosition * inSize, 0.0) + inPosition, 1.0); }