+enum NoiseType
+{
+ NOISE_CONSTANT_ONE,
+ NOISE_PERLIN,
+ NOISE_PERLIN_ABS,
+ NOISE_PERLIN_CONTOUR,
+ NOISE_PERLIN_CONTOUR_FLIP_YZ,
+};
+
+struct NoiseParams
+{
+ NoiseType type;
+ int seed;
+ int octaves;
+ double persistence;
+ double pos_scale;
+ double noise_scale; // Useful for contour noises
+
+ NoiseParams(NoiseType type_=NOISE_PERLIN, int seed_=0,
+ int octaves_=3, double persistence_=0.5,
+ double pos_scale_=100.0, double noise_scale_=1.0):
+ type(type_),
+ seed(seed_),
+ octaves(octaves_),
+ persistence(persistence_),
+ pos_scale(pos_scale_),
+ noise_scale(noise_scale_)
+ {
+ }
+};
+
+double noise3d_param(const NoiseParams ¶m, double x, double y, double z);
+