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

◆ flowPrepare()

void fl::FlowFieldFloat::flowPrepare ( float t)
private

Definition at line 277 of file flowfield.cpp.hpp.

277 {
278 int w = (int)getWidth();
279 int h = (int)getHeight();
280 const float kBaseFreq = 0.23f;
281
282 for (int i = 0; i < w; i++) {
283 float v = mNoiseGenX.noise(
284 i * kBaseFreq * mParams.noise_freq_x + t * mParams.flow_speed_x,
285 0.0f);
286 mXProf[i] = clampf(v * mParams.flow_amp_x, -1.0f, 1.0f);
287 }
288
289 if (mParams.reverse_x_profile) {
290 for (int i = 0; i < w / 2; i++) {
291 float tmp = mXProf[i];
292 mXProf[i] = mXProf[w - 1 - i];
293 mXProf[w - 1 - i] = tmp;
294 }
295 }
296
297 for (int i = 0; i < h; i++) {
298 float v = mNoiseGenY.noise(
299 i * kBaseFreq * mParams.noise_freq_y + t * mParams.flow_speed_y,
300 0.0f);
301 mYProf[i] = clampf(v * mParams.flow_amp_y, -1.0f, 1.0f);
302 }
303
304 // Apply noise bias (attack/decay bumps from noisePunch triggers).
305 for (int i = 0; i < w; i++) {
306 mXProf[i] = clampf(mXProf[i] + mNoiseBias.getX(i), -1.0f, 1.0f);
307 }
308 for (int i = 0; i < h; i++) {
309 mYProf[i] = clampf(mYProf[i] + mNoiseBias.getY(i), -1.0f, 1.0f);
310 }
311}
NoiseBias2D mNoiseBias
Definition flowfield.h:287
Params mParams
Definition flowfield.h:286
fl::vector< float > mYProf
Per-row values; drives horizontal shift.
Definition flowfield.h:352
Perlin2D mNoiseGenY
Definition flowfield.h:350
static float clampf(float v, float lo, float hi)
Perlin2D mNoiseGenX
Definition flowfield.h:350
fl::vector< float > mXProf
Per-column values; drives vertical shift.
Definition flowfield.h:351
u16 getWidth() const
Definition fx2d.h:24
u16 getHeight() const
Definition fx2d.h:23

References clampf(), fl::Fx2d::getHeight(), fl::Fx2d::getWidth(), fl::FlowField::mNoiseBias, mNoiseGenX, mNoiseGenY, fl::FlowField::mParams, mXProf, mYProf, and fl::t.

Referenced by drawImpl().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: