Blender  V3.3
BLI_noise.hh
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #pragma once
4 
5 #include "BLI_math_vec_types.hh"
6 
7 namespace blender::noise {
8 
9 /* -------------------------------------------------------------------- */
16 /* Hash integers to `uint32_t`. */
17 
22 
23 /* Hash floats to `uint32_t`. */
24 
25 uint32_t hash_float(float kx);
29 
30 /* Hash integers to `float` between 0 and 1. */
31 
32 float hash_to_float(uint32_t kx);
33 float hash_to_float(uint32_t kx, uint32_t ky);
34 float hash_to_float(uint32_t kx, uint32_t ky, uint32_t kz);
35 float hash_to_float(uint32_t kx, uint32_t ky, uint32_t kz, uint32_t kw);
36 
37 /* Hash floats to `float` between 0 and 1. */
38 
39 float hash_float_to_float(float k);
43 
45 
50 
52 
55 /* -------------------------------------------------------------------- */
59 /* Perlin noise in the range [-1, 1]. */
60 
61 float perlin_signed(float position);
62 float perlin_signed(float2 position);
63 float perlin_signed(float3 position);
64 float perlin_signed(float4 position);
65 
66 /* Perlin noise in the range [0, 1]. */
67 
68 float perlin(float position);
69 float perlin(float2 position);
70 float perlin(float3 position);
71 float perlin(float4 position);
72 
73 /* Fractal perlin noise in the range [0, 1]. */
74 
75 float perlin_fractal(float position, float octaves, float roughness);
76 float perlin_fractal(float2 position, float octaves, float roughness);
77 float perlin_fractal(float3 position, float octaves, float roughness);
78 float perlin_fractal(float4 position, float octaves, float roughness);
79 
80 /* Positive distorted fractal perlin noise. */
81 
82 float perlin_fractal_distorted(float position, float octaves, float roughness, float distortion);
83 float perlin_fractal_distorted(float2 position, float octaves, float roughness, float distortion);
84 float perlin_fractal_distorted(float3 position, float octaves, float roughness, float distortion);
85 float perlin_fractal_distorted(float4 position, float octaves, float roughness, float distortion);
86 
87 /* Positive distorted fractal perlin noise that outputs a float3. */
88 
90  float octaves,
91  float roughness,
92  float distortion);
94  float octaves,
95  float roughness,
96  float distortion);
98  float octaves,
99  float roughness,
100  float distortion);
102  float octaves,
103  float roughness,
104  float distortion);
105 
108 /* -------------------------------------------------------------------- */
121  float co, float H, float lacunarity, float octaves, float offset, float gain);
131  const float2 co, float H, float lacunarity, float octaves, float offset, float gain);
141  const float3 co, float H, float lacunarity, float octaves, float offset, float gain);
151  const float4 co, float H, float lacunarity, float octaves, float offset, float gain);
152 
162  float co, float H, float lacunarity, float octaves, float offset, float gain);
172  const float2 co, float H, float lacunarity, float octaves, float offset, float gain);
182  const float3 co, float H, float lacunarity, float octaves, float offset, float gain);
192  const float4 co, float H, float lacunarity, float octaves, float offset, float gain);
193 
201 float musgrave_fBm(float co, float H, float lacunarity, float octaves);
202 
210 float musgrave_fBm(const float2 co, float H, float lacunarity, float octaves);
218 float musgrave_fBm(const float3 co, float H, float lacunarity, float octaves);
226 float musgrave_fBm(const float4 co, float H, float lacunarity, float octaves);
227 
235 float musgrave_multi_fractal(float co, float H, float lacunarity, float octaves);
243 float musgrave_multi_fractal(const float2 co, float H, float lacunarity, float octaves);
251 float musgrave_multi_fractal(const float3 co, float H, float lacunarity, float octaves);
259 float musgrave_multi_fractal(const float4 co, float H, float lacunarity, float octaves);
260 
269 float musgrave_hetero_terrain(float co, float H, float lacunarity, float octaves, float offset);
279  const float2 co, float H, float lacunarity, float octaves, float offset);
289  const float3 co, float H, float lacunarity, float octaves, float offset);
299  const float4 co, float H, float lacunarity, float octaves, float offset);
300 
303 /* -------------------------------------------------------------------- */
307 void voronoi_f1(float w, float randomness, float *r_distance, float3 *r_color, float *r_w);
308 void voronoi_smooth_f1(
309  float w, float smoothness, float randomness, float *r_distance, float3 *r_color, float *r_w);
310 void voronoi_f2(float w, float randomness, float *r_distance, float3 *r_color, float *r_w);
311 void voronoi_distance_to_edge(float w, float randomness, float *r_distance);
312 void voronoi_n_sphere_radius(float w, float randomness, float *r_radius);
313 
314 void voronoi_f1(const float2 coord,
315  float exponent,
316  float randomness,
317  int metric,
318  float *r_distance,
319  float3 *r_color,
320  float2 *r_position);
321 void voronoi_smooth_f1(const float2 coord,
322  float smoothness,
323  float exponent,
324  float randomness,
325  int metric,
326  float *r_distance,
327  float3 *r_color,
328  float2 *r_position);
329 void voronoi_f2(const float2 coord,
330  float exponent,
331  float randomness,
332  int metric,
333  float *r_distance,
334  float3 *r_color,
335  float2 *r_position);
336 void voronoi_distance_to_edge(const float2 coord, float randomness, float *r_distance);
337 void voronoi_n_sphere_radius(const float2 coord, float randomness, float *r_radius);
338 
339 void voronoi_f1(const float3 coord,
340  float exponent,
341  float randomness,
342  int metric,
343  float *r_distance,
344  float3 *r_color,
345  float3 *r_position);
346 void voronoi_smooth_f1(const float3 coord,
347  float smoothness,
348  float exponent,
349  float randomness,
350  int metric,
351  float *r_distance,
352  float3 *r_color,
353  float3 *r_position);
354 void voronoi_f2(const float3 coord,
355  float exponent,
356  float randomness,
357  int metric,
358  float *r_distance,
359  float3 *r_color,
360  float3 *r_position);
361 void voronoi_distance_to_edge(const float3 coord, float randomness, float *r_distance);
362 void voronoi_n_sphere_radius(const float3 coord, float randomness, float *r_radius);
363 
364 void voronoi_f1(const float4 coord,
365  float exponent,
366  float randomness,
367  int metric,
368  float *r_distance,
369  float3 *r_color,
370  float4 *r_position);
371 void voronoi_smooth_f1(const float4 coord,
372  float smoothness,
373  float exponent,
374  float randomness,
375  int metric,
376  float *r_distance,
377  float3 *r_color,
378  float4 *r_position);
379 void voronoi_f2(const float4 coord,
380  float exponent,
381  float randomness,
382  int metric,
383  float *r_distance,
384  float3 *r_color,
385  float4 *r_position);
386 void voronoi_distance_to_edge(const float4 coord, float randomness, float *r_distance);
387 void voronoi_n_sphere_radius(const float4 coord, float randomness, float *r_radius);
388 
391 } // namespace blender::noise
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
Definition: btQuadWord.h:119
ccl_gpu_kernel_postfix ccl_global float int int int int float bool int offset
#define H(x, y, z)
void voronoi_n_sphere_radius(float w, float randomness, float *r_radius)
Definition: noise.cc:1514
void voronoi_smooth_f1(float w, float smoothness, float randomness, float *r_distance, float3 *r_color, float *r_w)
Definition: noise.cc:1411
float perlin_fractal_distorted(float position, float octaves, float roughness, float distortion)
Definition: noise.cc:643
float perlin_fractal(float position, float octaves, float roughness)
Definition: noise.cc:560
void voronoi_distance_to_edge(float w, float randomness, float *r_distance)
Definition: noise.cc:1498
uint32_t hash_float(float kx)
Definition: noise.cc:129
float hash_float_to_float(float k)
Definition: noise.cc:178
float perlin_signed(float position)
Definition: noise.cc:489
float perlin(float position)
Definition: noise.cc:511
float musgrave_multi_fractal(float co, float H, float lacunarity, float octaves)
Definition: noise.cc:747
float musgrave_ridged_multi_fractal(float co, float H, float lacunarity, float octaves, float offset, float gain)
Definition: noise.cc:843
float musgrave_fBm(float co, float H, float lacunarity, float octaves)
Definition: noise.cc:720
float musgrave_hybrid_multi_fractal(float co, float H, float lacunarity, float octaves, float offset, float gain)
Definition: noise.cc:803
float3 hash_float_to_float3(float k)
Definition: noise.cc:203
uint32_t hash(uint32_t kx)
Definition: noise.cc:67
float musgrave_hetero_terrain(float co, float H, float lacunarity, float octaves, float offset)
Definition: noise.cc:772
float4 hash_float_to_float4(float4 k)
Definition: noise.cc:231
void voronoi_f1(float w, float randomness, float *r_distance, float3 *r_color, float *r_w)
Definition: noise.cc:1380
float3 perlin_float3_fractal_distorted(float position, float octaves, float roughness, float distortion)
Definition: noise.cc:670
float2 hash_float_to_float2(float2 k)
Definition: noise.cc:198
void voronoi_f2(float w, float randomness, float *r_distance, float3 *r_color, float *r_w)
Definition: noise.cc:1456
float hash_to_float(uint32_t kx)
Definition: noise.cc:156
static const pxr::TfToken roughness("roughness", pxr::TfToken::Immortal)
unsigned int uint32_t
Definition: stdint.h:80