Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/blenlib/BLI_noise.hh')
-rw-r--r--source/blender/blenlib/BLI_noise.hh40
1 files changed, 35 insertions, 5 deletions
diff --git a/source/blender/blenlib/BLI_noise.hh b/source/blender/blenlib/BLI_noise.hh
index 760ff082d06..7e1655f7864 100644
--- a/source/blender/blenlib/BLI_noise.hh
+++ b/source/blender/blenlib/BLI_noise.hh
@@ -22,36 +22,66 @@
namespace blender::noise {
-/* Perlin noise in the range [-1, 1]. */
+/* --------------------------------------------------------------------
+ * Hash functions.
+
+ * Create a randomized hash from the given inputs. Contrary to hash functions in `BLI_hash.hh`
+ * these functions produce better randomness but are more expensive to compute.
+ */
+
+/* Hash integers to `uint32_t`. */
+uint32_t hash(uint32_t kx);
+uint32_t hash(uint32_t kx, uint32_t ky);
+uint32_t hash(uint32_t kx, uint32_t ky, uint32_t kz);
+uint32_t hash(uint32_t kx, uint32_t ky, uint32_t kz, uint32_t kw);
+
+/* Hash floats to `uint32_t`. */
+uint32_t hash_float(float kx);
+uint32_t hash_float(float2 k);
+uint32_t hash_float(float3 k);
+uint32_t hash_float(float4 k);
+
+/* Hash integers to `float` between 0 and 1. */
+float hash_to_float(uint32_t kx);
+float hash_to_float(uint32_t kx, uint32_t ky);
+float hash_to_float(uint32_t kx, uint32_t ky, uint32_t kz);
+float hash_to_float(uint32_t kx, uint32_t ky, uint32_t kz, uint32_t kw);
+
+/* Hash floats to `float` between 0 and 1. */
+float hash_float_to_float(float k);
+float hash_float_to_float(float2 k);
+float hash_float_to_float(float3 k);
+float hash_float_to_float(float4 k);
+/* --------------------------------------------------------------------
+ * Perlin noise.
+ */
+
+/* Perlin noise in the range [-1, 1]. */
float perlin_signed(float position);
float perlin_signed(float2 position);
float perlin_signed(float3 position);
float perlin_signed(float4 position);
/* Perlin noise in the range [0, 1]. */
-
float perlin(float position);
float perlin(float2 position);
float perlin(float3 position);
float perlin(float4 position);
/* Fractal perlin noise in the range [0, 1]. */
-
float perlin_fractal(float position, float octaves, float roughness);
float perlin_fractal(float2 position, float octaves, float roughness);
float perlin_fractal(float3 position, float octaves, float roughness);
float perlin_fractal(float4 position, float octaves, float roughness);
/* Positive distorted fractal perlin noise. */
-
float perlin_fractal_distorted(float position, float octaves, float roughness, float distortion);
float perlin_fractal_distorted(float2 position, float octaves, float roughness, float distortion);
float perlin_fractal_distorted(float3 position, float octaves, float roughness, float distortion);
float perlin_fractal_distorted(float4 position, float octaves, float roughness, float distortion);
/* Positive distorted fractal perlin noise that outputs a float3. */
-
float3 perlin_float3_fractal_distorted(float position,
float octaves,
float roughness,