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

◆ inoise16_raw() [2/4]

fl::i16 inoise16_raw ( fl::u32 x,
fl::u32 y )
extern

Parameters
yy-axis coordinate on noise map (2D)

Definition at line 457 of file noise.cpp.hpp.

458{
459 // Find the unit cube containing the point
460 fl::u8 X = x>>16;
461 fl::u8 Y = y>>16;
462
463 // Hash cube corner coordinates
464 fl::u8 A = NOISE_P(X)+Y;
465 fl::u8 AA = NOISE_P(A);
466 fl::u8 AB = NOISE_P(A+1);
467 fl::u8 B = NOISE_P(X+1)+Y;
468 fl::u8 BA = NOISE_P(B);
469 fl::u8 BB = NOISE_P(B+1);
470
471 // Get the relative position of the point in the cube
472 fl::u16 u = x & 0xFFFF;
473 fl::u16 v = y & 0xFFFF;
474
475 // Get a signed version of the above for the grad function
476 fl::i16 xx = (u >> 1) & 0x7FFF;
477 fl::i16 yy = (v >> 1) & 0x7FFF;
478 fl::u16 N = 0x8000L;
479
480 u = EASE16(u); v = EASE16(v);
481
482 fl::i16 X1 = LERP(grad16(NOISE_P(AA), xx, yy), grad16(NOISE_P(BA), xx - N, yy), u);
483 fl::i16 X2 = LERP(grad16(NOISE_P(AB), xx, yy-N), grad16(NOISE_P(BB), xx - N, yy - N), u);
484
485 fl::i16 ans = LERP(X1,X2,v);
486
487 return ans;
488}
int y
Definition simple.h:93
int x
Definition simple.h:92
unsigned char u8
Definition stdint.h:131
FL_DISABLE_WARNING_PUSH unsigned char * B
static fl::i16 grad16(fl::u8 hash, fl::i16 x, fl::i16 y, fl::i16 z)
#define NOISE_P(x)
Reads a single byte from the p array.
Definition noise.cpp.hpp:32

References grad16(), NOISE_P, x, and y.

+ Here is the call graph for this function: