#version 410 core

layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aColor;
layout (location = 2) in vec2 aTexCoord;

out vec2 fragCoord;
out vec2 texCoord;
out vec4 color;

uniform mat4 projection;
uniform mat4 view;
uniform mat4 transform;
uniform int index;
uniform float time;

void main()
{
    float speed = 5f;
    float amplitude = 10f;
    vec3 newPos = aPos;
    newPos.y = newPos.y + (sin((time + index * 10f + newPos.x) * speed) * amplitude);
    gl_Position = projection * view * transform * vec4(newPos, 1.0);
    color = vec4(aColor, 1.0f);
    texCoord = aTexCoord;
    fragCoord = aPos.xy;
}