Progressive LED fading

I'm looking to control a LED fade timing with out using a delay and progressively changing the timing of the fade. How would i change the fade from slow to fast to slow? so it starts of fading slow and progressively gets faster until max brightness and then progressively gets slower then repeats. any ideas?

void fade(void)
{
unsigned long now;
now = millis();
if (now >= nextFade) {
nextFade = now + 100; // Next change in one second
if (fadeDir > 0) {
if (fadeBrightness > (255 - fadeDir)) {
fadeDir = - fadeDir;
}
}
else {
if (fadeBrightness < (-fadeDir)) {
fadeDir = - fadeDir;
}
}
fadeBrightness += fadeDir;
analogWrite(fadePin, fadeBrightness);
}
}

a variation

void fade(void)
{
  if (millis() - lastTime >= stepsize)      // subtraction prevents trouble when millis() overflows
  {
    lastTime = millis();  // declared global uint32_t lastTime;
    
    // must we change direction if the new value is out of range
    int newValue = int(fadeBrightness) + fadeDir;
    if ( newValue > 255  || newValue < 0)
    {
      fadeDir = - fadeDir
    }
    
    fadeBrightness += fadeDir;
    analogWrite(fadePin, fadeBrightness);
  }
}