aboutsummaryrefslogtreecommitdiff
path: root/resources/shaders/julia.frag
blob: 12d923b7a87cf05a1d16285553a1685a46cf10ad (plain)
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
// ----- Vertex Shader -----
#version 410 core

layout(location = 0) in vec3 position;
uniform mat4 projection;
uniform mat4 model;

void main(){
  gl_Position =  projection * model * vec4(position,1);
}

// ----- Fragment Shader -----

#version 410 core

uniform vec2 resolution;
uniform float time;

out vec3 color;

#define ACCURACY 1000
#define LIMIT 1000

vec2 cmult(vec2 z1,vec2 z2){
	return(vec2(z1.x*z2.x-z1.y*z2.y,z1.x*z2.y+z1.y*z2.x));
}

vec2 IsDiverging(vec2 coord){
	vec2 z=vec2(coord.x,coord.y);
	int i;
	for(i=0;i<ACCURACY;i++){
		z=cmult(z,z)+vec2(-0.3,0.5);
		if(length(z) > LIMIT)
			break;
				
	}
	return(z);
}


void main()
{
	vec2 coord=gl_FragCoord.xy/resolution.xy;
	coord-=0.5;
	coord/=(time/10);
	float d=length(IsDiverging(coord));
	color=vec3(LIMIT/(d*2),0,0);
}