From 21213d657e917c55a31261927c8d755c0688a728 Mon Sep 17 00:00:00 2001 From: Digvijaysinh Gohil Date: Tue, 6 Aug 2024 16:00:49 +0530 Subject: [PATCH] #9 issue fix --- addons/ShaderLib/UV/UV.gdshaderinc | 103 ++++++++++++++--------------- 1 file changed, 51 insertions(+), 52 deletions(-) diff --git a/addons/ShaderLib/UV/UV.gdshaderinc b/addons/ShaderLib/UV/UV.gdshaderinc index 67ffcf1..8ff4bef 100644 --- a/addons/ShaderLib/UV/UV.gdshaderinc +++ b/addons/ShaderLib/UV/UV.gdshaderinc @@ -2,84 +2,83 @@ vec2 flipbook_uv(vec2 uv, int rows, int columns, float anim_speed){ int start_frame = 1; int end_frame = rows * columns; start_frame += int(fract(TIME * anim_speed) * float(end_frame)); - float _frame = float(clamp(start_frame, 0, end_frame)); - vec2 _off_per_frame = vec2((1.0 / float(columns)), (1.0 / float(rows))); - vec2 _sprite_size = vec2(uv.x / float(columns), uv.y / float(rows)); - vec2 _current_sprite = vec2(0.0, 1.0 - _off_per_frame.y); - _current_sprite.x += _frame * _off_per_frame.x; - float _row_index; - float _mod = modf(_frame / float(columns), _row_index); - _current_sprite.y -= 1.0 - (_row_index * _off_per_frame.y); - _current_sprite.x -= _row_index * float(columns) * _off_per_frame.x; - vec2 _sprite_uv = (_sprite_size + _current_sprite); - return _sprite_uv; + float frame = float(clamp(start_frame, 0, end_frame)); + vec2 off_per_frame = vec2((1.0 / float(columns)), (1.0 / float(rows))); + vec2 sprite_size = vec2(uv.x / float(columns), uv.y / float(rows)); + vec2 current_sprite = vec2(0.0, 1.0 - off_per_frame.y); + current_sprite.x += frame * off_per_frame.x; + float row_index; + float mod = modf(frame / float(columns), row_index); + current_sprite.y -= 1.0 - (row_index * off_per_frame.y); + current_sprite.x -= row_index * float(columns) * off_per_frame.x; + vec2 sprite_uv = (sprite_size + current_sprite); + return sprite_uv; } -vec2 parallax_mapping_uv_offset_1_step(float height, float amplitude, vec3 view_dir_tangent) -{ +vec2 parallax_mapping_uv_offset_1_step(float height, float amplitude, vec3 view_dir_tangent) { height = height * amplitude - amplitude / 2.0; - vec3 _vector = view_dir_tangent; - _vector.y += 0.42; - return height * (_vector.xz / _vector.y); + vec3 vector = view_dir_tangent; + vector.y += 0.42; + return height * (vector.xz / vector.y); } vec2 parallax_mapping_uv(sampler2D height, float amplitude, vec2 uv, vec3 tangent, vec3 normal, vec3 binormal, vec3 view) { float depth = amplitude / 10.0; - mat3 _tangent_matrix = mat3(tangent, normal, -binormal); // VIEW TO TANGENT SPACE - vec3 _view_tangent = transpose(_tangent_matrix) * view; - float _parallaxHeight = texture(height, uv).r; - vec2 _parallaxOffset = parallax_mapping_uv_offset_1_step(_parallaxHeight, depth, _view_tangent); - return _parallaxOffset + uv; + mat3 tangent_matrix = mat3(tangent, normal, -binormal); // VIEW TO TANGENT SPACE + vec3 view_tangent = transpose(tangent_matrix) * view; + float parallaxHeight = texture(height, uv).r; + vec2 parallaxOffset = parallax_mapping_uv_offset_1_step(parallaxHeight, depth, view_tangent); + return parallaxOffset + uv; } vec2 radial_shear_uv(vec2 uv, vec2 center, float strength, vec2 offset){ - vec2 _delta = uv - center; - float _delta2 = dot(_delta.xy, _delta.xy); - vec2 _delta_offset = vec2(_delta2 * strength); - return uv + vec2(_delta.y, -_delta.x) * _delta_offset + offset; + vec2 delta = uv - center; + float delta2 = dot(delta.xy, delta.xy); + vec2 delta_offset = vec2(delta2 * strength); + return uv + vec2(delta.y, -delta.x) * delta_offset + offset; } vec2 rotate_uv(vec2 uv, vec2 center, float rotation, bool use_degrees){ - float _angle = rotation; + float angle = rotation; if(use_degrees){ - _angle = rotation * (3.1415926/180.0); + angle = rotation * (3.1415926/180.0); } - mat2 _rotation = mat2( - vec2(cos(_angle), -sin(_angle)), - vec2(sin(_angle), cos(_angle)) + mat2 rot = mat2( + vec2(cos(angle), -sin(angle)), + vec2(sin(angle), cos(angle)) ); - vec2 _delta = uv - center; - _delta = _rotation * _delta; - return _delta + center; + vec2 delta = uv - center; + delta = rot * delta; + return delta + center; } vec2 spherize_uv(vec2 uv, vec2 center, float strength, vec2 offset){ - vec2 _delta = uv - center; - float _delta2 = dot(_delta.xy, _delta.xy); - float _delta4 = _delta2 * _delta2; - vec2 _delta_offset = vec2(_delta4 * strength); - return uv + _delta * _delta_offset + offset; + vec2 delta = uv - center; + float delta2 = dot(delta.xy, delta.xy); + float delta4 = delta2 * delta2; + vec2 delta_offset = vec2(delta4 * strength); + return uv + delta * delta_offset + offset; } vec2 swirl_uv(vec2 uv, vec2 center, float strength, vec2 offset){ - vec2 _delta = uv - center; - float _angle = strength * max(pow(1. - length(_delta), 3), 0); - mat2 _rotation = mat2( - vec2(cos(_angle), -sin(_angle)), - vec2(sin(_angle), cos(_angle)) + vec2 delta = uv - center; + float angle = strength * max(pow(1. - length(delta), 3), 0); + mat2 rotation = mat2( + vec2(cos(angle), -sin(angle)), + vec2(sin(angle), cos(angle)) ); - _delta = _rotation * _delta; - return _delta + center; + delta = rotation * delta; + return delta + center + offset; } vec2 twirl_uv(vec2 uv, vec2 center, float strength, vec2 offset){ - vec2 _delta = uv - center; - float _angle = strength * length(_delta); - mat2 _rotation = mat2( - vec2(cos(_angle), -sin(_angle)), - vec2(sin(_angle), cos(_angle)) + vec2 delta = uv - center; + float angle = strength * length(delta); + mat2 rotation = mat2( + vec2(cos(angle), -sin(angle)), + vec2(sin(angle), cos(angle)) ); - _delta = _rotation * _delta; - return _delta + center; + delta = rotation * delta; + return delta + center + offset; } \ No newline at end of file