mirror of
				https://github.com/Ryujinx/Opentk.git
				synced 2025-10-30 05:07:26 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
| #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
 | |
| } |