godot-puzzle/ground.gdshader

24 lines
739 B
Text

shader_type spatial;
uniform vec2 dims;
uniform vec3 light_color : source_color;
uniform vec3 dark_color : source_color;
// uniform float line_width : hint_range(0.0, 0.1, 0.001);
uniform sampler2D NOISE_PATTERN;
uniform float noise_strength : hint_range(0, 1.0, 0.01);
vec3 albedo(vec2 pos) {
vec2 noise_pos = pos*vec2(textureSize(NOISE_PATTERN,1))/dims;
vec3 noise = noise_strength*(texture(NOISE_PATTERN, noise_pos).rgb - vec3(0.5));
if (round(mod(pos.x/2.0+noise.r, 1.0)) == round(mod(pos.y/2.0+noise.g, 1.0))) {
return dark_color;
} else {
return light_color;
}
}
void fragment() {
vec2 p = UV*dims;
ALBEDO = (albedo(p-vec2(0.01, 0.0))+albedo(p+vec2(0.01,0.0))+albedo(p-vec2(0.0, 0.01))+albedo(p+vec2(0.0,0.01)))/4.0;
}