[gd_scene load_steps=5 format=2] [ext_resource path="res://assets/water.png" type="Texture" id=1] [ext_resource path="res://scenes/water.gd" type="Script" id=2] [sub_resource type="Shader" id=1] code = "shader_type canvas_item; uniform float region_size = 300.0; uniform float aspect_ratio = 0.5; uniform float wave_speed = 0.4; uniform vec4 blue_color : hint_color = vec4(0.04, 0.33, 1.0, 1.); uniform float exponent = 4.; uniform float blue_scale = 0.1; uniform float wave_step = 1.0; vec2 rand(vec2 co){ return vec2( fract(sin(dot(co.xy, vec2(12.9898,78.233))) * 43758.5453), fract(sin(dot(co.yx, vec2(12.9898,78.233))) * 43758.5453)); } void fragment() { vec2 tiled_uvs = UV * vec2(region_size, region_size); tiled_uvs.y *= aspect_ratio; vec2 i_st = floor(tiled_uvs); vec2 f_st = fract(tiled_uvs); float m_dist = 1.; for (int y = -1; y <= 1; y++) { for (int x = -1; x <= 1; x++) { vec2 neighbour = vec2(float(x), float(y)); vec2 point = rand (i_st + neighbour); point = 0.5 + 0.5 * sin(TIME * 1. + 6.2831 * point); vec2 diff = neighbour + point - f_st; float dist = length(diff); m_dist = min(m_dist, dist); } } vec4 m_dist_color = vec4(m_dist, m_dist, m_dist, 1.); vec4 color = blue_color + vec4(blue_scale * pow(m_dist, exponent)); COLOR = vec4(color); }" [sub_resource type="ShaderMaterial" id=2] shader = SubResource( 1 ) shader_param/region_size = 999.0 shader_param/aspect_ratio = 0.647 shader_param/wave_speed = 0.4 shader_param/blue_color = Color( 0, 0.25098, 0.494118, 1 ) shader_param/exponent = 4.0 shader_param/blue_scale = 0.04 shader_param/wave_step = 3.0 [node name="Water" type="Node2D"] [node name="water" type="Sprite" parent="."] material = SubResource( 2 ) position = Vector2( -0.00827694, 0 ) scale = Vector2( 0.444957, 0.287887 ) texture = ExtResource( 1 ) script = ExtResource( 2 ) [connection signal="item_rect_changed" from="water" to="water" method="calculate_aspect_ratio"]