#ifndef _WATERMOVE_H
#define _WATERMOVE_H

float4 watermove(float4 P)
{
    float3 wave1 = float3(0.11f, 0.13f, 0.07f) * W_POSITION_SHIFT_SPEED;
    float dh = sin(timers.x + dot((float3)P, wave1));
    P.y += dh * W_POSITION_SHIFT_HEIGHT;
    return P;
}

float2 watermove_tc(float2 base, float2 P, float amp)
{
    float2 wave1 = float2(0.2111f, 0.2333f) * amp;
    float angle = timers.z + dot(P, wave1);
    float du = sin(angle);
    float dv = cos(angle);
    return (base + amp * float2(du, dv));
}

float3 waterrefl(out float amount, float3 P, float3 N)
{
    float3 v2point = normalize(P - eye_position);
    float3 vreflect = reflect(v2point, N);
    float fresnel = (.5f + .5f * dot(vreflect, v2point));
    amount = 1 - fresnel * fresnel; // 0=full env, 1=no env
    return vreflect;
}

#endif
