├── README.md ├── default_bus_layout.tres ├── displace_2.jpg ├── displace_2.jpg.import ├── displace_2.tres ├── displace_2.tres.tex ├── displacement.png ├── displacement.png.flags ├── displacement.png.import ├── displacement_2.png ├── displacement_2.png.import ├── engine.cfg ├── grass.png ├── grass.png.import ├── icon.png ├── icon.png.flags ├── icon.png.import ├── main.tscn ├── moving_object.gd ├── pixel.png ├── pixel.png.flags ├── pixel.png.import ├── project.godot ├── sand-ripples.jpg.import ├── sand.png ├── sand.png.import ├── scene_bg.png ├── scene_bg.png.flags ├── scene_bg.png.import ├── scene_src.png ├── scene_src.png.import └── water_material.tres /README.md: -------------------------------------------------------------------------------- 1 | # water2D 2 | -------------------------------------------------------------------------------- /default_bus_layout.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="AudioBusLayout" format=2] 2 | 3 | [resource] 4 | 5 | bus/0/name = "Master" 6 | bus/0/solo = false 7 | bus/0/mute = false 8 | bus/0/bypass_fx = false 9 | bus/0/volume_db = -37.2 10 | bus/0/send = "" 11 | 12 | -------------------------------------------------------------------------------- /displace_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jedStevens/water2D/52e0efb426fc2ef5db4f704da946610e4bc4923e/displace_2.jpg -------------------------------------------------------------------------------- /displace_2.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/displace_2.jpg-56bcc191ff5b8157ce6255f43a4d5aef.stex" 6 | 7 | [params] 8 | 9 | compress/mode=0 10 | compress/lossy_quality=0.7 11 | flags/repeat=0 12 | flags/filter=true 13 | flags/mipmaps=false 14 | flags/anisotropic=false 15 | flags/srgb=2 16 | process/fix_alpha_border=true 17 | process/premult_alpha=true 18 | stream=false 19 | size_limit=0 20 | detect_3d=true 21 | -------------------------------------------------------------------------------- /displace_2.tres.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jedStevens/water2D/52e0efb426fc2ef5db4f704da946610e4bc4923e/displace_2.tres.tex -------------------------------------------------------------------------------- /displacement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jedStevens/water2D/52e0efb426fc2ef5db4f704da946610e4bc4923e/displacement.png -------------------------------------------------------------------------------- /displacement.png.flags: -------------------------------------------------------------------------------- 1 | repeat=true 2 | -------------------------------------------------------------------------------- /displacement.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/displacement.png-ebfaf9b7ff808e96b6c7ed5bd1f7bd3f.stex" 6 | 7 | [params] 8 | 9 | compress/mode=0 10 | compress/lossy_quality=0.7 11 | flags/repeat=0 12 | flags/filter=true 13 | flags/mipmaps=false 14 | flags/anisotropic=false 15 | flags/srgb=2 16 | process/fix_alpha_border=true 17 | process/premult_alpha=true 18 | stream=false 19 | size_limit=0 20 | detect_3d=true 21 | -------------------------------------------------------------------------------- /displacement_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jedStevens/water2D/52e0efb426fc2ef5db4f704da946610e4bc4923e/displacement_2.png -------------------------------------------------------------------------------- /displacement_2.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/displacement_2.png-0ce673f2784da7f9b1898e0417a0bf14.stex" 6 | 7 | [params] 8 | 9 | compress/mode=0 10 | compress/lossy_quality=0.7 11 | flags/repeat=0 12 | flags/filter=true 13 | flags/mipmaps=false 14 | flags/anisotropic=false 15 | flags/srgb=2 16 | process/fix_alpha_border=true 17 | process/premult_alpha=true 18 | stream=false 19 | size_limit=0 20 | detect_3d=true 21 | -------------------------------------------------------------------------------- /engine.cfg: -------------------------------------------------------------------------------- 1 | [application] 2 | 3 | name="Water2D" 4 | icon="res://icon.png" 5 | -------------------------------------------------------------------------------- /grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jedStevens/water2D/52e0efb426fc2ef5db4f704da946610e4bc4923e/grass.png -------------------------------------------------------------------------------- /grass.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/grass.png-79cf597cc1adecdff9d12adae9606f9b.stex" 6 | 7 | [params] 8 | 9 | compress/mode=0 10 | compress/lossy_quality=0.7 11 | flags/repeat=0 12 | flags/filter=true 13 | flags/mipmaps=false 14 | flags/anisotropic=false 15 | flags/srgb=2 16 | process/fix_alpha_border=true 17 | process/premult_alpha=true 18 | stream=false 19 | size_limit=0 20 | detect_3d=true 21 | -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jedStevens/water2D/52e0efb426fc2ef5db4f704da946610e4bc4923e/icon.png -------------------------------------------------------------------------------- /icon.png.flags: -------------------------------------------------------------------------------- 1 | gen_mipmaps=false 2 | -------------------------------------------------------------------------------- /icon.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" 6 | 7 | [params] 8 | 9 | compress/mode=0 10 | compress/lossy_quality=0.7 11 | flags/repeat=0 12 | flags/filter=true 13 | flags/mipmaps=false 14 | flags/anisotropic=false 15 | flags/srgb=2 16 | process/fix_alpha_border=true 17 | process/premult_alpha=true 18 | stream=false 19 | size_limit=0 20 | detect_3d=true 21 | -------------------------------------------------------------------------------- /main.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=10 format=1] 2 | 3 | [ext_resource path="res://scene_bg.png" type="Texture" id=1] 4 | [ext_resource path="res://icon.png" type="Texture" id=2] 5 | [ext_resource path="res://moving_object.gd" type="Script" id=3] 6 | [ext_resource path="res://grass.png" type="Texture" id=4] 7 | [ext_resource path="res://sand.png" type="Texture" id=5] 8 | [ext_resource path="res://water_material.tres" type="CanvasItemMaterial" id=6] 9 | [ext_resource path="res://pixel.png" type="Texture" id=7] 10 | 11 | [sub_resource type="CanvasItemShader" id=1] 12 | 13 | _code = { 14 | "fragment": "uniform texture bg_texture; 15 | uniform float speed = 0.01; 16 | 17 | COLOR.rgb = tex(bg_texture,UV + vec2(mod(TIME*speed,1.0), 0.0)).rgb;", 18 | "fragment_ofs": 0, 19 | "light": "", 20 | "light_ofs": 0, 21 | "vertex": "", 22 | "vertex_ofs": 0 23 | } 24 | 25 | [sub_resource type="CanvasItemMaterial" id=2] 26 | 27 | shader/shader = SubResource( 1 ) 28 | shader/shading_mode = 0 29 | shader_param/bg_texture = ExtResource( 1 ) 30 | shader_param/speed = 0.01 31 | 32 | [node name="main" type="Node2D"] 33 | 34 | [node name="sky" type="Sprite" parent="."] 35 | 36 | material/material = SubResource( 2 ) 37 | transform/pos = Vector2( -65.4731, -84.7086 ) 38 | transform/scale = Vector2( 0.832524, 0.7 ) 39 | texture = ExtResource( 1 ) 40 | centered = false 41 | 42 | [node name="objects" type="Node2D" parent="."] 43 | 44 | [node name="object" type="Sprite" parent="objects"] 45 | 46 | transform/pos = Vector2( 627.135, 404.032 ) 47 | texture = ExtResource( 2 ) 48 | 49 | [node name="object2" type="Sprite" parent="objects"] 50 | 51 | transform/pos = Vector2( 837.809, 425.521 ) 52 | texture = ExtResource( 2 ) 53 | 54 | [node name="object1" type="Sprite" parent="objects"] 55 | 56 | transform/pos = Vector2( 77.5629, 326.17 ) 57 | transform/rot = 173546.0 58 | texture = ExtResource( 2 ) 59 | script/script = ExtResource( 3 ) 60 | 61 | [node name="grass" type="Sprite" parent="."] 62 | 63 | transform/pos = Vector2( 628.619, 636.255 ) 64 | texture = ExtResource( 4 ) 65 | 66 | [node name="sand" type="Sprite" parent="."] 67 | 68 | transform/pos = Vector2( 686.973, 741.8 ) 69 | transform/scale = Vector2( 5.67002, 1.49854 ) 70 | texture = ExtResource( 5 ) 71 | 72 | [node name="water" type="Sprite" parent="."] 73 | 74 | material/material = ExtResource( 6 ) 75 | transform/pos = Vector2( -42.1523, 546.412 ) 76 | transform/scale = Vector2( 1453.34, 386.675 ) 77 | texture = ExtResource( 7 ) 78 | centered = false 79 | 80 | [node name="camera" type="Camera2D" parent="."] 81 | 82 | transform/pos = Vector2( 187.715, 264.517 ) 83 | transform/rot = 29924.3 84 | anchor_mode = 0 85 | rotating = false 86 | current = true 87 | zoom = Vector2( 0.6, 0.6 ) 88 | limit/left = -10000000 89 | limit/top = -10000000 90 | limit/right = 10000000 91 | limit/bottom = 10000000 92 | drag_margin/h_enabled = true 93 | drag_margin/v_enabled = true 94 | smoothing/enable = false 95 | smoothing/speed = 5.0 96 | drag_margin/left = 0.2 97 | drag_margin/top = 0.2 98 | drag_margin/right = 0.2 99 | drag_margin/bottom = 0.2 100 | 101 | 102 | -------------------------------------------------------------------------------- /moving_object.gd: -------------------------------------------------------------------------------- 1 | tool 2 | var time = 0 3 | 4 | func _ready(): 5 | set_process(true) 6 | 7 | func _process(delta): 8 | time += delta 9 | set_rot(time) 10 | set_pos(get_pos() + Vector2(sin(time), 0)) -------------------------------------------------------------------------------- /pixel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jedStevens/water2D/52e0efb426fc2ef5db4f704da946610e4bc4923e/pixel.png -------------------------------------------------------------------------------- /pixel.png.flags: -------------------------------------------------------------------------------- 1 | repeat=true 2 | mirroredrepeat=true 3 | -------------------------------------------------------------------------------- /pixel.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/pixel.png-5fd5f2727b2210c36f485c903cd0a0d4.stex" 6 | 7 | [params] 8 | 9 | compress/mode=0 10 | compress/lossy_quality=0.7 11 | flags/repeat=0 12 | flags/filter=true 13 | flags/mipmaps=false 14 | flags/anisotropic=false 15 | flags/srgb=2 16 | process/fix_alpha_border=true 17 | process/premult_alpha=true 18 | stream=false 19 | size_limit=0 20 | detect_3d=true 21 | -------------------------------------------------------------------------------- /project.godot: -------------------------------------------------------------------------------- 1 | config_version=3 2 | res=false 3 | 4 | [application] 5 | 6 | name="pixel_water" 7 | icon="res://icon.png" 8 | 9 | [display] 10 | 11 | window/width=0 12 | 13 | [memory] 14 | 15 | multithread/thread_rid_pool_prealloc=60 16 | 17 | [render] 18 | 19 | =false 20 | -------------------------------------------------------------------------------- /sand-ripples.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/sand-ripples.jpg-b650e1c41fd33eb6f0d19f28026e8411.stex" 6 | 7 | [params] 8 | 9 | compress/mode=0 10 | compress/lossy_quality=0.7 11 | flags/repeat=0 12 | flags/filter=true 13 | flags/mipmaps=false 14 | flags/anisotropic=false 15 | flags/srgb=2 16 | process/fix_alpha_border=true 17 | process/premult_alpha=true 18 | stream=false 19 | size_limit=0 20 | detect_3d=true 21 | -------------------------------------------------------------------------------- /sand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jedStevens/water2D/52e0efb426fc2ef5db4f704da946610e4bc4923e/sand.png -------------------------------------------------------------------------------- /sand.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/sand.png-d9d9776527d00f72b59fbb5ce17778aa.stex" 6 | 7 | [params] 8 | 9 | compress/mode=0 10 | compress/lossy_quality=0.7 11 | flags/repeat=0 12 | flags/filter=true 13 | flags/mipmaps=false 14 | flags/anisotropic=false 15 | flags/srgb=2 16 | process/fix_alpha_border=true 17 | process/premult_alpha=true 18 | stream=false 19 | size_limit=0 20 | detect_3d=true 21 | -------------------------------------------------------------------------------- /scene_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jedStevens/water2D/52e0efb426fc2ef5db4f704da946610e4bc4923e/scene_bg.png -------------------------------------------------------------------------------- /scene_bg.png.flags: -------------------------------------------------------------------------------- 1 | repeat=true 2 | -------------------------------------------------------------------------------- /scene_bg.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/scene_bg.png-2638f046cd4595477e9d6764e69a356d.stex" 6 | 7 | [params] 8 | 9 | compress/mode=0 10 | compress/lossy_quality=0.7 11 | flags/repeat=0 12 | flags/filter=true 13 | flags/mipmaps=false 14 | flags/anisotropic=false 15 | flags/srgb=2 16 | process/fix_alpha_border=true 17 | process/premult_alpha=true 18 | stream=false 19 | size_limit=0 20 | detect_3d=true 21 | -------------------------------------------------------------------------------- /scene_src.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jedStevens/water2D/52e0efb426fc2ef5db4f704da946610e4bc4923e/scene_src.png -------------------------------------------------------------------------------- /scene_src.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/scene_src.png-bafb77b032b8ff8804d3fb8fcaa0916b.stex" 6 | 7 | [params] 8 | 9 | compress/mode=0 10 | compress/lossy_quality=0.7 11 | flags/repeat=0 12 | flags/filter=true 13 | flags/mipmaps=false 14 | flags/anisotropic=false 15 | flags/srgb=2 16 | process/fix_alpha_border=true 17 | process/premult_alpha=true 18 | stream=false 19 | size_limit=0 20 | detect_3d=true 21 | -------------------------------------------------------------------------------- /water_material.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="CanvasItemMaterial" load_steps=4 format=1] 2 | 3 | [ext_resource path="res://displacement.png" type="Texture" id=1] 4 | [ext_resource path="res://displace_2.tres.tex" type="Texture" id=2] 5 | 6 | [sub_resource type="CanvasItemShader" id=1] 7 | 8 | _code = { 9 | "fragment": "uniform float height = 1; 10 | 11 | uniform texture displace_1; 12 | uniform float speed_1 = 1; 13 | uniform float displace_factor_1 = 0.01; 14 | 15 | uniform texture displace_2; 16 | uniform float speed_2 = 1; 17 | uniform float displace_factor_2 = 0.01; 18 | 19 | vec2 offset_1 = vec2(TIME * speed_1,0); 20 | vec2 d_1 = tex(displace_1, UV + offset_1).rg; 21 | 22 | vec2 offset_2 = vec2(TIME * speed_2,0); 23 | vec2 d_2 = tex(displace_2, UV + offset_2).rg; 24 | 25 | vec2 r_uv = vec2(SCREEN_UV.x, SCREEN_UV.y + UV.y*height) + (d_1 * displace_factor_1 - d_2 * displace_factor_2); 26 | 27 | vec3 r_col = texscreen(r_uv); 28 | 29 | COLOR.rgb = vec3(0,0,0); 30 | 31 | COLOR.rgb += r_col + vec3(d_1 * d_2, 0) * 0.1 - vec3(0.4,0.2,0.1) * (1-UV.y + 0.1); 32 | COLOR.rgb += vec3(0.3,0.2,0.1) * (1 - dot(d_1, d_2)); 33 | 34 | COLOR.a = 1 - (UV.y*UV.y);", 35 | "fragment_ofs": 0, 36 | "light": "", 37 | "light_ofs": 0, 38 | "vertex": "", 39 | "vertex_ofs": 0 40 | } 41 | 42 | [resource] 43 | 44 | shader/shader = SubResource( 1 ) 45 | shader/shading_mode = 0 46 | shader_param/height = 1.0 47 | shader_param/displace_1 = ExtResource( 1 ) 48 | shader_param/speed_1 = -0.01 49 | shader_param/displace_factor_1 = 0.03 50 | shader_param/displace_2 = ExtResource( 2 ) 51 | shader_param/speed_2 = 0.04 52 | shader_param/displace_factor_2 = 0.01 53 | 54 | --------------------------------------------------------------------------------