chore: clean recommit
This commit is contained in:
parent
8024c6ac40
commit
60ad2e7fb1
122 changed files with 23950 additions and 323 deletions
|
|
@ -1,6 +1,11 @@
|
|||
#version 100
|
||||
|
||||
// value reaches scale*scale = 1,000,000, beyond mediump's guaranteed precision
|
||||
#ifdef GL_FRAGMENT_PRECISION_HIGH
|
||||
precision highp float;
|
||||
#else
|
||||
precision mediump float;
|
||||
#endif
|
||||
|
||||
/*************************************************************************************
|
||||
|
||||
|
|
@ -9,13 +14,16 @@ precision mediump float;
|
|||
|
||||
The screen is divided into a square grid of boxes, each representing an integer value
|
||||
Each integer is tested to see if it is a prime number. Primes are colored white
|
||||
Non-primes are colored with a color that indicates the smallest factor which evenly divdes our integer
|
||||
Non-primes are colored with a color that indicates the smallest factor which evenly divides our integer
|
||||
|
||||
You can change the scale variable to make a larger or smaller grid
|
||||
Total number of integers displayed = scale squared, so scale = 100 tests the first 10,000 integers
|
||||
|
||||
WARNING: If you make scale too large, your GPU may bog down!
|
||||
|
||||
NOTE: GLSL ES 100 requires constant loop bounds, so the factor loop runs to the worst
|
||||
case (scale) and breaks out at sqrt(value), matching the glsl330 version
|
||||
|
||||
***************************************************************************************/
|
||||
|
||||
// Input vertex attributes (from vertex shader)
|
||||
|
|
@ -38,23 +46,25 @@ vec4 Colorizer(float counter, float maxSize)
|
|||
void main()
|
||||
{
|
||||
vec4 color = vec4(1.0);
|
||||
float scale = 1000.0; // Makes 100x100 square grid. Change this variable to make a smaller or larger grid
|
||||
float scale = 1000.0; // Makes 100x100 square grid, change this variable to make a smaller or larger grid
|
||||
float value = scale*floor(fragTexCoord.y*scale) + floor(fragTexCoord.x*scale); // Group pixels into boxes representing integer values
|
||||
int valuei = int(value);
|
||||
|
||||
//if ((valuei == 0) || (valuei == 1) || (valuei == 2)) gl_FragColor = vec4(1.0);
|
||||
//else
|
||||
if (value <= 2.0) gl_FragColor = vec4(1.0);
|
||||
else
|
||||
{
|
||||
//for (int i = 2; (i < int(max(2.0, sqrt(value) + 1.0))); i++)
|
||||
// NOTE: On GLSL 100 for loops are restricted and loop condition must be a constant
|
||||
// Tested on RPI, it seems loops are limited around 60 iteractions
|
||||
for (int i = 2; i < 48; i++)
|
||||
float maxFactor = max(2.0, sqrt(value) + 1.0);
|
||||
|
||||
for (int i = 2; i < 1001; i++) // Constant bound = scale (worst-case sqrt(value))
|
||||
{
|
||||
if (float(i) >= maxFactor) break;
|
||||
|
||||
if ((value - float(i)*floor(value/float(i))) <= 0.0)
|
||||
{
|
||||
gl_FragColor = Colorizer(float(i), scale);
|
||||
color = Colorizer(float(i), scale);
|
||||
//break; // Uncomment to color by the largest factor instead
|
||||
}
|
||||
}
|
||||
|
||||
gl_FragColor = color;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue