gpuRenderParticles.vertex.fx 773 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #version 300 es
  2. uniform vec4 colorDead;
  3. uniform mat4 view;
  4. uniform mat4 projection;
  5. // Particles state
  6. in vec3 position;
  7. in float age;
  8. in float life;
  9. in float size;
  10. in vec4 color;
  11. in vec2 offset;
  12. in vec2 uv;
  13. out vec2 vUV;
  14. out vec4 vColor;
  15. #ifdef CLIPPLANE
  16. uniform vec4 vClipPlane;
  17. uniform mat4 invView;
  18. out float fClipDistance;
  19. #endif
  20. void main() {
  21. vUV = uv;
  22. float ratio = age / life;
  23. vColor = color * vec4(1.0 - ratio) + colorDead * vec4(ratio);
  24. // Expand position
  25. vec4 viewPosition = view * vec4(position, 1.0);
  26. gl_Position = projection * (viewPosition + vec4(offset * size, 0, 1.0));
  27. // Clip plane
  28. #ifdef CLIPPLANE
  29. vec4 worldPos = invView * viewPosition;
  30. fClipDistance = dot(worldPos, vClipPlane);
  31. #endif
  32. }