int gridsize = 4; int gridx; int gridy; int[] gridu; int[] gridv; void setup() { size(320,240); gridx = (320 / gridsize) + 1; gridy = (240 / gridsize) + 1; gridu = new int[ gridx * gridy ]; gridv = new int[ gridx * gridy ]; } void draw(){ loadPixels(); // raytrace float m = millis(); for (int y = 0; y 0.0f) { float t1 = (-_b + sqrt(ds))/(2*_a); float t2 = (-_b - sqrt(ds))/(2*_a); float t = min( t1, t2 ); float ix = ox + t * dx; float iy = oy + t * dy; float iz = oz + t * dz; gridu[x+y*gridx] = ((int)(iz / r * 40)); gridv[x+y*gridx] = ((int)(atan(iy/ix) / 3.14 * 127)); } } } // rasterize for (int y = 0; y> 8) ^ (v >> 8)) & 0xFF, 0, 0 ); u += ustep; v += vstep; } ul += ulstep; vl += vlstep; ur += ulstep; vr += vlstep; } } } updatePixels(); }