You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.1 KiB

  1. #version 450 core
  2. #pragma include ./glow_shared.glsl
  3. #pragma include ../misc/camera.glsl
  4. in VertexData vertexData[];
  5. layout (points) in;
  6. layout (triangle_strip, max_vertices = 4) out;
  7. out FragmentData fragmentData;
  8. void main() {
  9. VertexData d = vertexData[0];
  10. vec2 pos = d.pos;
  11. float size = GLOW_SIZE;
  12. mat4 m = uCamera.projection * uCamera.view * mat4(
  13. vec4( size, 0.0, 0.0, 0.0),
  14. vec4( 0.0, size, 0.0, 0.0),
  15. vec4( 0.0, 0.0, 1.0, 0.0),
  16. vec4(pos.x, pos.y, 0.0, 1.0));
  17. fragmentData.color = d.color;
  18. gl_Position = m * vec4(-1.0, -1.0, 0.0, 1.0);
  19. fragmentData.texCoords = vec2(-1.0, 1.0);
  20. EmitVertex();
  21. gl_Position = m * vec4(-1.0, 1.0, 0.0, 1.0);
  22. fragmentData.texCoords = vec2(-1.0, -1.0);
  23. EmitVertex();
  24. gl_Position = m * vec4( 1.0, -1.0, 0.0, 1.0);
  25. fragmentData.texCoords = vec2( 1.0, 1.0);
  26. EmitVertex();
  27. gl_Position = m * vec4( 1.0, 1.0, 0.0, 1.0);
  28. fragmentData.texCoords = vec2( 1.0, -1.0);
  29. EmitVertex();
  30. EndPrimitive();
  31. }