cirnogodot/VFEZ/Shaders/Effects/vfez_uv_wind.gdshaderinc
2025-03-09 15:58:26 +01:00

31 lines
920 B
Text

group_uniforms uv_wind;
uniform float uv_wind_speed: hint_range(0., 50.) = 2.;
uniform float uv_wind_amount: hint_range(0, 50) = 20;
uniform float uv_wind_vertical_ratio: hint_range(0.0, 1.0) = 1.;
uniform vec2 uv_radial_bend_center = vec2(0.5, 0.9);
uniform bool uv_wind_animate_manual;
uniform float uv_wind_manual_anim: hint_range(-1, 1) = 1;
uniform float uv_wind_radial_bend: hint_range(0.0, 5.0) = 0.1;
group_uniforms;
vec2 uv_wind(vec2 uv)
{
float wind_offset;
if (uv_wind_animate_manual)
{
wind_offset = uv_wind_manual_anim;
}
else
{
wind_offset = sin(TIME * uv_wind_speed * 10.);
}
uv.x = mix(uv.x, uv.x + uv_wind_amount * 0.01 * wind_offset,
abs(uv_wind_vertical_ratio - uv.y));
vec2 delta = uv - uv_radial_bend_center;
float delta2 = dot(delta, delta);
float delta_offset = delta2 * wind_offset;
uv = uv + vec2(delta.y, - delta.x) * delta_offset * uv_wind_radial_bend;
return uv;
}