#version 150 core uniform ivec2 Viewport; uniform mat3 Transform; uniform vec4 BoundingBox; in vec2 Vert; /* TODO: instances */ // in vec4 Rect; // in vec4 Clip; out vec2 TextureCoord; void main() { vec2 vert = mix(BoundingBox.xy, BoundingBox.zw, Vert); vec3 pos = Transform * vec3(vert, 1.0); // TextureCoord = mix(Clip.st, Clip.pq, Vert) / textureSize(T, 0); TextureCoord = Vert; gl_Position.xy = pos.xy * vec2(2.0, -2.0) / Viewport + vec2(-1.0, 1.0); gl_Position.z = 0.0; gl_Position.w = 1.0; }