選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

47 行
1.2 KiB

  1. #version 450 core
  2. #pragma include ./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. flat out int textureId;
  9. void main() {
  10. VertexData d = vertexData[0];
  11. vec2 pos = d.pos;
  12. float size = d.size * GLOW_SIZE;
  13. mat4 m = uCamera.projection * uCamera.view * mat4(
  14. vec4( size, 0.0, 0.0, 0.0),
  15. vec4( 0.0, size, 0.0, 0.0),
  16. vec4( 0.0, 0.0, 0.0, 0.0),
  17. vec4(pos.x, pos.y, 0.0, 1.0));
  18. textureId = d.texture;
  19. fragmentData.color = d.color;
  20. gl_Position = m * vec4(-1.0, -1.0, 0.0, 1.0);
  21. fragmentData.texCoords = vec2(-1.0, 1.0);
  22. EmitVertex();
  23. gl_Position = m * vec4(-1.0, 1.0, 0.0, 1.0);
  24. fragmentData.texCoords = vec2(-1.0, -1.0);
  25. EmitVertex();
  26. gl_Position = m * vec4( 1.0, -1.0, 0.0, 1.0);
  27. fragmentData.texCoords = vec2( 1.0, 1.0);
  28. EmitVertex();
  29. gl_Position = m * vec4( 1.0, 1.0, 0.0, 1.0);
  30. fragmentData.texCoords = vec2( 1.0, -1.0);
  31. EmitVertex();
  32. EndPrimitive();
  33. }