Files
fps_project_1/levels/waterfall.gdshader
2024-12-09 16:57:35 -06:00

44 lines
1.1 KiB
Plaintext

shader_type spatial;
render_mode blend_mix, specular_toon, cull_disabled;
uniform vec4 light_color;
uniform vec4 dark_color;
uniform sampler2D water_tex;
uniform sampler2D noise_tex;
uniform sampler2D normal_tex;
uniform float displ_amount = 0.02;
uniform float speed = 1.0;
uniform vec2 strength = vec2(0.25, 0.5);
uniform vec2 frequency = vec2(3.0, 2.5);
uniform vec2 time_factor = vec2(5.0,4.0);
float height(vec2 pos, float time){
return (strength.y * sin(pos.y * frequency.y + time * time_factor.y)) + (strength.x * sin(pos.x * frequency.x + time * time_factor.x));
}
void vertex(){
VERTEX.y += height(VERTEX.yz, TIME);
}
void fragment(){
vec2 displ = texture(water_tex, UV - TIME * speed / 8.0).xy;
displ = (displ * 2.0 - 1.0) * displ_amount;
float noise = texture(noise_tex, vec2(UV.x, UV.y / 4.0 - TIME * speed / 4.0) + displ).x;
noise = floor(noise * 4.0) / 4.0;
vec4 col = mix(dark_color, light_color, noise);
vec2 uv_movement = UV;
uv_movement -= vec2(0.0, 1.0) * TIME * speed;
ALBEDO = col.rgb;
NORMAL = texture(normal_tex, uv_movement).rgb;
ROUGHNESS = 0.11;
ALPHA = texture(water_tex, uv_movement).a * 0.75;
}