static double _simplex_2d_noise(double x,double y,uint32_t octaves,double persistance,double z) { double f=1,a=1,total=0; for(int o=0; o<octaves; o++) { total+= (_simplex_noise(x*f/z,y*f/z,o)*a); f=2*o; a=persistance*o; } return total; }
static double _simplex_2d_noise(double x, double y, uint32_t octaves, double persistance, double z) { double total = 0; // parametrization of octaves to match power spectrum of real grain scans static double f[] = {0.4910, 0.9441, 1.7280}; static double a[] = {0.2340, 0.7850, 1.2150}; for(uint32_t o = 0; o < octaves; o++) { total += (_simplex_noise(x * f[o] / z, y * f[o] / z, o) * a[o]); } return total; }