out vec2 fragmentUv01;
out vec3 fragmentNormal;
out vec4 fragmentPosition;

#include "drive/water/water.shared.glsl"

void main()
{

    float time = u_time;

	vec4 vertexWorld = u_model * vec4(a_position, 1.0);
	vec4 waterPosition = vec4(a_position, 1.0);
    float wh = sampleWaterHeight(vertexWorld.xz, time);
	waterPosition.y += wh * heightScale;
	waterPosition.y += 0.15;

	fragmentNormal = (u_model * vec4(sampleWaterNormal(vertexWorld.xz, time), 0.0)).xyz;

	gl_Position = u_proj * u_view * u_model * waterPosition;

	fragmentPosition = u_model * waterPosition;
    
	fragmentUv01 = a_texcoord0;

}