16 for (
int i = 0; i <= 256; i++) {
17 fl::i64
t =
static_cast<fl::i64
>(i) * (
HP_ONE / 256);
24 table[i] =
static_cast<fl::i32
>((t3 * inner) >>
HP_BITS);
29 const fl::i32 *fade_lut,
36 const fl::i32 *fade_lut,
45 fl::i32 u =
fade(
x, fade_lut);
46 fl::i32 v =
fade(
y, fade_lut);
48 int A = perm[X & 255] + Y;
49 int AA = perm[A & 255];
50 int AB = perm[(A + 1) & 255];
51 int B = perm[(X + 1) & 255] + Y;
52 int BA = perm[
B & 255];
53 int BB = perm[(
B + 1) & 255];
71 fl::u32 idx =
static_cast<fl::u32
>(
t) >> 16;
72 fl::i32 frac =
t & 0xFFFF;
73 fl::i32 a = table[idx];
74 fl::i32 b = table[idx + 1];
75 return a +
static_cast<fl::i32
>(
76 (
static_cast<fl::i64
>(frac) * (b - a)) >> 16);
80 return a +
static_cast<fl::i32
>(
81 (
static_cast<fl::i64
>(
t) * (b - a)) >>
HP_BITS);
86 constexpr GradCoeff lut[16] = {
87 { 1, 1}, {-1, 1}, { 1, -1}, {-1, -1},
88 { 1, 0}, {-1, 0}, { 1, 0}, {-1, 0},
89 { 0, 1}, { 0, -1}, { 0, 1}, { 0, -1},
90 { 1, 1}, { 0, -1}, {-1, 1}, { 0, -1},
92 const GradCoeff &
g = lut[hash & 15];
93 return g.cx *
x +
g.cy *
y;
97 const fl::i32 *fade_lut,
100 pnoise3d_raw(fx.raw(), fy.raw(), fz.raw(), fade_lut, perm));
104 const fl::i32 *fade_lut,
115 fl::i32 u =
fade(
x, fade_lut);
116 fl::i32 v =
fade(
y, fade_lut);
117 fl::i32 w =
fade(
z, fade_lut);
119 int A = perm[X & 255] + Y;
120 int AA = perm[A & 255] + Z;
121 int AB = perm[(A + 1) & 255] + Z;
122 int B = perm[(X + 1) & 255] + Y;
123 int BA = perm[
B & 255] + Z;
124 int BB = perm[(
B + 1) & 255] + Z;
148 fl::i32 u = h < 8 ?
x :
y;
149 fl::i32 v = h < 4 ?
y : (h == 12 || h == 14 ?
x :
z);
150 return ((h & 1) == 0 ? u : -u) + ((h & 2) == 0 ? v : -v);
static constexpr int FRAC_BITS
static constexpr FASTLED_FORCE_INLINE s16x16 from_raw(i32 raw) FL_NO_EXCEPT
#define FL_OPTIMIZATION_LEVEL_O3_BEGIN
#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
FASTLED_FORCE_INLINE float grad(int hash, float x, float y, float z) 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 fl::i32 grad3d(int hash, fl::i32 x, fl::i32 y, fl::i32 z) FL_NO_EXCEPT
static void floor_frac(fl::i32 fp16, int &ifloor, fl::i32 &frac24) FL_NO_EXCEPT
static constexpr fl::i32 HP_ONE
static fl::i32 fade(fl::i32 t, const fl::i32 *table) FL_NO_EXCEPT
static constexpr int HP_BITS
static fl::i32 pnoise3d_raw(fl::i32 fx_raw, fl::i32 fy_raw, fl::i32 fz_raw, const fl::i32 *fade_lut, const fl::u8 *perm) 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::i32 grad(int hash, fl::i32 x, fl::i32 y) FL_NO_EXCEPT
static constexpr int FP_BITS
static fl::s16x16 pnoise3d(fl::s16x16 fx, fl::s16x16 fy, fl::s16x16 fz, const fl::i32 *fade_lut, const fl::u8 *perm) FL_NO_EXCEPT
static fl::i32 lerp(fl::i32 t, fl::i32 a, fl::i32 b) FL_NO_EXCEPT
static constexpr fl::i32 FP_ONE
static void init_fade_lut(fl::i32 *table) 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