35 lines
No EOL
823 B
Text
35 lines
No EOL
823 B
Text
shader_type spatial;
|
|
|
|
vec4 brickTile(vec2 _st, float _zoom, float _time){
|
|
_st *= _zoom;
|
|
float time = _time * 50.0;
|
|
if (fract( _st.y * 0.5) > 0.5){
|
|
_st.x += fract(time);
|
|
} else {
|
|
_st.x -= fract(time);
|
|
|
|
return vec4(fract(_st), floor(_st));
|
|
}
|
|
}
|
|
|
|
float box(vec2 _st, vec2 _size){
|
|
_size = vec2(0.5) - _size * 0.5;
|
|
vec2 uv = smoothstep(_size, _size + vec2(1e-4), _st);
|
|
uv *= smoothstep(_size, _size + vec2(1e-4), vec2(1.0) - _st);
|
|
return uv.x * uv.y;
|
|
}
|
|
|
|
float hash(vec2 p){
|
|
return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453);
|
|
}
|
|
|
|
void fragment() {
|
|
vec4 tile = brickTile(UV, 10.0, TIME);
|
|
vec2 st = tile.xy;
|
|
vec2 id = tile.zw;
|
|
|
|
vec3 brickColor = vec3(0.1, 0.1, 0.3);
|
|
float mask = box(st, vec2(0.2));
|
|
|
|
ALBEDO = brickColor * mask;
|
|
} |