57 lines
1.6 KiB
Plaintext
57 lines
1.6 KiB
Plaintext
[gd_resource type="ShaderMaterial" load_steps=3 format=3 uid="uid://bv06fr71bp0mr"]
|
|
|
|
[sub_resource type="Shader" id="Shader_n7650"]
|
|
code = "shader_type canvas_item;
|
|
render_mode world_vertex_coords;
|
|
|
|
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;
|
|
|
|
varying float yOffset;
|
|
|
|
float calcHeight(float x, float y){
|
|
float amp = 1.0;
|
|
float freq = 1.0;
|
|
float offset = 0.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;
|
|
}
|
|
return offset;
|
|
}
|
|
|
|
void vertex() {
|
|
yOffset = VERTEX.y;
|
|
VERTEX.y += calcHeight(VERTEX.x, VERTEX.y);
|
|
yOffset += VERTEX.y;
|
|
}
|
|
|
|
void fragment() {
|
|
COLOR = vec4(1.0, 1.0, 1.0, 0.5);
|
|
}
|
|
"
|
|
|
|
[sub_resource type="CanvasTexture" id="CanvasTexture_n7650"]
|
|
|
|
[resource]
|
|
resource_local_to_scene = true
|
|
shader = SubResource("Shader_n7650")
|
|
shader_parameter/foamHeight = 0.2
|
|
shader_parameter/speed = 1.0
|
|
shader_parameter/amplitude = 0.2
|
|
shader_parameter/frequency = 1.0
|
|
shader_parameter/waveCount = 5
|
|
shader_parameter/amplitudeScaleFactor = 0.82
|
|
shader_parameter/frequencyScaleFactor = 1.18
|
|
shader_parameter/dirs = PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
|
shader_parameter/tex = SubResource("CanvasTexture_n7650")
|