TwitchPlaysReverseJenga/addons/water_shader/shaders/bottom.gdshader

40 lines
986 B
Text
Raw Normal View History

shader_type spatial;
uniform float height_scale = 50.0;
uniform float uv_scale = 400.0;
uniform float texture_scale = 20.0;
uniform sampler2D stone_texture;
uniform sampler2D bottom;
varying vec2 uv;
varying float height;
void vertex()
{
uv = VERTEX.xz / uv_scale;
height = texture(bottom, uv).x * height_scale;
VERTEX.y += height;
vec2 e = vec2(0.01, 0.0);
vec3 normal = normalize(vec3(
texture(bottom, uv - e).x * height_scale - texture(bottom, uv + e).x * height_scale,
2.0 * e.x,
texture(bottom, uv - e.yx).x * height_scale - texture(bottom, uv + e.yx).x * height_scale
));
NORMAL = normal;
}
float normalize_float(float value, float min_v, float max_v) {
float clamped_value = clamp(value, min_v, max_v);
return (clamped_value - min_v) / (max_v - min_v);
}
void fragment() {
float greens = normalize_float(height, 30.0, 60.0);
ALBEDO.rgb = texture(stone_texture, uv * texture_scale).rgb * vec3(0.2, greens, 0.0);
METALLIC = .5;
ROUGHNESS = .7;
}