#version 460 #extension GL_EXT_nonuniform_qualifier : require #extension GL_EXT_scalar_block_layout : require #extension GL_EXT_shader_16bit_storage : require out Varyings { layout(location = 0) flat uint instance; layout(location = 1) vec2 texCoord; } var; #include "includes/gui_image_common.glsl" const vec2 VERTICES[4] = vec2[]( vec2(0, 1), vec2(1, 1), vec2(0, 0), vec2(1, 0) ); #define IMAGE _Images[gl_InstanceIndex] #define VERTEX VERTICES[gl_VertexIndex] void main() { vec2 positionSSPX = VERTEX * IMAGE.sizePX + IMAGE.positionSSPX; vec4 positionCS = vec4(_Global.matrixSSPXtoCS * vec3(positionSSPX, 1.0), 0.0, 1.0); vec2 texCoord = VERTEX * (IMAGE.uvMax - IMAGE.uvMin) + IMAGE.uvMin; gl_Position = positionCS; var.instance = gl_InstanceIndex; var.texCoord = texCoord; }