FastLED 3.10.8
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 922 of file noise.cpp.hpp.

924 {
925 const size_t array_size = (size_t)height * width;
926 if (array_size <= 0) return;
927 FASTLED_STACK_ARRAY(fl::u8, V, array_size);
928 FASTLED_STACK_ARRAY(fl::u8, H, array_size);
929
930 fl::memset(V,0,height*width);
931 fl::memset(H,0,height*width);
932
933 fill_raw_2dnoise8((fl::u8*)V,width,height,octaves,x,xscale,y,yscale,time);
934 fill_raw_2dnoise8((fl::u8*)H,width,height,hue_octaves,hue_x,hue_xscale,hue_y,hue_yscale,hue_time);
935
936 int w1 = width-1;
937 int h1 = height-1;
938 for(int i = 0; i < height; ++i) {
939 int wb = i*width;
940 for(int j = 0; j < width; ++j) {
941 CRGB led(CHSV(H[(h1-i)*width + (w1-j)], 255, V[i*width + j]));
942
943 int pos = j;
944 if(serpentine && (i & 0x1)) {
945 pos = w1-j;
946 }
947
948 if(blend) {
949 // Safer blending using shift-and-add to avoid ambiguous operator+
950 leds[wb+pos] >>= 1;
951 leds[wb+pos] += (led >>= 1);
952 } else {
953 leds[wb+pos] = led;
954 }
955 }
956 }
957}
CRGB leds[1]
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:21
#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_NO_EXCEPT
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) FL_NO_EXCEPT
Fill a 2D 8-bit buffer with noise, using inoise8()
unsigned char u8
Definition stdint.h:131
u8 u8 height
Definition blur.h:186
FASTLED_FORCE_INLINE void * memset(void *s, int c, size_t n) FL_NO_EXCEPT
Definition cstring.h:148
u8 width
Definition blur.h:186
fl::size size_t
Definition stdint.h:222

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

Referenced by fill_raw_2dnoise16into8().

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