#version 400 //the following uniform values are set by Visions of Chaos prior to shader execution uniform vec2 resolution; uniform vec3 palette[256]; uniform double xmin; uniform double xmax; uniform double ymin; uniform double ymax; uniform double bailout; uniform int maxiters; uniform int samplepixels; double sqrsamplepixels=double(samplepixels*samplepixels); double bailout_squared=double(bailout*bailout); double magnitude=0.0,r1,r2,g1,g2,b1,b2,tweenval; float realiters; vec4 finalcol,col; int superx,supery; double stepx=(xmax-xmin)/resolution.x/double(samplepixels); double stepy=(ymax-ymin)/resolution.y/double(samplepixels); int index,colval,colval2; dvec2 z,c; double trapsize,sxmin,sxmax,symin,symax,trapdist,trapx,trapy,distpercentage; bool trapped; void main(void) { //center of trap trapx=0; trapy=0.5; //square trap sizes trapsize=0.4; sxmin=trapx-trapsize; sxmax=trapx+trapsize; symin=trapy-trapsize; symax=trapy+trapsize; finalcol=vec4(0,0,0,0); for (supery=0;superybailout_squared) break; z.x = x; z.y = y; //squares orbit traps if ((z.x>sxmin) && (z.xsymin) && (z.y