// ----- 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 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); }