--- /dev/null
+#version 460
+
+layout(packed, binding=0) buffer model_list {
+ mat4 models[];
+};
+layout(packed, binding=1) buffer scale_list {
+ vec2 scales[];
+};
+in vec3 in_vertex;
+in vec2 in_texcoord;
+uniform mat4 vp;
+out vec2 frag_texcoord;
+out vec4 gl_Position;
+
+void main(void) {
+ gl_Position = vp * models[gl_InstanceID] * vec4(in_vertex, 1.0);
+ frag_texcoord = (vec2(in_vertex.x, in_vertex.z) * 0.5 + vec2(0.5, 0.5)) * scales[gl_InstanceID];
+}