pulser bugfix and minor optimizations
* pulser bugfix: " % cols" was missing so the effect would simply run out of visible range * float math: use optimized functions: sqrtf, fabsf * two more comments where code could be optimized, but I'm not sure what is thecorrect solution
This commit is contained in:
parent
17543535e3
commit
e2b4e60c9e
@ -2810,7 +2810,7 @@ uint16_t mode_bouncing_balls(void) {
|
|||||||
balls[i].lastBounceTime = time;
|
balls[i].lastBounceTime = time;
|
||||||
|
|
||||||
if (balls[i].impactVelocity < 0.015f) {
|
if (balls[i].impactVelocity < 0.015f) {
|
||||||
float impactVelocityStart = sqrt(-2 * gravity) * random8(5,11)/10.0f; // randomize impact velocity
|
float impactVelocityStart = sqrtf(-2.0f * gravity) * random8(5,11)/10.0f; // randomize impact velocity
|
||||||
balls[i].impactVelocity = impactVelocityStart;
|
balls[i].impactVelocity = impactVelocityStart;
|
||||||
}
|
}
|
||||||
} else if (balls[i].height > 1.0f) {
|
} else if (balls[i].height > 1.0f) {
|
||||||
@ -2968,7 +2968,7 @@ uint16_t mode_popcorn(void) {
|
|||||||
|
|
||||||
uint16_t peakHeight = 128 + random8(128); //0-255
|
uint16_t peakHeight = 128 + random8(128); //0-255
|
||||||
peakHeight = (peakHeight * (SEGLEN -1)) >> 8;
|
peakHeight = (peakHeight * (SEGLEN -1)) >> 8;
|
||||||
popcorn[i].vel = sqrt(-2.0 * gravity * peakHeight);
|
popcorn[i].vel = sqrtf(-2.0f * gravity * peakHeight);
|
||||||
|
|
||||||
if (SEGMENT.palette)
|
if (SEGMENT.palette)
|
||||||
{
|
{
|
||||||
@ -3267,7 +3267,7 @@ uint16_t mode_exploding_fireworks(void)
|
|||||||
flare->posX = strip.isMatrix ? random16(2,cols-1) : (SEGMENT.intensity > random8()); // will enable random firing side on 1D
|
flare->posX = strip.isMatrix ? random16(2,cols-1) : (SEGMENT.intensity > random8()); // will enable random firing side on 1D
|
||||||
uint16_t peakHeight = 75 + random8(180); //0-255
|
uint16_t peakHeight = 75 + random8(180); //0-255
|
||||||
peakHeight = (peakHeight * (rows -1)) >> 8;
|
peakHeight = (peakHeight * (rows -1)) >> 8;
|
||||||
flare->vel = sqrt(-2.0f * gravity * peakHeight);
|
flare->vel = sqrtf(-2.0f * gravity * peakHeight);
|
||||||
flare->velX = strip.isMatrix ? (random8(8)-4)/32.f : 0; // no X velocity on 1D
|
flare->velX = strip.isMatrix ? (random8(8)-4)/32.f : 0; // no X velocity on 1D
|
||||||
flare->col = 255; //brightness
|
flare->col = 255; //brightness
|
||||||
SEGENV.aux0 = 1;
|
SEGENV.aux0 = 1;
|
||||||
@ -4851,7 +4851,7 @@ uint16_t mode_2Dgameoflife(void) { // Written by Ewoud Wijma, inspired by https:
|
|||||||
|
|
||||||
for (int y = 0; y < rows; y++) for (int x = 0; x < cols; x++) prevLeds[XY(x,y)] = CRGB::Black;
|
for (int y = 0; y < rows; y++) for (int x = 0; x < cols; x++) prevLeds[XY(x,y)] = CRGB::Black;
|
||||||
memset(crcBuffer, 0, sizeof(uint16_t)*crcBufferLen);
|
memset(crcBuffer, 0, sizeof(uint16_t)*crcBufferLen);
|
||||||
} else if (strip.now - SEGENV.step < FRAMETIME_FIXED * map(SEGMENT.speed,0,255,64,4)) {
|
} else if (strip.now - SEGENV.step < FRAMETIME_FIXED * map(SEGMENT.speed,0,255,64,4)) { // warning: comparison between signed and unsigned integer expressions
|
||||||
// update only when appropriate time passes (in 42 FPS slots)
|
// update only when appropriate time passes (in 42 FPS slots)
|
||||||
return FRAMETIME;
|
return FRAMETIME;
|
||||||
}
|
}
|
||||||
@ -5295,7 +5295,7 @@ uint16_t mode_2DPolarLights(void) { // By: Kostyantyn Matviyevskyy https
|
|||||||
SEGENV.step = 0;
|
SEGENV.step = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
float adjustHeight = (float)map(rows, 8, 32, 28, 12);
|
float adjustHeight = (float)map(rows, 8, 32, 28, 12); // maybe use mapf() ???
|
||||||
uint16_t adjScale = map(cols, 8, 64, 310, 63);
|
uint16_t adjScale = map(cols, 8, 64, 310, 63);
|
||||||
/*
|
/*
|
||||||
if (SEGENV.aux1 != SEGMENT.custom1/12) { // Hacky palette rotation. We need that black.
|
if (SEGENV.aux1 != SEGMENT.custom1/12) { // Hacky palette rotation. We need that black.
|
||||||
@ -5321,7 +5321,7 @@ uint16_t mode_2DPolarLights(void) { // By: Kostyantyn Matviyevskyy https
|
|||||||
SEGMENT.setPixelColorXY(x, y, ColorFromPalette(auroraPalette,
|
SEGMENT.setPixelColorXY(x, y, ColorFromPalette(auroraPalette,
|
||||||
qsub8(
|
qsub8(
|
||||||
inoise8((SEGENV.step%2) + x * _scale, y * 16 + SEGENV.step % 16, SEGENV.step / _speed),
|
inoise8((SEGENV.step%2) + x * _scale, y * 16 + SEGENV.step % 16, SEGENV.step / _speed),
|
||||||
fabs((float)rows / 2 - (float)y) * adjustHeight)));
|
fabsf((float)rows / 2.0f - (float)y) * adjustHeight)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5336,7 +5336,7 @@ static const char _data_FX_MODE_2DPOLARLIGHTS[] PROGMEM = "Polar Lights@!,Scale;
|
|||||||
uint16_t mode_2DPulser(void) { // By: ldirko https://editor.soulmatelights.com/gallery/878-pulse-test , modifed by: Andrew Tuline
|
uint16_t mode_2DPulser(void) { // By: ldirko https://editor.soulmatelights.com/gallery/878-pulse-test , modifed by: Andrew Tuline
|
||||||
if (!strip.isMatrix) return mode_static(); // not a 2D set-up
|
if (!strip.isMatrix) return mode_static(); // not a 2D set-up
|
||||||
|
|
||||||
//const uint16_t cols = SEGMENT.virtualWidth();
|
const uint16_t cols = SEGMENT.virtualWidth();
|
||||||
const uint16_t rows = SEGMENT.virtualHeight();
|
const uint16_t rows = SEGMENT.virtualHeight();
|
||||||
|
|
||||||
if (SEGENV.call == 0) {
|
if (SEGENV.call == 0) {
|
||||||
@ -5346,8 +5346,8 @@ uint16_t mode_2DPulser(void) { // By: ldirko https://edi
|
|||||||
|
|
||||||
SEGMENT.fadeToBlackBy(8 - (SEGMENT.intensity>>5));
|
SEGMENT.fadeToBlackBy(8 - (SEGMENT.intensity>>5));
|
||||||
|
|
||||||
uint16_t a = strip.now / (18 - SEGMENT.speed / 16);
|
uint32_t a = strip.now / (18 - SEGMENT.speed / 16);
|
||||||
uint16_t x = (a / 14);
|
uint16_t x = (a / 14) % cols;
|
||||||
uint16_t y = map((sin8(a * 5) + sin8(a * 4) + sin8(a * 2)), 0, 765, rows-1, 0);
|
uint16_t y = map((sin8(a * 5) + sin8(a * 4) + sin8(a * 2)), 0, 765, rows-1, 0);
|
||||||
SEGMENT.setPixelColorXY(x, y, ColorFromPalette(SEGPALETTE, map(y, 0, rows-1, 0, 255), 255, LINEARBLEND));
|
SEGMENT.setPixelColorXY(x, y, ColorFromPalette(SEGPALETTE, map(y, 0, rows-1, 0, 255), 255, LINEARBLEND));
|
||||||
|
|
||||||
@ -5773,13 +5773,13 @@ uint16_t mode_2Dfloatingblobs(void) {
|
|||||||
// change radius if needed
|
// change radius if needed
|
||||||
if (blob->grow[i]) {
|
if (blob->grow[i]) {
|
||||||
// enlarge radius until it is >= 4
|
// enlarge radius until it is >= 4
|
||||||
blob->r[i] += (fabs(blob->sX[i]) > fabs(blob->sY[i]) ? fabs(blob->sX[i]) : fabs(blob->sY[i])) * 0.05f;
|
blob->r[i] += (fabsf(blob->sX[i]) > fabsf(blob->sY[i]) ? fabsf(blob->sX[i]) : fabsf(blob->sY[i])) * 0.05f;
|
||||||
if (blob->r[i] >= MIN(cols/4.f,2.f)) {
|
if (blob->r[i] >= MIN(cols/4.f,2.f)) {
|
||||||
blob->grow[i] = false;
|
blob->grow[i] = false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// reduce radius until it is < 1
|
// reduce radius until it is < 1
|
||||||
blob->r[i] -= (fabs(blob->sX[i]) > fabs(blob->sY[i]) ? fabs(blob->sX[i]) : fabs(blob->sY[i])) * 0.05f;
|
blob->r[i] -= (fabsf(blob->sX[i]) > fabsf(blob->sY[i]) ? fabsf(blob->sX[i]) : fabsf(blob->sY[i])) * 0.05f;
|
||||||
if (blob->r[i] < 1.f) {
|
if (blob->r[i] < 1.f) {
|
||||||
blob->grow[i] = true;
|
blob->grow[i] = true;
|
||||||
}
|
}
|
||||||
@ -7019,7 +7019,7 @@ uint16_t mode_rocktaves(void) { // Rocktaves. Same note from eac
|
|||||||
}
|
}
|
||||||
|
|
||||||
frTemp -=132; // This should give us a base musical note of C3
|
frTemp -=132; // This should give us a base musical note of C3
|
||||||
frTemp = fabs(frTemp * 2.1); // Fudge factors to compress octave range starting at 0 and going to 255;
|
frTemp = fabsf(frTemp * 2.1f); // Fudge factors to compress octave range starting at 0 and going to 255;
|
||||||
|
|
||||||
uint16_t i = map(beatsin8(8+octCount*4, 0, 255, 0, octCount*8), 0, 255, 0, SEGLEN-1);
|
uint16_t i = map(beatsin8(8+octCount*4, 0, 255, 0, octCount*8), 0, 255, 0, SEGLEN-1);
|
||||||
i = constrain(i, 0, SEGLEN-1);
|
i = constrain(i, 0, SEGLEN-1);
|
||||||
|
Loading…
Reference in New Issue
Block a user