44 lines
1.1 KiB
Plaintext
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;
|
|
} |