-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmoreColorful.frag
76 lines (71 loc) · 1.71 KB
/
moreColorful.frag
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#ifdef GL_ES
precision mediump float;
#endif
#define l 120
uniform float u_time;
uniform float u_resolution;
void mainImage(out vec4 FragColor,vec2 FragCoord){
vec2 v = (FragCoord.xy - u_resolution.xy/2.) / min(u_resolution.y,u_resolution.x) * 30.;
vec2 vv = v;// vec2 vvv = v;
float ft = u_time+360.1;
float tm = ft*0.1;
float tm2 = ft*0.3;
vec2 mspt = (vec2(
sin(tm)+cos(tm*0.2)+sin(tm*0.5)+cos(tm*-0.4)+sin(tm*1.3),
cos(tm)+sin(tm*0.1)+cos(tm*0.8)+sin(tm*-1.1)+cos(tm*1.5)
)+1.0)*0.35; //5x harmonics, scale back to [0,1]
float R = 0.0;
float RR = 0.0;
float RRR = 0.0;
float a = (1.-mspt.x)*0.5;
float C = cos(tm2*0.03+a*0.01)*1.1;
float S = sin(tm2*0.033+a*0.23)*1.1;
float C2 = cos(tm2*0.024+a*0.23)*3.1;
float S2 = sin(tm2*0.03+a*0.01)*3.3;
vec2 xa=vec2(C, -S);
vec2 ya=vec2(S, C);
vec2 xa2=vec2(C2, -S2);
vec2 ya2=vec2(S2, C2);
vec2 shift = vec2( 0.033, 0.14);
vec2 shift2 = vec2( -0.023, -0.22);
float Z = 0.4 + mspt.y*0.3;
float m = 0.99+sin(u_time*0.03)*0.003;
for ( int i = 0; i < l; i++ ){
float r = dot(v,v);
float r2 = dot(vv,vv);
if ( r > 1.0 )
{
r = (1.0)/r ;
v.x = v.x * r;
v.y = v.y * r;
}
if ( r2 > 1.0 )
{
r2 = (1.0)/r2 ;
vv.x = vv.x * r2;
vv.y = vv.y * r2;
}
R *= m;
R += r;
R *= m;
R += r2;
if(i < l-1){
RR *= m;
RR += r;
RR *= m;
RR += r2;
if(i < l-2){
RRR *= m;
RRR += r;
RRR *= m;
RRR += r2;
}
}
v = vec2( dot(v, xa), dot(v, ya)) * Z + shift;
vv = vec2( dot(vv, xa2), dot(vv, ya2)) * Z + shift2;
}
float c = ((mod(R,2.0)>1.0)?1.0-fract(R):fract(R));
float cc = ((mod(RR,2.0)>1.0)?1.0-fract(RR):fract(RR));
float ccc = ((mod(RRR,2.0)>1.0)?1.0-fract(RRR):fract(RRR));
FragColor = vec4(ccc, cc, c, 1.0);
}