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

◆ fill_2dnoise8()

void fill_2dnoise8 ( CRGB * leds,
int width,
int height,
bool serpentine,
fl::u8 octaves,
fl::u16 x,
int xscale,
fl::u16 y,
int yscale,
fl::u16 time,
fl::u8 hue_octaves,
fl::u16 hue_x,
int hue_xscale,
fl::u16 hue_y,
fl::u16 hue_yscale,
fl::u16 hue_time,
bool blend )

Fill an LED matrix with random colors, using 8-bit noise.

Parameters
ledspointer to LED array
widththe width of the LED matrix
heightthe height of the LED matrix
serpentinewhether the matrix is laid out in a serpentine pattern (alternating left/right directions per row)
octavesthe number of octaves to use for value (brightness) noise
xx-axis coordinate on noise map for value (brightness) noise
xscalethe scale (distance) between x points when filling in value (brightness) noise
yy-axis coordinate on noise map for value (brightness) noise
yscalethe scale (distance) between y points when filling in value (brightness) noise
timethe time position for the value (brightness) noise field
hue_octavesthe number of octaves to use for color hue noise
hue_xx-axis coordinate on noise map for color hue noise
hue_xscalethe scale (distance) between x points when filling in color hue noise
hue_yy-axis coordinate on noise map for color hue noise.
hue_yscalethe scale (distance) between y points when filling in color hue noise
hue_timethe time position for the color hue noise field
blendif true, will blend the newly generated LED values into the array. If false, will overwrite the array values directly.

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

886 {
887 const size_t array_size = (size_t)height * width;
888 if (array_size <= 0) return;
889 FASTLED_STACK_ARRAY(fl::u8, V, array_size);
890 FASTLED_STACK_ARRAY(fl::u8, H, array_size);
891
892 fl::memset(V,0,height*width);
893 fl::memset(H,0,height*width);
894
895 fill_raw_2dnoise8((fl::u8*)V,width,height,octaves,x,xscale,y,yscale,time);
896 fill_raw_2dnoise8((fl::u8*)H,width,height,hue_octaves,hue_x,hue_xscale,hue_y,hue_yscale,hue_time);
897
898 int w1 = width-1;
899 int h1 = height-1;
900 for(int i = 0; i < height; ++i) {
901 int wb = i*width;
902 for(int j = 0; j < width; ++j) {
903 CRGB led(CHSV(H[(h1-i)*width + (w1-j)], 255, V[i*width + j]));
904
905 int pos = j;
906 if(serpentine && (i & 0x1)) {
907 pos = w1-j;
908 }
909
910 if(blend) {
911 // Safer blending using shift-and-add to avoid ambiguous operator+
912 leds[wb+pos] >>= 1;
913 leds[wb+pos] += (led >>= 1);
914 } else {
915 leds[wb+pos] = led;
916 }
917 }
918 }
919}
fl::CRGB leds[NUM_LEDS]
int y
Definition simple.h:93
int x
Definition simple.h:92
uint8_t pos
Definition Blur.ino:11
uint8_t hue_octaves
int yscale
uint8_t octaves
int xscale
uint32_t hue_time
static const int H
Definition PerfDisc.ino:20
#define FASTLED_STACK_ARRAY(TYPE, NAME, SIZE)
Stack-allocated array with automatic zero-initialization.
Definition alloca.h:32
CRGB blend(const CRGB &p1, const CRGB &p2, fract8 amountOfP2)
fl::size_t size_t
Definition cstddef.h:61
fl::hsv8 CHSV
Definition chsv.h:11
fl::CRGB CRGB
Definition crgb.h:25
void fill_raw_2dnoise8(fl::u8 *pData, int width, int height, fl::u8 octaves, fl::q44 freq44, fract8 amplitude, int skip, fl::u16 x, fl::i16 scalex, fl::u16 y, fl::i16 scaley, fl::u16 time)
Fill a 2D 8-bit buffer with noise, using inoise8()
unsigned char u8
Definition stdint.h:131
u8 u8 height
Definition blur.h:186
void * memset(void *s, int c, size_t n) FL_NOEXCEPT
u8 width
Definition blur.h:186

References blend(), FASTLED_STACK_ARRAY, fill_raw_2dnoise8(), H, hue_octaves, hue_time, leds, fl::memset(), octaves, pos, x, xscale, y, and yscale.

+ Here is the call graph for this function: