#version 450 core #pragma include ./glow_shared.glsl #pragma include ../misc/camera.glsl in VertexData vertexData[]; layout (points) in; layout (triangle_strip, max_vertices = 4) out; out FragmentData fragmentData; void main() { VertexData d = vertexData[0]; vec2 pos = d.pos; float size = GLOW_SIZE; mat4 m = uCamera.projection * uCamera.view * mat4( vec4( size, 0.0, 0.0, 0.0), vec4( 0.0, size, 0.0, 0.0), vec4( 0.0, 0.0, 1.0, 0.0), vec4(pos.x, pos.y, 0.0, 1.0)); fragmentData.color = d.color; gl_Position = m * vec4(-1.0, -1.0, 0.0, 1.0); fragmentData.texCoords = vec2(-1.0, 1.0); EmitVertex(); gl_Position = m * vec4(-1.0, 1.0, 0.0, 1.0); fragmentData.texCoords = vec2(-1.0, -1.0); EmitVertex(); gl_Position = m * vec4( 1.0, -1.0, 0.0, 1.0); fragmentData.texCoords = vec2( 1.0, 1.0); EmitVertex(); gl_Position = m * vec4( 1.0, 1.0, 0.0, 1.0); fragmentData.texCoords = vec2( 1.0, -1.0); EmitVertex(); EndPrimitive(); }