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

◆ fill_2dnoise8()

void fill_2dnoise8 ( CRGB * leds,
int width,
int height,
bool serpentine,
uint8_t octaves,
uint16_t x,
int xscale,
uint16_t y,
int yscale,
uint16_t time,
uint8_t hue_octaves,
uint16_t hue_x,
int hue_xscale,
uint16_t hue_y,
uint16_t hue_yscale,
uint16_t 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 924 of file noise.cpp.

926 {
927 const size_t array_size = (size_t)height * width;
928 if (array_size <= 0) return;
929 VARIABLE_LENGTH_ARRAY(uint8_t, V, array_size);
930 VARIABLE_LENGTH_ARRAY(uint8_t, H, array_size);
931
932 memset(V,0,height*width);
933 memset(H,0,height*width);
934
935 fill_raw_2dnoise8((uint8_t*)V,width,height,octaves,x,xscale,y,yscale,time);
936 fill_raw_2dnoise8((uint8_t*)H,width,height,hue_octaves,hue_x,hue_xscale,hue_y,hue_yscale,hue_time);
937
938 int w1 = width-1;
939 int h1 = height-1;
940 for(int i = 0; i < height; ++i) {
941 int wb = i*width;
942 for(int j = 0; j < width; ++j) {
943 CRGB led(CHSV(H[(h1-i)*width + (w1-j)], 255, V[i*width + j]));
944
945 int pos = j;
946 if(serpentine && (i & 0x1)) {
947 pos = w1-j;
948 }
949
950 if(blend) {
951 // Safer blending to avoid potential undefined behavior
952 CRGB temp = leds[wb+pos];
953 temp.nscale8(128); // Scale by 50%
954 led.nscale8(128);
955 leds[wb+pos] = temp + led;
956 } else {
957 leds[wb+pos] = led;
958 }
959 }
960 }
961}
CRGB leds[NUM_LEDS]
Definition Apa102.ino:11
uint8_t pos
Definition Blur.ino:11
uint32_t x[NUM_LAYERS]
Definition Fire2023.ino:80
uint32_t y[NUM_LAYERS]
Definition Fire2023.ino:81
uint8_t hue_octaves
int yscale
uint8_t octaves
int xscale
uint32_t hue_time
CRGB blend(const CRGB &p1, const CRGB &p2, fract8 amountOfP2)
Computes a new color blended some fraction of the way between two other colors.
void fill_raw_2dnoise8(uint8_t *pData, int width, int height, uint8_t octaves, q44 freq44, fract8 amplitude, int skip, uint16_t x, int16_t scalex, uint16_t y, int16_t scaley, uint16_t time)
Fill a 2D 8-bit buffer with noise, using inoise8()
Definition noise.cpp:758
#define VARIABLE_LENGTH_ARRAY(TYPE, NAME, SIZE)
Definition noise.cpp:19
Representation of an HSV pixel (hue, saturation, value (aka brightness)).
Definition chsv.h:16
CRGB & nscale8(uint8_t scaledown)
Scale down a RGB to N/256ths of its current brightness, using "plain math" dimming rules.
Definition crgb.cpp:72
Representation of an RGB pixel (Red, Green, Blue)
Definition crgb.h:54

References blend(), fill_raw_2dnoise8(), hue_octaves, hue_time, leds, CRGB::nscale8(), octaves, pos, VARIABLE_LENGTH_ARRAY, x, xscale, y, and yscale.

+ Here is the call graph for this function: