Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

39 Zeilen
819 B

  1. #version 450 core
  2. #pragma include ./tail_update_shared.glsl
  3. #pragma include ../misc/global.glsl
  4. in VertexData vertexData[];
  5. layout (points) in;
  6. layout (points, max_vertices = 1) out;
  7. out vec2 outTail0;
  8. out vec2 outTail1;
  9. out vec2 outTail2;
  10. out vec2 outTail3;
  11. out vec2 outTail4;
  12. vec2 move(vec2 ref, vec2 point) {
  13. vec2 dir = ref - point;
  14. float len = length(dir);
  15. float diff = max(len - TAIL_LEN, 0.0);
  16. float force = min(TAIL_FORCE * diff * uGlobal.delta, diff);
  17. return point + normalize(dir) * force;
  18. }
  19. void main() {
  20. VertexData d = vertexData[0];
  21. outTail0 = d.pos;
  22. outTail1 = move(d.pos, d.tail[1]);
  23. outTail2 = move(d.tail[1], d.tail[2]);
  24. outTail3 = move(d.tail[2], d.tail[3]);
  25. outTail4 = move(d.tail[3], d.tail[4]);
  26. EmitVertex();
  27. EndPrimitive();
  28. }