1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #pragma once
- // Taken from: https://github.com/nothings/stb/blob/master/stb_perlin.h
- //
- // stb_perlin.h - v0.3 - perlin noise
- // public domain single-file C implementation by Sean Barrett
- //
- // LICENSE
- //
- // See cpp file.
- //
- // Contributors:
- // Jack Mott - additional noise functions
- //
- // float PerlinNoise3(float x,
- // float y,
- // float z,
- // int x_wrap = 0,
- // int y_wrap = 0,
- // int z_wrap = 0)
- //
- // This function computes a random value at the coordinate (x,y,z).
- // Adjacent random values are continuous but the noise fluctuates
- // its randomness with period 1, i.e. takes on wholly unrelated values
- // at integer points. Specifically, this implements Ken Perlin's
- // revised noise function from 2002.
- //
- // The "wrap" parameters can be used to create wraparound noise that
- // wraps at powers of two. The numbers MUST be powers of two. Specify
- // 0 to mean "don't care". (The noise always wraps every 256 due
- // details of the implementation, even if you ask for larger or no
- // wrapping.)
- //
- // Fractal Noise:
- //
- // Three common fractal noise functions are included, which produce
- // a wide variety of nice effects depending on the parameters
- // provided. Note that each function will call PerlinNoise3
- // 'octaves' times, so this parameter will affect runtime.
- //
- // float PerlinRidgeNoise3(float x, float y, float z,
- // float lacunarity, float gain, float offset, int octaves,
- // int x_wrap, int y_wrap, int z_wrap);
- //
- // float PerlinFBMNoise3(float x, float y, float z,
- // float lacunarity, float gain, int octaves,
- // int x_wrap, int y_wrap, int z_wrap);
- //
- // float PerlinTurbulenceNoise3(float x, float y, float z,
- // float lacunarity, float gain,int octaves,
- // int x_wrap, int y_wrap, int z_wrap);
- //
- // Typical values to start playing with:
- // octaves = 6 -- number of "octaves" of noise3() to sum
- // lacunarity = ~ 2.0 -- spacing between successive octaves (use exactly 2.0 for wrapping output)
- // gain = 0.5 -- relative weighting applied to each successive octave
- // offset = 1.0? -- used to invert the ridges, may need to be larger, not sure
- //
- float PerlinNoise3(float x, float y, float z, int x_wrap, int y_wrap, int z_wrap);
- float PerlinRidgeNoise3(float x, float y, float z, float lacunarity, float gain, float offset, int octaves, int x_wrap, int y_wrap, int z_wrap);
- float PerlinFBMNoise3(float x, float y, float z, float lacunarity, float gain, int octaves,int x_wrap, int y_wrap, int z_wrap);
- float PerlinTurbulenceNoise3(float x, float y, float z, float lacunarity, float gain, int octaves, int x_wrap, int y_wrap, int z_wrap);
|