--- deliantra/server/include/noise.h 2011/04/23 05:42:11 1.7 +++ deliantra/server/include/noise.h 2011/04/26 03:18:07 1.8 @@ -54,8 +54,9 @@ template<> struct noise_gen { + static vec2d::T_numtype abs_avg() { return 0.2231; } // avg(abs(noise)) + permutation<256, uint8_t> rvmap[2]; - vec2d rvec[256]; // random unit vectors noise_gen (uint32_t seed); vec2d::T_numtype operator() (vec2d P); @@ -64,6 +65,8 @@ template<> struct noise_gen { + static vec3d::T_numtype abs_avg() { return 0.415; } // avg(abs(noise)) + permutation<256, uint8_t> rvmap[3]; noise_gen (uint32_t seed); @@ -112,7 +115,7 @@ struct frac_gen : noise_gen { - enum { MAX_OCTAVES = 64 }; + enum { MAX_OCTAVES = 32 }; typedef typename vec_t::T_numtype value_t; @@ -125,16 +128,17 @@ return operator() (P); } - frac_gen (value_t hurst_expo = .5f, value_t lacunarity = 2.f); + frac_gen (value_t hurst_expo = .5, value_t lacunarity = 2); value_t fBm (vec_t P, int octaves); value_t turbulence (vec_t P, int octaves); value_t multifractal (vec_t P, int octaves, value_t offset = 1); value_t heterofractal (vec_t P, int octaves, value_t offset = 1); value_t hybridfractal (vec_t P, int octaves, value_t offset = 1, value_t gain = 1); + value_t ridgedmultifractal (vec_t P, int octaves, value_t offset = 1, value_t gain = 8); + value_t billowfractal (vec_t P, int octaves, value_t offset = 1, value_t gain = 2); value_t terrain (vec_t P, int octaves); value_t terrain2 (vec_t P, int octaves); - value_t ridgedmultifractal (vec_t P, int octaves, value_t offset = 1, value_t gain = 8); }; #endif