|
- #version 450 core
-
- #pragma include ./shared.glsl
- #pragma include ../misc/camera.glsl
-
- in VertexData vertexData[];
-
- layout (points) in;
- layout (triangle_strip, max_vertices = 4) out;
-
- out FragmentData fragmentData;
- flat out int textureId;
-
- void main() {
- VertexData d = vertexData[0];
-
- vec2 pos = d.pos;
- vec2 dir = d.dir * SHIP_SIZE * GLOW_SIZE;
-
- mat4 m = uCamera.projection * uCamera.view * mat4(
- vec4(dir.y, -dir.x, 0.0, 0.0),
- vec4(dir.x, dir.y, 0.0, 0.0),
- vec4( 0.0, 0.0, 0.0, 0.0),
- vec4(pos.x, pos.y, 0.0, 1.0));
-
- textureId = d.texture;
- 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();
- }
|