#version 440 layout(location = 0) in vec4 vertexCoord; layout(location = 1) in vec4 vertexColor; layout(location = 0) out float gradTabIndex; layout(std140, binding = 0) uniform buf { mat4 matrix; vec2 gradStart; vec2 gradEnd; float opacity; } ubuf; out gl_PerVertex { vec4 gl_Position; }; void main() { vec2 gradVec = ubuf.gradEnd - ubuf.gradStart; gradTabIndex = dot(gradVec, vertexCoord.xy - ubuf.gradStart) / (gradVec.x * gradVec.x + gradVec.y * gradVec.y); gl_Position = ubuf.matrix * vertexCoord; }