Commit Graph

3296 Commits

Author SHA1 Message Date
Frank
a45306b141 blur speedup
it seems that SEGMENT.blur() is the main bottleneck for many 2D effects.

This change optimizes performance of the function:
* avoid to re-write unchanged pixels
* early exit when blur_amount == 0 (=nothing to do)
* use _fast_ types where possible

I've seen up to 20% speedup with this change.
2023-07-08 20:06:52 +02:00
Frank
a2e2eada1b npm run build 2023-07-08 20:01:40 +02:00
Frank
5fe12eef5a Merge branch 'mdev' into audio_fastpath 2023-07-08 19:23:36 +02:00
Frank
72b79608bf 2DPlasmaball - optimize out float 2023-07-08 19:13:20 +02:00
Frank
2562f308ca fix power calculation for NeoPixelBusLg
power estimation results from estimateCurrentAndLimitBri() were too low (example: estimated 1.3Amp, measured 1.6Amp). This change corrects the power calculation. Due to the changed behavior of getPixelColor, powerSum must be used as-is, not scaled down again by brightness.
2023-07-08 19:13:20 +02:00
Frank
601499b69b XY: minor bugfix
properly handle width=0 OR height=0
2023-07-06 10:02:01 +02:00
Frank
7e34781212 ABL optimization
this optimization avoids to apply brightness two times .

NeoPixelBusLg has already applied global brightness at sPC. Due to internal working of the Lg bus, its sufficient to only post-apply scaling, and set the new (scaled) brightness for the next frame.
2023-07-03 19:41:51 +02:00
Frank
a71be02b89 de-optimization
first version still cased some flickering.
This de-optimization makes LEDs more stable.
2023-07-03 19:41:51 +02:00
Frank
358f37b7ca optimization for ABL hotfix
* adding an optional parameter to setBrightness(). ApplyPostAdjustments() will only be called if `immediate=true`. Only ABL will use immediate=true, to ensure electrical safety of equipment.

This allows some optimizations of performance, as ApplyPostAdjustments() is time consuming.

* busses.setBrightness(bri) --> applied to all future pixels (fast, lossless)
* busses.setBrightness(bri, true) --> applied directly to all previously set pixels (slower, lossy)
2023-07-03 19:41:50 +02:00
Frank
29644ccf79 ABL optimization
this optimization avoids to apply brightness two times .

NeoPixelBusLg has already applied global brightness at sPC. Due to internal working of the Lg bus, its sufficient to only post-apply scaling, and set the new (scaled) brightness for the next frame.
2023-07-03 19:26:02 +02:00
Frank
ecf331792b de-optimization
first version still cased some flickering.
This de-optimization makes LEDs more stable.
2023-07-03 19:26:02 +02:00
Frank
a84c361fab build number ++ 2023-07-01 20:35:25 +02:00
Frank
3cc1d30090 optimization for ABL hotfix
* adding an optional parameter to setBrightness(). ApplyPostAdjustments() will only be called if `immediate=true`. Only ABL will use immediate=true, to ensure electrical safety of equipment.

This allows some optimizations of performance, as ApplyPostAdjustments() is time consuming.

* busses.setBrightness(bri) --> applied to all future pixels (fast, lossless)
* busses.setBrightness(bri, true) --> applied directly to all previously set pixels (slower, lossy)
2023-07-01 20:23:39 +02:00
Will Tatam
a0b913db27 Disable Animartrix by default 2023-06-29 12:17:55 +01:00
Ewoud
d53de3d82b Fix for GFX to stay in view (part 1) 2023-06-27 15:42:33 +02:00
Blaz Kristan
1c53f14bd5 Temporary bugfix for #3264 2023-06-25 17:21:49 +02:00
Blaz Kristan
2afad2cd66 Temporary bugfix for #3264 2023-06-25 17:06:54 +02:00
Frank
582b96f846 robustness improvements
* handling of stop = 0 when calculating sizes (avoid unsigned underflow)
* make sure groupLength() is never zero (to avoid div/0)
* gapmaps: check for "(gapSize > 0)" added.

not sure if all the checks are 100% needed, but they will improve robustness in corner cases.
2023-06-21 13:30:40 +02:00
Frank
310daa61a8 improve segment code robustness
* Avoid uint16 underflow in width() and height(): stop > start is possible, and means "inactive segment".

* use size_t for ledsrgbSize, _dataLen and _usedSegmentData -  uint16_t could overflow in some situations.

* try to catch attempts to allocate zero bytes (inactive segment => size 0)
2023-06-21 01:43:26 +02:00
Frank
708cd8e73d free udp receive buffers before parsePacket
robustness improvement - parsepacket() will fail if the udp handler still has an active receive buffer.
2023-06-21 00:29:16 +02:00
Frank
51a23bd62c parameter tuning
minor tweaks.
2023-06-19 11:16:35 +02:00
Frank
8aef4347a1 re-enable old peak detect algo, plus ripplepeak bugfix
* re-enabled old detector which does not detect beats. However something bad may still be better than nothing...

* fixed a typo in RipplePeak and Waterfall effect, which cased wrong configuration of the peak detector.

resolves https://github.com/MoonModules/WLED/issues/43
2023-06-18 22:08:55 +02:00
Frank
e0cb636706 re-enable old peak detect algo, plus ripplepeak bugfix
* re-enabled old detector which does not detect beats. However something bad may still be better than nothing...

* fixed a typo in RipplePeak and Waterfall effect, which cased wrong configuration of the peak detector.

resolves https://github.com/MoonModules/WLED/issues/43
2023-06-18 21:55:51 +02:00
Frank
553f2341d2 npm run build 2023-06-16 12:49:46 +02:00
Frank
a7d627bb97 Merge branch 'mdev' into audio_fastpath 2023-06-16 12:39:38 +02:00
Frank
b3677bd9b9 post merge
index.js: indentation (tabs vs. spaces)
npm run build
increment build number
2023-06-16 12:36:04 +02:00
Blaz Kristan
74b09b8576 Fix for #3251 2023-06-16 11:56:30 +02:00
Frank
d51a41f084 post-merge
* npm run build
* upstream fix for XSS vulnerability
2023-06-15 21:08:03 +02:00
Frank
3127c60b41 Merge branch 'mdev' into audio_fastpath 2023-06-15 20:54:57 +02:00
Ewoud
a450334e46 Part 3 2023-06-15 11:51:22 +02:00
Ewoud
3195606ca8 Part 2 2023-06-15 11:41:19 +02:00
Ewoud
117dd52ce4 Ledmap 1D / no width/height 2023-06-15 11:29:41 +02:00
Frank
b53f9ac4b0 2d Lissajous: make fade-out work
"Fade rate" slider works now.
2023-06-14 22:04:32 +02:00
Frank
2410c226f7 2D Lissajous: revive old anti-aliased code
* added option to use original floating point code that features anti-aliasing.
Looks nice, but requires hardware floating point support (ESP32-S3, or "classic" ESP32 dual core).
2023-06-14 21:52:04 +02:00
Frank
47de28ebbb 2D Lissajous improvements
* allow user to control rotation speed (c3 slider)
* preserve accuracy by performing division _after_ multiplication: " (i * speed) / 32", instead of " i * (speed / 32)"
* proper rounding of "map" results, for better visual appearance
* avoid division by zero in map() function
2023-06-14 21:51:22 +02:00
Frank
4f370686e2 2D Lissajous: revive old anti-aliased code
* added option to use original floating point code that features anti-aliasing.
Looks nice, but requires hardware floating point support (ESP32-S3, or "classic" ESP32 dual core).
2023-06-14 21:49:32 +02:00
Frank
bcea5cd148 2D Lissajous improvements
* allow user to control rotation speed (c3 slider)
* preserve accuracy by performing division _after_ multiplication: " (i * speed) / 32", instead of " i * (speed / 32)"
* proper rounding of "map" results, for better visual appearance
* avoid division by zero in map() function
2023-06-14 20:51:14 +02:00
Ewoud
07fdeb3ab7 Ledmaps without width and height specified 2023-06-13 17:58:00 +02:00
Frank
688399660c another mitigation for flickering
in some setups, it helps to use the I2S#1 driver for the LED pin with most LEDs.
2023-06-13 13:19:48 +02:00
Frank
a9cdd21da9 prevent strip flickering
* it seems that NPB is very sensitive when being interrupted during LEDs driving.  This change tries to avoid flash (file) writes when the strip is active.
* minor optimization: yield is completely unnecessary on ESP32 (we have a real OS).
2023-06-12 23:27:09 +02:00
Frank
d4a37ecaea clean up ledmap names when directly reading from file 2023-06-09 17:26:44 +02:00
Frank
64139efc13 clean up ledmap names when directly reading from file 2023-06-09 17:03:04 +02:00
Frank
7dcc8f1d1f enumerateLedmaps improvements
improve reading on ledmap names
* remove trailing " " "," "\r"
* clear buffer between reads
* fix for a 1-byte buffer overflow
2023-06-08 22:31:39 +02:00
Frank
23ea201b43 enumerateLedmaps improvements
improve reading on ledmap names
* remove trailing " " "," "\r"
* clear buffer between reads
* fix for a 1-byte buffer overflow
2023-06-08 22:26:55 +02:00
Frank
d1b2759d47 npm run build 2023-06-08 19:29:23 +02:00
Ewoud
b473a40037 Tiny things 2023-06-08 19:25:38 +02:00
Ewoud
5c7937507b Bug fix segment view, use ledmapMaxSize (TroyHack) 2023-06-08 19:24:37 +02:00
Ewoud
3560b27dc1 Tiny things 2023-06-08 18:47:56 +02:00
Ewoud
8d43af6acc Bug fix segment view, use ledmapMaxSize (TroyHack) 2023-06-08 18:34:10 +02:00
Ewoud
b332204978 Moving to version 0.14.0-b15.27 2023-06-07 23:32:36 +02:00