mirror of
https://github.com/Ryujinx/Opentk.git
synced 2024-12-30 21:45:35 +00:00
41 lines
1.1 KiB
Plaintext
41 lines
1.1 KiB
Plaintext
|
#version 120
|
||
|
// www.OpenTK.net GLSL Julia Set (c) 2008 Christoph Brandtner
|
||
|
|
||
|
uniform 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 > 0
|
||
|
|
||
|
void 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
|
||
|
}
|