e4s-sdk/gamedata/shaders/shared/watermove.hlsli
2026-06-17 23:06:51 +03:00

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