30 lines
836 B
HLSL
30 lines
836 B
HLSL
#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
|