Generate voxel terrain with Perlin Noise
For your:

            if (colorR &gt;= colorMaxCap)
                colorR = colorMaxCap;
            if (colorG &gt;= colorMaxCap)
                colorG = colorMaxCap;
            if (colorB &gt;= colorMaxCap)
                colorB = colorMaxCap;
            if (colorR &lt;= colorMinCap)
                colorR = colorMinCap;
            if (colorG &lt;= colorMinCap)
                colorG = colorMinCap;
            if (colorB &lt;= colorMinCap)
                colorB = colorMinCap;


This can be reduced using a suggestion from here:

inline float clip(float n, float lower, float upper) {
  return std::max(lower, std::min(n, upper));
}


And then do:

clip(colorR, colorMinCap, colorMaxCap);
clip(colorG, colorMinCap, colorMaxCap);
clip(colorB, colorMinCap, colorMaxCap);


I don't believe you will lose any performance from that.

Also, try adding OpenMP to your project and right before the first for loop add:

#pragma omp parallel for


This should parallelize the first loop (don't nest pragmas), and make your code run faster. Although, I am assuming (after a not too thorough review) that the any particular iteration does not depend on a previous iteration. Although it should, as Perlin Noise is "embarrassingly parallel".