417 {
419 const int total_pixels =
setup.total_pixels;
420 const i32 *base_angle =
setup.base_angle;
421 const i32 *dist_scaled =
setup.dist_scaled;
422 const i32 *rf3_arr =
setup.rf3;
423 const i32 *rf_half_arr =
setup.rf_half;
424 const i32 *rf_qtr_arr =
setup.rf_quarter;
425 const u16 *pixel_idx =
setup.pixel_idx;
426 const i32 *fade_lut =
setup.fade_lut;
428 const i32 cx_raw =
setup.cx_raw;
429 const i32 cy_raw =
setup.cy_raw;
430 const i32 lin0_raw =
setup.lin0_raw;
431 const i32 lin1_raw =
setup.lin1_raw;
432 const i32 lin2_raw =
setup.lin2_raw;
433 const i32 rad0_raw =
setup.rad0_raw;
434 const i32 rad1_raw =
setup.rad1_raw;
435 const i32 rad2_raw =
setup.rad2_raw;
437
438
439 int i = 0;
440 for (; i + 3 < total_pixels; i += 4) {
441
447
449 base_vec, dist_vec, rad0_raw, lin0_raw, fade_lut, perm, cx_raw, cy_raw, rf3_vec);
451 base_vec, dist_vec, rad1_raw, lin1_raw, fade_lut, perm, cx_raw, cy_raw, rf_half_vec);
453 base_vec, dist_vec, rad2_raw, lin2_raw, fade_lut, perm, cx_raw, cy_raw, rf_qtr_vec);
454
455
460 }
461
462
463 for (; i < total_pixels; i++) {
464 const i32 base_raw = base_angle[i];
465 const i32 dist_raw = dist_scaled[i];
466
467 auto noise_ch = [&](i32 rad_raw, i32 lin_raw) -> i32 {
470 i32 nx =
perlinCoord(sc.cos_val, dist_raw, lin_raw + cx_raw);
471 i32 ny =
perlinCoord(sc.sin_val, dist_raw, cy_raw);
472 i32 raw = Perlin::pnoise2d_raw(nx, ny, fade_lut, perm);
474 };
475
476 i32 s0 = noise_ch(rad0_raw, lin0_raw);
477 i32 s1 = noise_ch(rad1_raw, lin1_raw);
478 i32 s2 = noise_ch(rad2_raw, lin2_raw);
479
483
484 leds[pixel_idx[i]] =
CRGB(
static_cast<u8>(r),
static_cast<u8>(
g),
static_cast<u8>(b));
485 }
486}
ChasingSpiralState mState
FASTLED_FORCE_INLINE void scatterPixel(fl::span< CRGB > leds, u16 idx, simd::simd_u32x4 r, simd::simd_u32x4 g, simd::simd_u32x4 b, int lane) FL_NO_EXCEPT
FASTLED_FORCE_INLINE u32 radiansToA24(i32 base_s16x16, i32 offset_s16x16) FL_NO_EXCEPT
simd::simd_u32x4 simd4_processChannel(simd::simd_u32x4 base_vec, simd::simd_u32x4 dist_vec, i32 radial_offset, i32 linear_offset, const i32 *fade_lut, const u8 *perm, i32 cx_raw, i32 cy_raw, simd::simd_u32x4 rf_vec) FL_NO_EXCEPT
FrameSetup setupChasingSpiralFrame(Context &ctx, ChasingSpiralState &state) FL_NO_EXCEPT
FASTLED_FORCE_INLINE i32 applyRadialFilter(i32 noise_255, i32 rf_raw) FL_NO_EXCEPT
FASTLED_FORCE_INLINE i32 perlinCoord(i32 sc_val, i32 dist_raw, i32 offset) FL_NO_EXCEPT
FASTLED_FORCE_INLINE simd::simd_u32x4 loadAligned(const i32 *arr, int i) FL_NO_EXCEPT
FASTLED_FORCE_INLINE i32 clampAndScale255(i32 raw_s16x16) FL_NO_EXCEPT
FASTLED_FORCE_INLINE SinCos32 sincos32(u32 angle) FL_NO_EXCEPT