class SLITSCAN extends Shader { int[] fx; int[] fy; float[] phx; float[] phy; int[] sx, sy; boolean[] skipfx; boolean[] skipfy; boolean dox, doy; PImage buffer; float[][] ft = new float[2][32]; int depth; // number of octaves int fxnum; int fynum; SLITSCAN() { name = "fxSlitSscan"; buffer = createImage(renderer.width, renderer.height, ARGB); for (int i=0; i<32; i++) { ft[0][i] = pow(2.0, i); ft[1][i] = 0.5*1.0/ft[0][i]; } } void animate() { buffer.resize(renderer.width, renderer.height); buffer = renderer.get(0, 0, renderer.width, renderer.height); int s = buffer.width>buffer.height?buffer.height:buffer.width; depth = (int)(log(s)/log(2)); fxnum = (int)random(depth); fynum = (int)random(depth); fx = new int[fxnum+1]; fy = new int[fynum+1]; sx = new int[fxnum+1]; sy = new int[fynum+1]; phx = new float[fxnum+1]; phy = new float[fynum+1]; skipfx = new boolean[fxnum+1]; skipfy = new boolean[fynum+1]; for (int i=0; ibuffer.height?buffer.height:buffer.width; // depth = (int)(log(s)/log(2)); // fxnum = (int)map(knobZero, 0, 255, 0, depth); // fynum = (int)map(knobOne, 0, 255, 0, depth); // fx = new int[fxnum+1]; // fy = new int[fynum+1]; // sx = new int[fxnum+1]; // sy = new int[fynum+1]; // // phx = new float[fxnum+1]; // phy = new float[fynum+1]; // // skipfx = new boolean[fxnum+1]; // skipfy = new boolean[fynum+1]; // // // for (int i=0; i