water-shader/Shaders/SinFoam.gdshader

27 lines
757 B
Plaintext

shader_type canvas_item;
uniform float foamHeight = 0.2;
uniform float speed = 1.0;
uniform sampler2D foamTex;
uniform float amplitude = 0.2;
uniform float frequency = 1.0;
uniform int waveCount = 5;
uniform float amplitudeScaleFactor = 0.82;
uniform float frequencyScaleFactor = 1.18;
uniform float dirs[40];
uniform sampler2D tex;
void fragment() {
float amp = 1.0;
float freq = 1.0;
float offset = 0.0;
float x = (FRAGCOORD.x * 50.0) - 25.0;
float y = (FRAGCOORD.y * 50.0) - 25.0;
for (int i = 0; i < waveCount; i++){
offset += amplitude * amp * pow(E, sin(frequency * freq * (speed * TIME + (dirs[2 * i] * x) + (dirs[2 * i + 1] * y))));
amp *= amplitudeScaleFactor;
freq *= frequencyScaleFactor;
}
COLOR = vec4(1.0, 1.0, 1.0, offset);
}