the problem (partly solved) is that scrolling text does not erase any previous text, but simply paints pixels in addition.
* add a "shadow" area around each letter, which is explicitly painted black
* only possible when Trail=0, and overlay option selected
* speedup: add functions to only blur rows or columns (50% faster)
* fire2012: tinkering with bur options. Vertical blur only when slider < 64 (faster); extra blur for slider values >192 (bush burn)
* mode_2Dfloatingblobs() improvements for large panels
* Segment::fillCircle() speed optimizations
* HUB75 hack (disabled by default): skip first fill(BLACK) when using double buffering (as the buffer gets cleared after each frame)
* prevent loss of projector when changing segment witdth (mirror).
* prevent unsigned wrap-around "0 -1" for projector
* use aux0 and aux1 segment vars (use them as signed)
* change default NUM_BANDS to 50% - better for smaller panels
* if less than 16 bands : map to full range instead of only showing lower frequencies - same behavious as GEQ 2D.
* require at least a 3x3 setup
* make sure that NUM_BANDS is limited by available columns
* avoid drawing with negative Y
* slightly reduce default "front fill", so that "borders" has a visible effect when running with defaults
* bugfix for Borders (did not work with <16 bands)
* new option for soft light: when checked, the left & right edges of top lights are drawn with anti-aliasing on. Costs us 1-2 fps, so I made it optional.
* made cols/rows integer, to avoid that "cols-x" wraps around
* pre-compute some expressions that don't depend on loop counters
--> wins us 1-4 fps on my 72x72 test setup
* add more accurate version of map() - reduces slight flickering in some 2D effects
* cache fftResult[] in effects (um_data->fftresult might get updated while the effect still calculates)
Only draw what will be visible.
This is a pretty solid speed increase when the adjacent bar is close in height, or if it's taller and would occlude it anyway, it'll be skipped.