1- // Processed by 'GLSL Shader Shrinker' (Shrunk by 681 characters)
1+ // Processed by 'GLSL Shader Shrinker' (Shrunk by 866 characters)
22// (https://github.com/deanthecoder/GLSLShaderShrinker)
33
44#define v3 vec3
55#define v2 vec2
66#define S smoothstep
77#define RET return
88#define N normalize
9- #define F float
9+ #define _f float
1010#define R iResolution
1111
12- float v (v2 A ) { RET abs ( 2 . * fbm(A) - 1 . ); }
12+ float u (v2 p ) { RET fract ( sin ( dot (p, v2( 123.45 , 875.43 ))) * 5432.3 ); }
1313
14- float w(v3 p) { RET length (p - v3(0 , -.8 , 2 )) - .7 ; }
14+ float A(v2 p) {
15+ v2 i = floor (p),
16+ f = fract (p);
17+ _f a = u(i),
18+ b = u(i + v2(1 , 0 )),
19+ c = u(i + v2(0 , 1 )),
20+ d = u(i + v2(1 ));
21+ f = f * f * (3 . - 2 . * f);
22+ RET mix (a, b, f.x) + (c - a) * f.y * (1 . - f.x) + (d - b) * f.x * f.y;
23+ }
24+
25+ float q(v2 p) {
26+ _f f = 0 .;
27+ f += .5 * A(p * 1.1 );
28+ f += .22 * A(p * 2.3 );
29+ f += .155 * A(p * 3.9 );
30+ f += .0625 * A(p * 8.4 );
31+ f += .03125 * A(p * 15 .);
32+ RET f;
33+ }
34+
35+ float H(_f v) { RET S(.195 , .1975 , v) * S(.2 , .1975 , v); }
36+
37+ float I(v2 K) { RET H(q(K * 1e2 )); }
38+
39+ float E(v2 L) { RET abs (2 . * q(L) - 1 .); }
40+
41+ float F(v3 p) { RET length (p - v3(0 , -.8 , 2 )) - .7 ; }
1542
16- float x (v3 p) {
43+ float G (v3 p) {
1744 if (p.y > 0 .) RET 1e10 ;
18- F h = v (p.xz * .2 );
45+ _f h = E (p.xz * .2 );
1946 p.xz += v2(1 );
20- h += .5 * v (p.xz * .8 );
21- h += .25 * v (p.xz * 2 .);
22- h += .03 * v (p.xz * 16.1 );
23- h *= .7 * fbm (p.xz);
47+ h += .5 * E (p.xz * .8 );
48+ h += .25 * E (p.xz * 2 .);
49+ h += .03 * E (p.xz * 16.1 );
50+ h *= .7 * q (p.xz);
2451 h -= .7 ;
2552 RET abs (p.y - h) * .6 ;
2653}
2754
28- vec2 q (v3 p) {
29- F f = x (p),
30- g = w (p);
31- RET f < g ? v2(f , 1 ) : v2(g , 2 );
55+ vec2 z (v3 p) {
56+ _f k = G (p),
57+ m = F (p);
58+ RET k < m ? v2(k , 1 ) : v2(m , 2 );
3259}
3360
34- vec3 c (v3 p) {
61+ vec3 g (v3 p) {
3562 const v2 e = v2(1 , - 1 ) * 29e-5 ;
36- RET N(e.xyy * q (p + e.xyy).x + e.yyx * q (p + e.yyx).x + e.yxy * q (p + e.yxy).x + e.xxx * q (p + e.xxx).x);
63+ RET N(e.xyy * z (p + e.xyy).x + e.yyx * z (p + e.yyx).x + e.yxy * z (p + e.yxy).x + e.xxx * z (p + e.xxx).x);
3764}
3865
39- float a (v3 r , v3 m ) {
40- F s = 1 .,
41- d = .1 ;
42- v3 t = N(m - r );
66+ float j (v3 B , v3 x ) {
67+ _f s = 1 .,
68+ d = .1 ;
69+ v3 C = N(x - B );
4370 while (d < 10 . && s > 0 .) {
44- F i = q(r + t * d).x;
45- s = min (s, i / d);
46- d += clamp (i , .2 , 1 .);
71+ _f o = z(B + C * d).x;
72+ s = min (s, o / d);
73+ d += clamp (o , .2 , 1 .);
4774 }
4875 RET S(0 ., 1 ., s);
4976}
5077
51- void mainImage(out vec4 j , v2 l ) {
52- v2 z = (l - .5 * R.xy) / R.y;
53- v3 p, b ,
54- u = N(v3(z , 1 ));
55- F d = .01 ,
56- k = 0 .;
57- for (F steps = 0 .; steps < 80 .; steps++ ) {
58- p = v3(0 , 0 , - 3 ) + u * d;
59- v2 h = q (p);
78+ void mainImage(out vec4 r , v2 t ) {
79+ v2 K = (t - .5 * R.xy) / R.y;
80+ v3 p, l ,
81+ D = N(v3(K , 1 ));
82+ _f d = .01 ,
83+ w = 0 .;
84+ for (_f steps = 0 .; steps < 80 .; steps++ ) {
85+ p = v3(0 , 0 , - 3 ) + D * d;
86+ v2 h = z (p);
6087 if (abs (h.x) < .004 * d) {
61- k = h.y;
88+ w = h.y;
6289 break ;
6390 }
6491
6592 if (d > 5 .) break ;
6693 d += h.x;
6794 }
6895
69- if (k < .5 ) b = v3(stars(z ));
96+ if (w < .5 ) l = v3(I(K ));
7097 else {
71- v3 y = v3(8 . - 16 . * iMouse.x / R.x, 6 . - cos (iTime * .2 ), - 1 . - iMouse.y / 18 .),
72- n = c (p),
73- o = v3(1.82 , 1.8 , 1.78 ) * dot (n, N(y - p));
74- if (k > 1.5 ) {
75- b = mix (mix (mix (v3(.05 , .05 , .8 ), v3(.05 , .25 , .05 ), S(.4 , .52 , fbm (n.xy * 3.1 + v2(iTime * .05 , 0 )))), v3(1 ), S(.8 , .95 , n.y) * S(.1 , .8 , fbm (n.xz * 10 . + v2(iTime * .1 , 0 )))), v3(.3 , .5 , .95 ), S(-.5 , 0 ., n.z));
76- b *= o ;
98+ v3 J = v3(8 . - 16 . * iMouse.x / R.x, 6 . - cos (iTime * .2 ), - 1 . - iMouse.y / 18 .),
99+ n = g (p),
100+ y = v3(1.82 , 1.8 , 1.78 ) * dot (n, N(J - p));
101+ if (w > 1.5 ) {
102+ l = mix (mix (mix (v3(.05 , .05 , .8 ), v3(.05 , .25 , .05 ), S(.4 , .52 , q (n.xy * 3.1 + v2(iTime * .05 , 0 )))), v3(1 ), S(.8 , .95 , n.y) * S(.1 , .8 , q (n.xz * 10 . + v2(iTime * .1 , 0 )))), v3(.3 , .5 , .95 ), S(-.5 , 0 ., n.z));
103+ l *= y ;
77104 }
78- else if (k > .5 ) b = v3(.5 ) * o * pow (a (p, y ), 2 .);
105+ else if (w > .5 ) l = v3(.5 ) * y * pow (j (p, J ), 2 .);
79106 }
80107
81- j = vec4 (pow (b , v3(.4545 )), 1 );
108+ r = vec4 (pow (l , v3(.4545 )), 1 );
82109}
0 commit comments