Blame | Last modification | View Log | RSS feed
#version 120// www.OpenTK.net GLSL Julia Set (c) 2008 Christoph Brandtneruniform sampler1D COLORTABLE;uniform float CETX;uniform float CETY;uniform float SCALINGX;uniform float SCALINGY;uniform float OFFSETX;uniform float OFFSETY;const int MAXIterations = 32; // *must* be > 0void main(void){float XPos = gl_FragCoord.x / SCALINGX - OFFSETX;float YPos = gl_FragCoord.y / SCALINGY - OFFSETY;float XQuad = pow( XPos, 2.0 );float YQuad = pow( YPos, 2.0 );int TableIndex = -1;int LoopCount = 0;while ( LoopCount <= MAXIterations ){YPos = 2.0 * XPos * YPos + CETY;XPos = XQuad - YQuad + CETX;XQuad = pow( XPos, 2.0 );YQuad = pow( YPos, 2.0 );TableIndex++;if ( (XQuad + YQuad) > 4.0 ){if (TableIndex == 0)discard;LoopCount = MAXIterations;}LoopCount++;}float FinalTableIndex = float( TableIndex ) / float( MAXIterations );gl_FragColor = texture1D( COLORTABLE, FinalTableIndex ); // lookup texture for output// gl_FragColor.rgb = vec3( FinalTableIndex ); // Debug: output greyscale}