FastLED 3.9.15
Loading...
Searching...
No Matches

◆ loop()

void loop ( )

Definition at line 128 of file Luminova.h.

128 {
129 // Processing does: background(0, t?9:!createCanvas(...)+W); filter(BLUR)
130 // We emulate a very light global fade + blur to leave trails.
131 // First a tiny global fade, then a mild Gaussian-ish blur.
132 fadeToBlackBy(leds, NUM_LEDS, 18); // stronger fade to prevent blowout
133 blur2d(leds, WIDTH, HEIGHT, 24, xymap); // slightly gentler blur for 32x32
134
135 // Spawn/overwrite one particle per frame, round-robin
136 resetParticle(ps[t % MAXP], t);
137
138 // Update & draw all particles
139 for (int i = 0; i < MAXP; ++i) {
140 if (!ps[i].alive)
141 continue;
142 P &p = ps[i];
143
144 // strokeWeight(p.s *= .997)
145 p.s *= 0.997f;
146 if (p.s < 0.5f) {
147 p.alive = false;
148 continue;
149 } // cheap cull
150
151 // a += (noise(t/99, p.g) - .5) / 9
152 // Use 2D noise: (t/99, g). inoise8 returns 0..255; center at ~128.
153 float tOver99 = (float)t / 99.0f;
154 uint8_t n2 = inoise8((uint16_t)(tOver99 * 4096), (uint16_t)(p.g * 37));
155 float n2c = ((int)n2 - 128) / 255.0f; // ~ -0.5 .. +0.5
156 p.a += (n2c) / 9.0f;
157
158 // x += cos((a)*f), y += sin(a*f) (original had (a+=...)*f inside cos)
159 float aa = p.a * (float)p.f;
160 p.x += cosf(aa);
161 p.y += sinf(aa);
162
163 // draw white point with softness according to s
164 plotSoftDot(p.x, p.y, p.s);
165 }
166
167 FastLED.show();
168 t++;
169 // Cap frame rate a bit like Processing's draw loop
170 FastLED.delay(16); // ~60 FPS
171}
CRGB leds[NUM_LEDS]
#define NUM_LEDS
XYMap xymap(WIDTH, HEIGHT, SERPENTINE)
FL_DISABLE_WARNING_PUSH FL_DISABLE_WARNING_GLOBAL_CONSTRUCTORS CFastLED FastLED
Global LED strip management instance.
Definition FastLED.cpp:74
#define WIDTH
Definition advanced.h:36
#define HEIGHT
Definition advanced.h:37
void fadeToBlackBy(CRGB *leds, fl::u16 num_leds, fl::u8 fadeBy)
void blur2d(CRGB *leds, fl::u8 width, fl::u8 height, fract8 blur_amount, const fl::XYMap &xymap)
Two-dimensional blur filter.
Definition blur.cpp:72
void plotSoftDot(float fx, float fy, float s)
Definition Luminova.h:84
void resetParticle(P &p, uint32_t tt)
Definition Luminova.h:58
static const int MAXP
Definition Luminova.h:55
static uint32_t t
Definition Luminova.h:54
P ps[MAXP]
Definition Luminova.h:56
int g
Definition Luminova.h:49
int f
Definition Luminova.h:48
bool alive
Definition Luminova.h:51
float y
Definition Luminova.h:46
float s
Definition Luminova.h:50
float a
Definition Luminova.h:47
float x
Definition Luminova.h:46
Definition Luminova.h:45
uint8_t inoise8(uint16_t x, uint16_t y, uint16_t z)
8-Bit, fixed point implementation of Perlin's noise.
Definition noise.cpp:570

References P::a, P::alive, blur2d(), P::f, fadeToBlackBy(), FastLED, P::g, HEIGHT, inoise8(), leds, MAXP, NUM_LEDS, plotSoftDot(), ps, resetParticle(), P::s, t, WIDTH, P::x, xymap, and P::y.

+ Here is the call graph for this function: