#version 450 #extension GL_EXT_buffer_reference : require struct Symbol { uint x; uint top; uint width; }; struct Character { vec3 pos; vec4 color; float size; uint code; }; struct String { vec3 pos; vec4 color; float size; uint offset; uint length; }; layout(buffer_reference, std430) readonly buffer SymbolList{ Symbol symbols[]; }; layout(buffer_reference, std430) writeonly buffer CharacterList{ Character characters[]; }; layout(buffer_reference, std430) readonly buffer Characters{ uint codes[]; }; layout(buffer_reference, std430) readonly buffer Strings{ String strings[]; }; layout(set = 0, binding = 0) uniform Font { uint num_symbols; uint width; uint height; uint space_width; SymbolList symbol_list; } font; layout(buffer_reference, std430) readonly buffer Pointers { Strings strings; Characters codes; CharacterList characters; }; layout(std430, push_constant) uniform Push { Pointers pointers; } push; void main() { }