#version 450 #extension GL_ARB_separate_shader_objects : enable struct SpriteInstanceData { mat4 Transform; vec4 TexCoords; vec4 Color; }; layout (location = 0) in vec2 inPosition; layout (location = 1) in vec2 inTexCoord; layout(location = 0) out vec2 outTexCoord; layout(location = 1) out vec4 outVertexColor; layout(set = 0, binding = 0) readonly buffer SBO_SpriteData { SpriteInstanceData data[]; } sboSpriteData; layout(set = 1, binding = 0) uniform UBO_Vertex_PerScene { mat4 projection; } uboPerScene; layout(set = 1, binding = 1) uniform UBO_Vertex_PerFrame { mat4 view; } uboPerFrame; void main() { SpriteInstanceData spriteData = sboSpriteData.data[gl_InstanceIndex]; gl_Position = uboPerScene.projection * uboPerFrame.view * spriteData.Transform * vec4(inPosition, 0.0f, 1.0f); outTexCoord = inTexCoord; outVertexColor = spriteData.Color; }