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 898 of file noise.cpp.

900 {
901 const size_t array_size = (size_t)height * width;
902 if (array_size <= 0) return;
903 FASTLED_STACK_ARRAY(uint8_t, V, array_size);
904 FASTLED_STACK_ARRAY(uint8_t, H, array_size);
905
906 memset(V,0,height*width);
907 memset(H,0,height*width);
908
909 fill_raw_2dnoise8((uint8_t*)V,width,height,octaves,x,xscale,y,yscale,time);
910 fill_raw_2dnoise8((uint8_t*)H,width,height,hue_octaves,hue_x,hue_xscale,hue_y,hue_yscale,hue_time);
911
912 int w1 = width-1;
913 int h1 = height-1;
914 for(int i = 0; i < height; ++i) {
915 int wb = i*width;
916 for(int j = 0; j < width; ++j) {
917 CRGB led(CHSV(H[(h1-i)*width + (w1-j)], 255, V[i*width + j]));
918
919 int pos = j;
920 if(serpentine && (i & 0x1)) {
921 pos = w1-j;
922 }
923
924 if(blend) {
925 // Safer blending to avoid potential undefined behavior
926 CRGB temp = leds[wb+pos];
927 temp.nscale8(128); // Scale by 50%
928 led.nscale8(128);
929 leds[wb+pos] = temp + led;
930 } else {
931 leds[wb+pos] = led;
932 }
933 }
934 }
935}
CRGB leds[NUM_LEDS]
Definition Apa102.ino:11
int y
Definition Audio.ino:72
int x
Definition Audio.ino:71
uint8_t pos
Definition Blur.ino:11
uint8_t hue_octaves
int yscale
uint8_t octaves
int xscale
uint32_t hue_time
#define FASTLED_STACK_ARRAY(TYPE, NAME, SIZE)
Definition array.h:169
CRGB blend(const CRGB &p1, const CRGB &p2, fract8 amountOfP2)
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:732
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:88
Representation of an RGB pixel (Red, Green, Blue)
Definition crgb.h:55

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

+ Here is the call graph for this function: