Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- shader_type canvas_item;
- uniform vec3 color = vec3(1,1,1);
- uniform int OCTAVES = 8;
- float rand(vec2 coord){
- return fract(sin(dot(coord, vec2(56,78))*1000.0)* 1000.0);
- }
- float noise(vec2 coord){
- vec2 i = floor(coord);
- vec2 f = fract(coord);
- float a = rand(i);
- float b = rand(i + vec2(1.0, 0.0));
- float c = rand(i + vec2(0.0, 1.0));
- float d = rand(i + vec2(1.0, 1.0));
- vec2 cubic = f * f * (3.0 - 2.0 * f);
- return mix(a, b, cubic.x) + (c - a) * cubic.y * (1.0 - cubic.x) + (d - b) * cubic.x * cubic.y;
- }
- float fbm(vec2 coord){ //fractal brownian motion
- float value = 0.0;
- float scale = 0.5;
- for(int i = 0; i < OCTAVES; i++){
- value += noise(coord) * scale;
- coord *= 2.0;
- scale *= 0.5;
- }
- return value;
- }
- void fragment(){
- vec2 coord = UV * 30.0;
- vec2 motion = vec2(fbm(coord + vec2(TIME * .5 ,TIME * -0.6)));
- float final = fbm(coord + motion);
- COLOR = vec4(color, final * .3);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement