#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