Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

46 linhas
1.1 KiB

  1. #version 450 core
  2. #pragma include ./ship_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. vec2 dir = d.dir * SHIP_SIZE;
  13. mat4 m = uCamera.projection * uCamera.view * mat4(
  14. vec4(dir.y, -dir.x, 0.0, 0.0),
  15. vec4(dir.x, dir.y, 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. gl_Position = m * vec4(-1.0, -1.0, 0.0, 1.0);
  20. fragmentData.texCoords = vec2( 0.0, 1.0);
  21. EmitVertex();
  22. gl_Position = m * vec4(-1.0, 1.0, 0.0, 1.0);
  23. fragmentData.texCoords = vec2( 0.0, 0.0);
  24. EmitVertex();
  25. gl_Position = m * vec4( 1.0, -1.0, 0.0, 1.0);
  26. fragmentData.texCoords = vec2( 1.0, 1.0);
  27. EmitVertex();
  28. gl_Position = m * vec4( 1.0, 1.0, 0.0, 1.0);
  29. fragmentData.texCoords = vec2( 1.0, 0.0);
  30. EmitVertex();
  31. EndPrimitive();
  32. }