Commit Graph

450 Commits

Author SHA1 Message Date
Frank
22b16ab542 Align all licensing statements with EUPL-1.2 2024-10-14 21:52:52 +02:00
Frank
e103a96eea Merge pull request #147 from Brandon502/mdev
2D Effect Snow Fall
2024-10-03 00:21:33 +02:00
Frank
1e5b246871 small fixes
very minor changes:
* HUB75 bus don't leave _len uninitialized, handle display == nullptr before using display members
* __attribute__((pure)) was in the wrong location
* wled00.ino: made lps (loops-per-second) calculation a bit more accurate
2024-10-03 00:19:18 +02:00
Brandon502
18e22f5b5f Merge remote-tracking branch 'upstream/mdev' into mdev 2024-10-02 17:43:15 -04:00
Frank
a0f07cabcb make a few getters "constexpr" as they just return a constant
constexpr ensures that the compiler will replace the "getter" call with the value return, saving function call overhead.

based on an idea from @blazoncek
2024-09-29 14:59:54 +02:00
Frank
2aa0d47036 adding getPixelColorRestored()
similar to getPixelColor, but returns the original pixel without brightness adjustments.

* getPixelColorRestored is used by segment::sPC and segment::gPC
* getPixelColor is still used by ABL (auto brightness limiter)
2024-09-28 02:43:12 +02:00
Frank
3a506aded2 trying to keep scrolling text readable
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
2024-09-28 02:12:53 +02:00
Frank
ffc9ec3cfb exclude HUB75 from auto brightness limiter
For a 64x64 panel, ABL assumes 4A of standby current. This does not make any sense.
2024-09-22 17:07:26 +02:00
Frank
fc2e1263cb new option don't use effect-specific palette or mapping modes
* new setting in UI page: "Don't use effect palette and segment parameters" - only meaningful when "Use effect default parameters" is enabled, too.

--> effect slider defaults will still be applied, however palette, 1D2D mapping mode and other segment settings will not change.
2024-09-06 13:06:28 +02:00
Frank
b47c55db90 fix 8266 builds
wled00/FX_fcn.cpp:974:16: error: '_isSuperSimpleSegment' was not declared in this scope
2024-08-18 13:21:55 +02:00
Troy
324f3acd59 Merge branch 'MoonModules:mdev' into mdev 2024-08-17 00:58:29 -04:00
Frank
030a7cee53 another small speedup, and segment stability improvement
* removed a few sanity check that are done again later in getPixelColor
* stability: prevent crashes when changing segments settings or effect options
2024-08-16 17:54:11 +02:00
Frank
f7e3f35c0c my favourite HUB75 buildenv [env:esp32_4MB_V4_HUB75_forum] 2024-08-15 20:35:16 +02:00
Troy
340197fd91 Merge branch 'mdev' of https://github.com/troyhacks/WLED into mdev 2024-08-13 12:13:29 -04:00
Troy
38d30723a0 2D Audio Reactive Paintbrush Effect 2024-08-13 12:13:14 -04:00
Frank
a44aa92c75 playing with Fire2012
* 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)
2024-08-09 12:55:04 +02:00
Frank
7f9da309c9 const const const
adding hints for the compiler for optimization.
In case your custom build complains about "const", just remove the keyword. based on e82f38e277, but going further :-)

* "const" class functions : function does not modify any class attributes ( --> "this" becomes const)

* __attribute__((pure)) :  function return value depends only on the parameters and/or global variables. The function does not modify any global or static variables.
* __attribute__((const)) : function only examines arguments (no globals), and has no effects except the return value. This slightly more strict than "pure"
* hot: tells the compiler "this functions is called very often"
* cold: the opposite of hot
2024-08-07 14:58:38 +02:00
Frank
273154db76 drawArc speedup (Circle mapping mode)
* Optimize drawArc to skip pixels that are off-screen or outside the circle's bounding box. Also move repeating calculations out of the inner loop.

testcase 64x64 : 8fps --> 33 fps :-)
2024-08-06 18:13:59 +02:00
Frank
42919f9daf blob effect improvements, and a dirty hack for HUB75 double buffer
* 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)
2024-08-06 15:53:46 +02:00
Frank
5240c3450b Segment drawing optimizations (FASTPATH only)
* cache width, height, and a few more values that are normally re-calculated for each pixel
* make normal sPC a bit faster
* Segment::fade_out() optimization

--> only active in FASTPATH mode, to preserve flash on small devices (8266)
--> code still needs some polishing
--> up to 20% speedup with some 2D effects (esp32,  flash qio 80Mhz, -O2)
2024-08-05 21:30:25 +02:00
Frank
6505e04cbf minor effect improvements
* 2DBlackHole: improved accuracy
* 2Dfloatingblobs: draw anti-aliased blobs when "blur" slider = 1
* FX framework: un-clutter and optimize "XY()"
2024-08-05 17:09:50 +02:00
Brandon502
67d777f474 2D Effect Snow Fall Added 2024-07-17 14:33:23 -04:00
Frank
e3d27de395 better handling of perspective
drawLine parameter "depth" shortens a line by a fraction - useful for VP perspective (vanishing point)
2024-07-16 13:27:56 +02:00
Frank
6aaf7a908d more sPC optimizations
* made setPixelColorXY_fast private
* optimized Segment::fill() to use setPixelColorXY_fast
* "bar" 1D expand optimization
2024-07-14 23:49:37 +02:00
Frank
dddd1574ec (experimental) setPixelColorXY_fast speedup by setPixelColorXY_fast
* adding a _fast_ variant of SetPixelColorXY, that does not perform any error checking.
* drawLine uses the fast setPixelColor variant (bresenham algo only)
* for TESTING: segment option "reverse" switches back to the "original slow" code.
surely needs some more optimization and improvements.

First test on GEQ 3D shows 10%-30% speedup
2024-07-14 14:11:11 +02:00
Troy
75f0c7cb98 Oopsy 2024-07-12 22:34:37 -04:00
Troy
52130e176c Merge branch 'mdev' into 3DGEQ 2024-07-12 22:10:39 -04:00
Troy
ce8f01bf90 Bugfixed GEQ 3D
Bug fixes after lots of testing, better settings, etc.

Big thanks to @netmindz  for restructuring the code.

Add rough distance stop to Segment::drawLine()
2024-07-12 22:03:33 -04:00
Will Tatam
8f4380b075 Rename 3D GEQ to GEQ Laser 2024-07-10 23:51:53 +01:00
Will Tatam
e2f23542f5 Add @TroyHacks 3D GEQ 2024-07-10 08:25:40 +01:00
Frank
c07658a7cb post-merge
* fix drawLine prototype
* a few more "inline"
* typo
2024-06-26 23:41:38 +02:00
Blaz Kristan
2aad3f5356 Antialiased line & circle 2024-06-26 22:40:59 +02:00
Blaz Kristan
64b1d76893 Palette loading optimisation
- fixes #3978
- FX: Firenoise can use selected palette
2024-05-16 00:07:18 +02:00
Frank
e17c30ebd7 Merge pull request #3961 from Brandon502/0_15
Added Pinwheel Expand 1D ->2D effect mapping mode
2024-05-15 22:35:18 +02:00
Frank
93b8c63e2b post PR3904 fixes and improvements
* fix compiler warnings (uninitialized vars, ambiguous  functions calls)
* restore some lost function prototypes
* avoid negative pixel indices
* only use "fast" color_add when there is no risk of  "overshooting" results
* minor optimizations
2024-04-18 21:09:14 +02:00
Blaž Kristan
48c64aecff Merge pull request #3904 from DedeHai/FX_fcn_improvements
added improvements to color scaling and blurring
2024-04-18 19:26:57 +02:00
Brandon502
3e131014b2 Added PinWheel Expand1D Effect 2024-02-20 17:26:36 -05:00
Frank
302f18fbfe small speedup
* currentBri() is called for any setpixelColor(), so we can speed up everything (a bit) by allowing the compiler to inline which saves a few cycles of call/return overhead.
* aligned the function with upstream, and added another optimization by only calling progress() when a transition is active.
2024-01-26 17:08:37 +01:00
Frank
01c187f8aa bugfix for #104
this avoids heap corruption, by double-checking that "use global leds" is not configured, before trying to free ledsrgb[].

It is still a mystery why Segment::_globalLeds == nullptr.
2024-01-02 15:52:00 +01:00
Frank
f699a56220 tiny correction 2023-12-31 12:03:08 +01:00
Frank
4b89016c2d audio-enhanced standard effects
backported from WLED-SR
2023-12-31 00:01:29 +01:00
Frank
ced03f1f08 code spell checking - part1 (core)
I've found a code spellchecker, so this is what can be corrected easily. Changes are only affecting comments, readme and a few user-visible strings. So no functional impact expected.
2023-12-14 22:05:55 +01:00
Frank
d2c9c9ee71 fix small typo 2023-12-10 16:50:49 +01:00
Frank
e4cb0929c3 PartyJerk: minor code style improvements
* fix some too-long tabs
*author info added
* shrunk number of blank lines
* removed unused audio variables
* colorIndex : better accuracy by first doing multiply, then divide
2023-12-10 16:49:13 +01:00
tonyxforce
21f925eab2 Merge branch 'MoonModules:mdev' into mdev 2023-11-14 23:07:39 +01:00
Frank
fd15047220 Squashed commit of the following:
commit 84148ad07a7ac94993dc9dfd0bdc6d7a8d9e47ac
Author: Blaz Kristan <blaz@kristan-sp.si>
Date:   Sun Sep 3 12:34:17 2023 +0200

    Implement palette colors

commit af3c8f66f7e77dd6306ceadf2cea26a41336e439
Author: Blaz Kristan <blaz@kristan-sp.si>
Date:   Tue Aug 1 18:18:41 2023 +0200

    revert wled00.ino

commit 3097a1b17efa06b78d52611b3a9d3c519a15ed17
Author: Blaz Kristan <blaz@kristan-sp.si>
Date:   Tue Aug 1 18:13:37 2023 +0200

    minor aesthetic fixes

commit 54b80f74b2dc8766951d55438c6bc560b33e505b
Author: Blaz Kristan <blaz@kristan-sp.si>
Date:   Tue Aug 1 18:09:32 2023 +0200

    remove unused variable

commit 9a78d28cd71da998cdd76ba826946f54ee2044bd
Merge: 56a74bc5 1ed81793
Author: Blaz Kristan <blaz@kristan-sp.si>
Date:   Tue Aug 1 18:08:29 2023 +0200

    Merge branch 'main' into PJH_ADD_Linearbounce

commit 56a74bc54c5bbf189b1f98c6cd216956b4f6bd6c
Author: pjhatch <66844564+pjhatch@users.noreply.github.com>
Date:   Sat Aug 15 12:34:13 2020 -0500

    Update FX.cpp

    Added the improvements suggested by Gregor Hartmann

commit a20358b61bf0c38356438c87e5c59663524e038e
Author: pjhatch <66844564+pjhatch@users.noreply.github.com>
Date:   Sun Jul 12 08:33:48 2020 -0500

    Adding 2 ball track modes

    With and without collisions

commit 341d9d1697e9af4fdf2fbd5b4c1de935d0b5a229
Author: pjhatch <66844564+pjhatch@users.noreply.github.com>
Date:   Sun Jul 5 14:55:14 2020 -0500

    Update FX.cpp

    Still 1 bug to fix - this was a test.

commit 9cee4243837f35431302814cc7ace13a72ab5fed
Author: pjhatch <66844564+pjhatch@users.noreply.github.com>
Date:   Sun Jul 5 14:53:14 2020 -0500

    Update FX.cpp

commit 37cb51cfd6991f6041d663de72debfdcf349c1da
Author: pjhatch <66844564+pjhatch@users.noreply.github.com>
Date:   Thu Jul 2 14:16:25 2020 -0500

    Adding Collision

    A couple of bugs still need sorting

commit 84b7bfb989e662e37a47d78e381105b3951311a6
Author: pjhatch <66844564+pjhatch@users.noreply.github.com>
Date:   Sun Jun 28 19:59:46 2020 -0500

    update for lost balls

    Added some protection - so that when intensity is lowered and raised some time later balls that have moved way off the track are recovered.

commit 04d17e483956b74754002da4cb4dfcddaf932f7b
Author: pjhatch <66844564+pjhatch@users.noreply.github.com>
Date:   Sun Jun 28 19:43:56 2020 -0500

    Added Ball Track V1

    In this version the balls bounce of the edges and do not interact with one another.
2023-09-17 19:19:37 +02:00
tonyxforce
c07a8ae263 Fixed possible naming legal issues 2023-08-25 20:26:16 +02:00
tonyxforce
6a37f81465 Renamed the effect, biased the sliders, so it
looks best with all sliders in the middle,
added option to change the effect speed multiplier
2023-08-25 01:03:40 +02:00
tonyxforce
7fe0123c63 modified: wled00/FX.cpp
modified:   wled00/FX.h
2023-08-23 18:13:15 +02:00
Frank
9a3a97eff1 pre-merge
cleanup:
- version increase
- clean up debug messages
- minor fixes in platformio.ini
- fix compilation with -D WLED_DISABLE_2D

helping the compiler to optimize:
- a few more __attribute__((pure))
- fx.cpp marked a few local functions as "static"
2023-07-13 19:58:48 +02:00