cirnogodot/VFEZ/Shaders/Effects/vfez_uv_pinch.gdshaderinc

16 lines
558 B
Text
Raw Normal View History

2025-03-09 15:58:26 +01:00
group_uniforms uv_pinch;
uniform float uv_pinch_center_x: hint_range(0.0, 1.0) = 0.5;
uniform float uv_pinch_center_y: hint_range(0.0, 1.0) = 0.5;
uniform float uv_pinch_amount;
group_uniforms;
vec2 uv_pinch(vec2 uv, vec2 main_texture_scale)
{
vec2 center = vec2(uv_pinch_center_x * main_texture_scale.x,
uv_pinch_center_y * main_texture_scale.y);
vec2 dP = uv - center;
float pinchInt = (PI / length(center)) * (-uv_pinch_amount + 0.001);
uv = center + normalize(dP) * atan(-length(dP) * pinchInt * 10.0)
* 0.5 / atan(-pinchInt * 5.);
return uv;
}