25#define STRINGIFY(A) #A
31 uniform vec2 resolution;
34 vec2 iResolution = resolution;
35 float iGlobalTime = CC_Time[1];
38 vec4 iMouse = vec4(0,0,0,0);
44 vec4 a = dot(i, vec3(1., 57., 21.)) + vec4(0., 57., 21., 78.);
45 vec3 f = cos((p-i)*acos(-1.))*(-.5)+.5;
46 a = mix(sin(cos(a)*a),sin(cos(1.+a)*(1.+a)), f.x);
47 a.xy = mix(a.xz, a.yw, f.y);
48 return mix(a.x, a.y, f.z);
51 float sphere(vec3 p, vec4 spr)
53 return length(spr.xyz-p) - spr.w;
58 float d = sphere(p*vec3(1.,.5,1.), vec4(.0,-1.,.0,1.));
59 return d + (noise(p+vec3(.0,iGlobalTime*2.,.0)) + noise(p*3.)*.5)*.25*(p.y) ;
64 return min(100.-length(p) , abs(flame(p)) );
67 vec4 raymarch(vec3 org, vec3 dir)
75 for(
int i=0; i<64; i++)
92 vec2 v = -1.0 + (2.0 * gl_FragCoord.xy)/ iResolution.xy;
94 v.x *= iResolution.x/iResolution.y;
96 vec3 org = vec3(0., -2., 4.);
97 vec3 dir = normalize(vec3(v.x*1.6, -v.y, -1.5));
99 vec4 p = raymarch(org, dir);
102 vec4 col = mix(vec4(1.,.5,.1,1.), vec4(0.1,.5,1.,1.), p.y*.02+.4);
104 gl_FragColor = mix(vec4(0.), col, pow(glow*2.,4.));
120 uniform vec2 resolution;
122 vec2 iCenter = center;
123 vec2 iResolution = resolution;
124 float iGlobalTime = CC_Time[1];
127 vec4 iMouse = vec4(0,0,0,0);
135 float formuparam = 0.53;
138 float stepsize = 0.1;
144 float brightness = 0.0015;
145 float darkmatter = 0.300;
146 float distfading = 0.730;
147 float saturation = 0.850;
154 vec2 uv=gl_FragCoord.xy/iResolution.xy -.5;
157 uv.y*=iResolution.y/iResolution.x;
161 vec3 dir=vec3(uv*zoom,1.);
162 float time=iGlobalTime*speed+.25;
165 float a1=.5+iMouse.x/iResolution.x*2.;
166 float a2=.8+iMouse.y/iResolution.y*2.;
167 mat2 rot1=mat2(cos(a1),sin(a1),-sin(a1),cos(a1));
168 mat2 rot2=mat2(cos(a2),sin(a2),-sin(a2),cos(a2));
171 vec3 from=vec3(1.,.5,0.5);
172 from+=vec3(time*2.,time,-2.);
180 for (
int r=0; r<volsteps; r++) {
181 vec3 p=from+s*dir*.5;
182 p = abs(vec3(tile)-mod(p,vec3(tile*2.)));
186 for (
int i=0; i<iterations; i++) {
187 p=abs(p)/dot(p,p)-formuparam;
188 a+=abs(length(p)-pa);
191 float dm=max(0.,darkmatter-a*a*.001);
193 if (r>6) fade*=1.-dm;
196 v+=vec3(s,s*s,s*s*s*s)*a*brightness*fade;
200 v=mix(vec3(length(v)),v,saturation);
201 gl_FragColor = vec4(v*.01,1.);
211uniform vec2 resolution;
213vec2 iCenter = center;
214vec2 iResolution = resolution;
215float iGlobalTime = CC_Time[1];
219vec4 iMouse = vec4(0,0,0,0);
238float time = iGlobalTime;
240vec2 rotate(vec2 p,
float a)
242 return vec2(p.x * cos(a) - p.y * sin(a), p.x * sin(a) + p.y * cos(a));
244 float box(vec2 p, vec2 b,
float r)
246 return length(max(abs(p) - b, 0.0)) - r;
250vec3 intersect(in vec3 o, in vec3 d, vec3 c, vec3 u, vec3 v)
256 dot(cross(v, q), d)) / dot(cross(v, u), d);
262 return fract(sin(p * 591.32) * 43758.5357);
267 return fract(sin(dot(p.xy, vec2(12.9898, 78.233))) * 43758.5357);
272 return fract(vec2(sin(p * 591.32), cos(p * 391.32)));
275vec2 rand22(in vec2 p)
277 return fract(vec2(sin(p.x * 591.32 + p.y * 154.077), cos(p.x * 391.32 + p.y * 49.077)));
281float noise11(
float p)
284 return mix(rand11(fl), rand11(fl + 1.0), fract(p));
289 return noise11(p) * 0.5 + noise11(p * 2.0) * 0.25 + noise11(p * 5.0) * 0.125;
294 return vec3(noise11(p), noise11(p + 18.952), noise11(p - 11.372)) * 2.0 - 1.0;
300 float a = atan(p.x, p.z);
301 float t = time * 0.1;
302 float v = rand11(floor(a * 4.0 + t)) * 0.5 + rand11(floor(a * 8.0 - t)) * 0.25 + rand11(floor(a * 16.0 + t)) * 0.125;
306vec3 voronoi(in vec2 x)
314 for(
int j = -1; j <= 1; j ++)
316 for(
int i = -1; i <= 1; i ++)
318 vec2 g = vec2(
float(i),
float(j));
319 vec2 o = rand22(n + g);
322 float d = max(abs(r.x), abs(r.y));
325 {md2 = md; md = d; mr = r; mg = g;}
330 return vec3(n + mg, md2 - md);
336 return vec2(sin((a) * 6.28318531 / 100.0), cos((a) * 6.28318531 / 100.0));
351 pp = rotate(p, time * 3.0);
352 c = max(dot(pp, normalize(vec2(-0.2, 0.5))), -dot(pp, normalize(vec2(0.2, 0.5))));
353 c = min(c, max(dot(pp, normalize(vec2(0.5, -0.5))), -dot(pp, normalize(vec2(0.2, -0.5)))));
354 c = min(c, max(dot(pp, normalize(vec2(0.3, 0.5))), -dot(pp, normalize(vec2(0.2, 0.5)))));
357 v = abs(l - 0.5) - 0.03;
359 v = min(v, abs(l - 0.54) - 0.02);
360 v = min(v, abs(l - 0.64) - 0.05);
362 pp = rotate(p, time * -1.333);
363 c = max(dot(pp, A2V(-5.0)), -dot(pp, A2V(5.0)));
364 c = min(c, max(dot(pp, A2V(25.0 - 5.0)), -dot(pp, A2V(25.0 + 5.0))));
365 c = min(c, max(dot(pp, A2V(50.0 - 5.0)), -dot(pp, A2V(50.0 + 5.0))));
366 c = min(c, max(dot(pp, A2V(75.0 - 5.0)), -dot(pp, A2V(75.0 + 5.0))));
368 w = abs(l - 0.83) - 0.09;
369 v = min(v, max(w, c));
376 float v = 1.0 - smoothstep(0.0, mix(0.012, 0.2, 0.0), d);
377 float g = exp(d * -20.0);
383 vec2 uv = gl_FragCoord.xy / iResolution.xy;
385 uv.x *= iResolution.x / iResolution.y;
390 vec3 ro = 0.7 * vec3(cos(0.2 * time), 0.0, sin(0.2 * time));
391 ro.y = cos(0.6 * time) * 0.3 + 0.65;
393 vec3 ta = vec3(0.0, 0.2, 0.0);
396 float shake = clamp(3.0 * (1.0 - length(ro.yz)), 0.3, 1.0);
397 float st = mod(time, 10.0) * 143.0;
400 vec3 ww = normalize(ta - ro + noise31(st) * shake * 0.01);
401 vec3 uu = normalize(cross(ww, normalize(vec3(0.0, 1.0, 0.2 * sin(time)))));
402 vec3 vv = normalize(cross(uu, ww));
404 vec3 rd = normalize(uv.x * uu + uv.y * vv + 1.0 * ww);
407 ro += noise31(-st) * shake * 0.015;
413 float sd = dot(rd, vec3(0.0, 1.0, 0.0));
414 inten = pow(1.0 - abs(sd), 20.0) + pow(sky(rd), 5.0) * step(0.0, rd.y) * 0.2;
421 for(
int i = 0; i < 4; i ++)
423 float layer = float(i);
424 its = intersect(ro, rd, vec3(0.0, -5.0 - layer * 5.0, 0.0), vec3(1.0, 0.0, 0.0), vec3(0.0, 0.0, 1.0));
427 vec3 vo = voronoi((its.yz) * 0.05 + 8.0 * rand21(
float(i)));
428 v = exp(-100.0 * (vo.z - 0.02));
436 float fxi = cos(vo.x * 0.2 + time * 1.5);
437 fx = clamp(smoothstep(0.9, 1.0, fxi), 0.0, 0.9) * 1.0 * rand12(vo.xy);
438 fx *= exp(-3.0 * vo.z) * 2.0;
440 inten += v * 0.1 + fx;
445 float gatex = floor(ro.x / 8.0 + 0.5) * 8.0 + 4.0;
447 for(
int i = 0; i < 4; i ++)
449 its = intersect(ro, rd, vec3(gatex + go, 0.0, 0.0), vec3(0.0, 1.0, 0.0), vec3(0.0, 0.0, 1.0));
450 if(dot(its.yz, its.yz) < 2.0 && its.x > 0.0)
460 for(
int j = 0; j < 20; j ++)
464 vec3 bp = vec3(0.0, (rand11(
id) * 2.0 - 1.0) * 0.25, 0.0);
465 vec3 its = intersect(ro, rd, bp, vec3(1.0, 0.0, 0.0), vec3(0.0, 0.0, 1.0));
470 float spd = (1.0 + rand11(
id) * 3.0) * 2.5;
472 pp += (rand21(
id) * 2.0 - 1.0) * vec2(0.3, 1.0);
473 float rep = rand11(
id) + 1.5;
474 pp.y = mod(pp.y, rep * 2.0) - rep;
475 float d = box(pp, vec2(0.02, 0.3), 0.1);
477 float v = 1.0 - smoothstep(0.0, 0.03, abs(d) - 0.001);
478 float g = min(exp(d * -20.0), 2.0);
480 inten += (v + g * 0.7) * 0.5;
485 inten *= 0.4 + (sin(time) * 0.5 + 0.5) * 0.6;
489 vec3 col = pow(vec3(inten), vec3(2.0, 0.15, 9.0));
491 vec3 col = pow(vec3(inten), 1.5 * vec3(0.15, 2.0, 9.0));
494 gl_FragColor = vec4(col, 1.0);
int main(int argc, char *argv[])
static const char * starNestFrg
static const char * starFlame
static const char * shadertoyRelentlessFrag