123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- class AUECHO extends Shader {
- AUECHO() {
- name = "fxAUecho";
- params.add(new Param("mode", 2, new int[]{RANDOM}));
- params.add(new Param("echo", 0, 255, new int[]{SIN, LINE, RAMPUPDOWN, TAN, COS}));
- params.add(new Param("decay", 0, 255, new int[]{SIN, LINE, RAMPUPDOWN, TAN, COS}));
- }
- /*
- float inc1, inc2;
- void animate() {
- inc1+=.00003;
- inc2+=.04;
- params.get(1).setValue((sin(inc1)+1)/4);
- params.get(2).setValue((sin(inc2)+1)/2);
- if (random(1) > .99) {
- for (int i = 0; i < params.size(); i++)
- params.get(i).randomize();
- }
- }
- */
- void apply() {
- renderer.beginDraw();
- if (params.get(0).value == 0) {
- renderer.colorMode(HSB);
- colorMode(HSB);
- } else {
- renderer.colorMode(RGB);
- colorMode(RGB);
- }
- renderer.loadPixels();
- float _delay = map(params.get(1).getValue(params.get(1).value, true), 0, 1, 0.001, 1.0);
- float decay = map(params.get(2).getValue(params.get(2).value, true), 0, 1, 0.0, 1.0);
- int delay = (int)(renderer.pixels.length * _delay);
- color[] history = new color[renderer.pixels.length];
- int blendMode = BLEND;
- for ( int i = 0, l = renderer.pixels.length; i<l; i++) {
- history[i] = renderer.pixels[i];
- }
- for ( int i = 0, l = renderer.pixels.length; i<l; i++) {
- int fromPos = i-delay < 0 ? l-abs(i-delay) : i-delay;
- color fromColor = history[fromPos];
- float r = red(fromColor) * decay;
- float g = green(fromColor) * decay;
- float b = blue(fromColor) * decay;
- color origColor = history[i];
- color toColor = color(
- r = r + red(origColor) > 255 ? r + red(origColor) - 255 : r + red(origColor), // simulate overflow ;)
- g = g + green(origColor) > 255 ? g + green(origColor) - 255 : g + green(origColor),
- b = b + blue(origColor) > 255 ? b + blue(origColor) - 255 : b + blue(origColor) );
-
- renderer.pixels[i] = history[i] = toColor; //blendColor(origColor, toColor, blendMode);
- }
- renderer.updatePixels();
- if (params.get(0).value == 0) {
- renderer.colorMode(RGB);
- colorMode(RGB);
- }
- renderer.endDraw();
- }
- }
|