sokoban
Diffstat (limited to 'swayshader.tres')
-rw-r--r--swayshader.tres58
1 files changed, 58 insertions, 0 deletions
diff --git a/swayshader.tres b/swayshader.tres
new file mode 100644
index 0000000..7ad80e1
--- /dev/null
+++ b/swayshader.tres
@@ -0,0 +1,58 @@
+[gd_resource type="ShaderMaterial" load_steps=2 format=2]
+
+[sub_resource type="Shader" id=1]
+code = "// original wind shader from https://github.com/Maujoe/godot-simple-wind-shader-2d/tree/master/assets/maujoe.simple_wind_shader_2d
+// original script modified by HungryProton so that the assets are moving differently : https://pastebin.com/VL3AfV8D
+//
+// speed - The speed of the wind movement.
+// minStrength - The minimal strength of the wind movement.
+// maxStrength - The maximal strength of the wind movement.
+// strengthScale - Scalefactor for the wind strength.
+// interval - The time between minimal and maximal strength changes.
+// detail - The detail (number of waves) of the wind movement.
+// distortion - The strength of geometry distortion.
+// heightOffset - The height where the wind begins to move. By default 0.0.
+
+shader_type canvas_item;
+render_mode blend_mix;
+
+// Wind settings.
+uniform float speed = 1.0;
+uniform float minStrength : hint_range(0.0, 1.0) = 0.05;
+uniform float maxStrength : hint_range(0.0, 1.0) = 0.01;
+uniform float strengthScale = 100.0;
+uniform float interval = 3.5;
+uniform float detail = 1.0;
+uniform float distortion : hint_range(0.0, 1.0);
+uniform float heightOffset : hint_range(0.0, 1.0);
+
+// With the offset value, you can if you want different moves for each asset. Just put a random value (1, 2, 3) in the editor. Don't forget to mark the material as unique if you use this
+uniform float offset = 0;
+
+
+float getWind(vec2 vertex, vec2 uv, float time){
+ float diff = pow(maxStrength - minStrength, 2.0);
+ float strength = clamp(minStrength + diff + sin(time / interval) * diff, minStrength, maxStrength) * strengthScale;
+ float wind = (sin(time) + cos(time * detail)) * strength * max(0.0, (1.0-uv.y) - heightOffset);
+
+ return wind;
+}
+
+void vertex() {
+ vec4 pos = WORLD_MATRIX * vec4(0.0, 0.0, 0.0, 1.0);
+ float time = TIME * speed + offset;
+ //float time = TIME * speed + pos.x * pos.y ; not working when moving...
+ VERTEX.x += getWind(VERTEX.xy, UV, time);
+}"
+
+[resource]
+shader = SubResource( 1 )
+shader_param/speed = 1.0
+shader_param/minStrength = 0.206
+shader_param/maxStrength = 0.01
+shader_param/strengthScale = 100.0
+shader_param/interval = 5.0
+shader_param/detail = 0.5
+shader_param/distortion = 0.0
+shader_param/heightOffset = 0.5
+shader_param/offset = 0.0