river.vert 762 B

123456789101112131415161718192021222324252627282930
  1. #version 330 core
  2. layout(location = 0) in vec3 aPos;
  3. layout(location = 1) in vec2 aTexCoord;
  4. uniform mat4 model;
  5. uniform mat4 view;
  6. uniform mat4 projection;
  7. uniform float time;
  8. out vec2 TexCoord;
  9. out vec3 WorldPos;
  10. void main() {
  11. vec3 pos = aPos;
  12. float wave1 = sin(aPos.z * 0.5 + time * 2.0) * 0.04;
  13. float wave2 = sin(aPos.x * 0.8 + time * 1.5) * 0.03;
  14. float wave3 = sin((aPos.x + aPos.z) * 0.3 + time * 2.5) * 0.02;
  15. float ripple1 = sin(aPos.x * 2.0 + aPos.z * 1.5 + time * 3.0) * 0.015;
  16. float ripple2 = cos(aPos.z * 2.5 - aPos.x * 1.2 + time * 2.2) * 0.012;
  17. pos.y += wave1 + wave2 + wave3 + ripple1 + ripple2;
  18. WorldPos = (model * vec4(pos, 1.0)).xyz;
  19. gl_Position = projection * view * model * vec4(pos, 1.0);
  20. TexCoord = aTexCoord;
  21. }