FastLED 3.10.8
Loading...
Searching...
No Matches

◆ pnoise2d_raw()

fl::i32 fl::perlin_q16::pnoise2d_raw ( fl::i32 fx_raw,
fl::i32 fy_raw,
const fl::i32 * fade_lut,
const fl::u8 * perm )
static

Definition at line 35 of file perlin_q16.cpp.hpp.

37 {
38 int X, Y;
39 fl::i32 x, y;
40 floor_frac(fx_raw, X, x);
41 floor_frac(fy_raw, Y, y);
42 X &= 255;
43 Y &= 255;
44
45 fl::i32 u = fade(x, fade_lut);
46 fl::i32 v = fade(y, fade_lut);
47
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];
54
55 fl::i32 result = lerp(v,
56 lerp(u, grad(perm[AA & 255], x, y),
57 grad(perm[BA & 255], x - HP_ONE, y)),
58 lerp(u, grad(perm[AB & 255], x, y - HP_ONE),
59 grad(perm[BB & 255], x - HP_ONE, y - HP_ONE)));
60
61 // No shift needed: already in Q16 format, matches s16x16::FRAC_BITS
62 return result;
63}
expected< T, E > result
Alias for expected (Rust-style naming)
Definition result.h:31
static FASTLED_FORCE_INLINE void floor_frac(fl::i32 fp16, int &ifloor, fl::i32 &frac16) FL_NO_EXCEPT
static FASTLED_FORCE_INLINE fl::i32 grad(int hash, fl::i32 x, fl::i32 y) FL_NO_EXCEPT
static FASTLED_FORCE_INLINE fl::i32 fade(fl::i32 t, const fl::i32 *table) FL_NO_EXCEPT
static FASTLED_FORCE_INLINE fl::i32 lerp(fl::i32 t, fl::i32 a, fl::i32 b) FL_NO_EXCEPT
static constexpr fl::i32 HP_ONE
Definition perlin_q16.h:17

References fl::B, fl::fade(), fl::FL_NO_EXCEPT, floor_frac(), fl::grad(), HP_ONE, fl::lerp(), fl::x, and fl::y.

Referenced by pnoise2d().

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