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
|
#version 330
#pragma optionNV (unroll 1)
#define show_vec
#define SEG 32
#define R .8
#define I .5
#define n 100.
#define PI 3.1415
in vec2 UVo;
uniform float time;
uniform int OPTIONS;
out vec4 fragColor;
vec3 tuljava (vec3 pz) {
float dr = 2. * PI / float(SEG);
vec3 sum = vec3(0);
for (int i = 0; i < SEG; i++){
float theta = dr * float(i);
// jebi se, zakaj neza? pisat ?ita linearno >:(
vec3 dl = vec3(0,cos(theta),-sin(theta))*dr*R;
vec3 r = vec3(0,sin(theta),cos(theta))*R;
r+=pz;
sum+=cross(dl,r)/(length(r)*length(r)*length(r));
}
sum *= 1e-6;
return sum;
}
void main () {
vec2 uv = UVo;
vec3 poz = vec3(uv*2.,sin(time/10.)*R);
vec3 offset = vec3(R/2.,0,0);
vec3 rez = tuljava(poz+offset)*n*I +
tuljava(poz-offset)*n*I;
rez *= 1000.;
#ifdef show_vec
fragColor = vec4(rez, 1);
#else
fragColor = vec4(vec3(length(rez)), 1);
#endif
}
/*
uniform float time;
uform int OPTIONS;
//uniform mat2 bounds;
out vec4 frag_colour;
void main() {
vec2 UV = UVo;
float scale = 1.1;
vec2 complex=UV*scale;
vec2 ot=vec2(0);
int tmpy=OPTIONS;
for (int x = 0; x < 16; x++){
ot=vec2(complex.x*ot.x-complex.y*ot.y,complex.x*ot.y+complex.y*ot.x);
int swch = tmpy & 1;
ot+=complex * (swch*2-1);
tmpy>>=1;
}
frag_colour = vec4(vec3(smoothstep(.05,0,length(ot))), 1.);
}
*/
|