#version 430 core layout (points) in; layout (triangle_strip, max_vertices = 4) out; in vec4 vParams []; in vec2 vWinSize []; out vec2 gTexPos; void main() { vec2 cPos = vec2(vParams[0].x / 250 , vParams[0].y /250 ); float zoom = vParams[0].w; float xoff = vWinSize[0].x / (500*zoom) ; float yoff = vWinSize[0].y / (500*zoom) ; gTexPos = vec2 (cPos.x + xoff,cPos.y + yoff); gl_Position = vec4 (1,1,0.9,1); EmitVertex(); gTexPos = vec2 (cPos.x + xoff,cPos.y - yoff); gl_Position = vec4 (1,-1,0.9,1); EmitVertex(); gTexPos = vec2 (cPos.x - xoff,cPos.y + yoff); gl_Position = vec4 (-1,1,0.9,1); EmitVertex(); gTexPos = vec2 (cPos.x - xoff,cPos.y - yoff); gl_Position = vec4 (-1,-1,0.9,1); EmitVertex(); EndPrimitive(); }