16 for (
int i = 0; i <= 256; i++) {
18 fl::i32 t2 =
static_cast<fl::i32
>((
static_cast<fl::i64
>(
t) *
t) >>
HP_BITS);
19 fl::i32 t3 =
static_cast<fl::i32
>((
static_cast<fl::i64
>(t2) *
t) >>
HP_BITS);
20 fl::i32 inner =
static_cast<fl::i32
>((
static_cast<fl::i64
>(
t) * (6 *
HP_ONE)) >>
HP_BITS);
22 inner =
static_cast<fl::i32
>((
static_cast<fl::i64
>(
t) * inner) >>
HP_BITS);
24 table[i] =
static_cast<fl::i32
>((
static_cast<fl::i64
>(t3) * inner) >>
HP_BITS);
29 const fl::i32 *fade_lut,
36 const fl::i32 *fade_lut,
47 fl::i32 u =
fade(x16, fade_lut);
48 fl::i32 v =
fade(y16, fade_lut);
50 int A = perm[X & 255] + Y;
51 int AA = perm[A & 255];
52 int AB = perm[(A + 1) & 255];
53 int B = perm[(X + 1) & 255] + Y;
54 int BA = perm[
B & 255];
55 int BB = perm[(
B + 1) & 255];
58 fl::i32 g00 =
grad_i16(perm[AA & 255], x16, y16);
64 fl::i32 lerp0 =
lerp(u, g00, g10);
65 fl::i32 lerp1 =
lerp(u, g01, g11);
73 frac16 =
static_cast<fl::i16
>(fp16 & (
FP_ONE - 1));
77 fl::u32 idx =
static_cast<fl::u32
>(
t) >> 8;
78 fl::i32 frac =
t & 0xFF;
79 fl::i32 a = table[idx];
80 fl::i32 b = table[idx + 1];
81 return a + ((
static_cast<fl::i32
>(frac << 8) * (b - a)) >> 16);
85 return a +
static_cast<fl::i32
>(
86 (
static_cast<fl::i64
>(
t) * (b - a)) >>
HP_BITS);
91 constexpr GradCoeff lut[16] = {
92 { 1, 1}, {-1, 1}, { 1, -1}, {-1, -1},
93 { 1, 0}, {-1, 0}, { 1, 0}, {-1, 0},
94 { 0, 1}, { 0, -1}, { 0, 1}, { 0, -1},
95 { 1, 1}, { 0, -1}, {-1, 1}, { 0, -1},
97 const GradCoeff &
g = lut[hash & 15];
99 return static_cast<fl::i32
>(
g.cx *
x) +
static_cast<fl::i32
>(
g.cy *
y);
static constexpr FASTLED_FORCE_INLINE s16x16 from_raw(i32 raw) FL_NO_EXCEPT
#define FL_OPTIMIZATION_LEVEL_O3_BEGIN
#define FASTLED_FORCE_INLINE
#define FL_OPTIMIZATION_LEVEL_O3_END
FASTLED_FORCE_INLINE float lerp(float t, float a, float b) FL_NO_EXCEPT
u8 u8 fract8 blur_amount FL_NO_EXCEPT
expected< T, E > result
Alias for expected (Rust-style naming)
FASTLED_FORCE_INLINE float fade(float t) FL_NO_EXCEPT
Base definition for an LED controller.
static FASTLED_FORCE_INLINE fl::i32 lerp(fl::i32 t, fl::i32 a, fl::i32 b) FL_NO_EXCEPT
static void init_fade_lut(fl::i32 *table) FL_NO_EXCEPT
static constexpr fl::i32 HP_ONE
static FASTLED_FORCE_INLINE void floor_frac_i16(fl::i32 fp16, int &ifloor, fl::i16 &frac16) FL_NO_EXCEPT
static constexpr int HP_BITS
static constexpr fl::i32 FP_ONE
static constexpr fl::i32 HP_ONE_I16
static FASTLED_FORCE_INLINE fl::i32 grad_i16(int hash, fl::i16 x, fl::i16 y) FL_NO_EXCEPT
static constexpr int FP_BITS
static FASTLED_FORCE_INLINE fl::i32 fade(fl::i16 t, const fl::i32 *table) FL_NO_EXCEPT
static fl::i32 pnoise2d_raw(fl::i32 fx_raw, fl::i32 fy_raw, const fl::i32 *fade_lut, const fl::u8 *perm) FL_NO_EXCEPT
static fl::s16x16 pnoise2d(fl::s16x16 fx, fl::s16x16 fy, const fl::i32 *fade_lut, const fl::u8 *perm) FL_NO_EXCEPT