Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- shader_type canvas_item;
- float noise(vec2 x, sampler2D tex) {
- return texture(tex, x * 0.01).x;
- }
- float fbm(vec2 p, float time, sampler2D tex)
- {
- vec4 tt=fract(vec4(time*0.15)+vec4(0.0,0.25,0.5,0.75));
- vec2 p1=p-normalize(p)*tt.x;
- vec2 p2=vec2(1.0)+p-normalize(p)*tt.y;
- vec2 p3=vec2(2.0)+p-normalize(p)*tt.z;
- vec2 p4=vec2(3.0)+p-normalize(p)*tt.w;
- vec4 tr=vec4(1.0)-abs(tt-vec4(0.5))*2.0;//*vec4(0.0,1.0,0.0,1.0);
- float z=2.0;
- vec4 rz = vec4(0.0);
- //for (float i= 1.0;i < 4.0;i++)
- //{
- rz+= abs((vec4(noise(p1, tex),noise(p2, tex),noise(p3, tex),noise(p4, tex))-vec4(0.5))*2.0)/z;
- z = z*2.0;
- p1 = p1*2.0;
- p2 = p2*2.0;
- p3 = p3*2.0;
- p4 = p4*2.0;
- //}
- return dot(rz,tr)*0.25;
- }
- float dualfbm(vec2 p, float time, sampler2D tex)
- {
- //get two rotated fbm calls and displace the domain
- vec2 p2 = p*0.7;
- vec2 basis = vec2(fbm(p2-vec2(time*0.15*1.6, time*0.15*1.6), time, tex),fbm(p2+vec2(time*0.15*1.7, time*0.15*1.7), time, tex));
- basis = (basis-vec2(0.5, 0.5))*0.2;
- p += basis;
- //coloring
- return fbm(p, time, tex); //*makem2(time*2.0));
- }
- float circ(vec2 p)
- {
- float r = length(p);
- r = log(sqrt(r));
- return abs(mod(r*2.0,6.2831)-4.54)*3.0+0.5;
- }
- void fragment() {
- //setup system
- vec2 p = UV;
- p -= vec2(1024.0, 600.0) * TEXTURE_PIXEL_SIZE * 0.5;
- p*=2.0;
- float rz = dualfbm(p, TIME, TEXTURE);
- //rings
- //p /= 7.0; //exp(mod(time*10.,3.14159));
- //rz *= pow(abs((0.0-circ(p))),.99);
- rz *= abs((-circ(vec2(p.x / 4.2, p.y / 7.0))));
- rz *= abs((-circ(vec2(p.x / 4.2, p.y / 7.0))));
- rz *= abs((-circ(vec2(p.x / 4.2, p.y / 7.0))));
- //final color
- vec3 col = vec3(.1,0.1,0.4)/rz;
- col=pow(abs(col),vec3(0.99));
- COLOR = vec4(col,1.0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement