1
- // Processed by 'GLSL Shader Shrinker' (Shrunk by 681 characters)
1
+ // Processed by 'GLSL Shader Shrinker' (Shrunk by 866 characters)
2
2
// (https://github.com/deanthecoder/GLSLShaderShrinker)
3
3
4
4
#define v3 vec3
5
5
#define v2 vec2
6
6
#define S smoothstep
7
7
#define RET return
8
8
#define N normalize
9
- #define F float
9
+ #define _f float
10
10
#define R iResolution
11
11
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 ); }
13
13
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 ; }
15
42
16
- float x (v3 p) {
43
+ float G (v3 p) {
17
44
if (p.y > 0 .) RET 1e10 ;
18
- F h = v (p.xz * .2 );
45
+ _f h = E (p.xz * .2 );
19
46
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);
24
51
h -= .7 ;
25
52
RET abs (p.y - h) * .6 ;
26
53
}
27
54
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 );
32
59
}
33
60
34
- vec3 c (v3 p) {
61
+ vec3 g (v3 p) {
35
62
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);
37
64
}
38
65
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 );
43
70
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 .);
47
74
}
48
75
RET S(0 ., 1 ., s);
49
76
}
50
77
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);
60
87
if (abs (h.x) < .004 * d) {
61
- k = h.y;
88
+ w = h.y;
62
89
break ;
63
90
}
64
91
65
92
if (d > 5 .) break ;
66
93
d += h.x;
67
94
}
68
95
69
- if (k < .5 ) b = v3(stars(z ));
96
+ if (w < .5 ) l = v3(I(K ));
70
97
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 ;
77
104
}
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 .);
79
106
}
80
107
81
- j = vec4 (pow (b , v3(.4545 )), 1 );
108
+ r = vec4 (pow (l , v3(.4545 )), 1 );
82
109
}
0 commit comments