Blender  V3.3
Namespaces
BLI_noise.hh File Reference
#include "BLI_math_vec_types.hh"

Go to the source code of this file.

Namespaces

 blender
 
 blender::noise
 

Functions

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.

uint32_t blender::noise::hash (uint32_t kx)
 
uint32_t blender::noise::hash (uint32_t kx, uint32_t ky)
 
uint32_t blender::noise::hash (uint32_t kx, uint32_t ky, uint32_t kz)
 
uint32_t blender::noise::hash (uint32_t kx, uint32_t ky, uint32_t kz, uint32_t kw)
 
uint32_t blender::noise::hash_float (float kx)
 
uint32_t blender::noise::hash_float (float2 k)
 
uint32_t blender::noise::hash_float (float3 k)
 
uint32_t blender::noise::hash_float (float4 k)
 
float blender::noise::hash_to_float (uint32_t kx)
 
float blender::noise::hash_to_float (uint32_t kx, uint32_t ky)
 
float blender::noise::hash_to_float (uint32_t kx, uint32_t ky, uint32_t kz)
 
float blender::noise::hash_to_float (uint32_t kx, uint32_t ky, uint32_t kz, uint32_t kw)
 
float blender::noise::hash_float_to_float (float k)
 
float blender::noise::hash_float_to_float (float2 k)
 
float blender::noise::hash_float_to_float (float3 k)
 
float blender::noise::hash_float_to_float (float4 k)
 
float2 blender::noise::hash_float_to_float2 (float2 k)
 
float3 blender::noise::hash_float_to_float3 (float k)
 
float3 blender::noise::hash_float_to_float3 (float2 k)
 
float3 blender::noise::hash_float_to_float3 (float3 k)
 
float3 blender::noise::hash_float_to_float3 (float4 k)
 
float4 blender::noise::hash_float_to_float4 (float4 k)
 
Perlin Noise

Perlin, Ken. "Improving noise." Proceedings of the 29th annual conference on Computer graphics and interactive techniques. 2002.

This implementation is functionally identical to the implementations in EEVEE, OSL, and SVM. So any changes should be applied in all relevant implementations.

float blender::noise::perlin_signed (float position)
 
float blender::noise::perlin_signed (float2 position)
 
float blender::noise::perlin_signed (float3 position)
 
float blender::noise::perlin_signed (float4 position)
 
float blender::noise::perlin (float position)
 
float blender::noise::perlin (float2 position)
 
float blender::noise::perlin (float3 position)
 
float blender::noise::perlin (float4 position)
 
float blender::noise::perlin_fractal (float position, float octaves, float roughness)
 
float blender::noise::perlin_fractal (float2 position, float octaves, float roughness)
 
float blender::noise::perlin_fractal (float3 position, float octaves, float roughness)
 
float blender::noise::perlin_fractal (float4 position, float octaves, float roughness)
 
float blender::noise::perlin_fractal_distorted (float position, float octaves, float roughness, float distortion)
 
float blender::noise::perlin_fractal_distorted (float2 position, float octaves, float roughness, float distortion)
 
float blender::noise::perlin_fractal_distorted (float3 position, float octaves, float roughness, float distortion)
 
float blender::noise::perlin_fractal_distorted (float4 position, float octaves, float roughness, float distortion)
 
float3 blender::noise::perlin_float3_fractal_distorted (float position, float octaves, float roughness, float distortion)
 
float3 blender::noise::perlin_float3_fractal_distorted (float2 position, float octaves, float roughness, float distortion)
 
float3 blender::noise::perlin_float3_fractal_distorted (float3 position, float octaves, float roughness, float distortion)
 
float3 blender::noise::perlin_float3_fractal_distorted (float4 position, float octaves, float roughness, float distortion)
 
Musgrave Multi Fractal
float blender::noise::musgrave_ridged_multi_fractal (float co, float H, float lacunarity, float octaves, float offset, float gain)
 
float blender::noise::musgrave_ridged_multi_fractal (const float2 co, float H, float lacunarity, float octaves, float offset, float gain)
 
float blender::noise::musgrave_ridged_multi_fractal (const float3 co, float H, float lacunarity, float octaves, float offset, float gain)
 
float blender::noise::musgrave_ridged_multi_fractal (const float4 co, float H, float lacunarity, float octaves, float offset, float gain)
 
float blender::noise::musgrave_hybrid_multi_fractal (float co, float H, float lacunarity, float octaves, float offset, float gain)
 
float blender::noise::musgrave_hybrid_multi_fractal (const float2 co, float H, float lacunarity, float octaves, float offset, float gain)
 
float blender::noise::musgrave_hybrid_multi_fractal (const float3 co, float H, float lacunarity, float octaves, float offset, float gain)
 
float blender::noise::musgrave_hybrid_multi_fractal (const float4 co, float H, float lacunarity, float octaves, float offset, float gain)
 
float blender::noise::musgrave_fBm (float co, float H, float lacunarity, float octaves)
 
float blender::noise::musgrave_fBm (const float2 co, float H, float lacunarity, float octaves)
 
float blender::noise::musgrave_fBm (const float3 co, float H, float lacunarity, float octaves)
 
float blender::noise::musgrave_fBm (const float4 co, float H, float lacunarity, float octaves)
 
float blender::noise::musgrave_multi_fractal (float co, float H, float lacunarity, float octaves)
 
float blender::noise::musgrave_multi_fractal (const float2 co, float H, float lacunarity, float octaves)
 
float blender::noise::musgrave_multi_fractal (const float3 co, float H, float lacunarity, float octaves)
 
float blender::noise::musgrave_multi_fractal (const float4 co, float H, float lacunarity, float octaves)
 
float blender::noise::musgrave_hetero_terrain (float co, float H, float lacunarity, float octaves, float offset)
 
float blender::noise::musgrave_hetero_terrain (const float2 co, float H, float lacunarity, float octaves, float offset)
 
float blender::noise::musgrave_hetero_terrain (const float3 co, float H, float lacunarity, float octaves, float offset)
 
float blender::noise::musgrave_hetero_terrain (const float4 co, float H, float lacunarity, float octaves, float offset)
 
Voronoi Noise
Note
Ported from Cycles code.

Original code is under the MIT License, Copyright (c) 2013 Inigo Quilez.

Smooth Voronoi:

Distance To Edge based on:

With optimization to change -2..2 scan window to -1..1 for better performance, as explained in https://www.shadertoy.com/view/llG3zy.

void blender::noise::voronoi_f1 (float w, float randomness, float *r_distance, float3 *r_color, float *r_w)
 
void blender::noise::voronoi_smooth_f1 (float w, float smoothness, float randomness, float *r_distance, float3 *r_color, float *r_w)
 
void blender::noise::voronoi_f2 (float w, float randomness, float *r_distance, float3 *r_color, float *r_w)
 
void blender::noise::voronoi_distance_to_edge (float w, float randomness, float *r_distance)
 
void blender::noise::voronoi_n_sphere_radius (float w, float randomness, float *r_radius)
 
void blender::noise::voronoi_f1 (const float2 coord, float exponent, float randomness, int metric, float *r_distance, float3 *r_color, float2 *r_position)
 
void blender::noise::voronoi_smooth_f1 (const float2 coord, float smoothness, float exponent, float randomness, int metric, float *r_distance, float3 *r_color, float2 *r_position)
 
void blender::noise::voronoi_f2 (const float2 coord, float exponent, float randomness, int metric, float *r_distance, float3 *r_color, float2 *r_position)
 
void blender::noise::voronoi_distance_to_edge (const float2 coord, float randomness, float *r_distance)
 
void blender::noise::voronoi_n_sphere_radius (const float2 coord, float randomness, float *r_radius)
 
void blender::noise::voronoi_f1 (const float3 coord, float exponent, float randomness, int metric, float *r_distance, float3 *r_color, float3 *r_position)
 
void blender::noise::voronoi_smooth_f1 (const float3 coord, float smoothness, float exponent, float randomness, int metric, float *r_distance, float3 *r_color, float3 *r_position)
 
void blender::noise::voronoi_f2 (const float3 coord, float exponent, float randomness, int metric, float *r_distance, float3 *r_color, float3 *r_position)
 
void blender::noise::voronoi_distance_to_edge (const float3 coord, float randomness, float *r_distance)
 
void blender::noise::voronoi_n_sphere_radius (const float3 coord, float randomness, float *r_radius)
 
void blender::noise::voronoi_f1 (const float4 coord, float exponent, float randomness, int metric, float *r_distance, float3 *r_color, float4 *r_position)
 
void blender::noise::voronoi_smooth_f1 (const float4 coord, float smoothness, float exponent, float randomness, int metric, float *r_distance, float3 *r_color, float4 *r_position)
 
void blender::noise::voronoi_f2 (const float4 coord, float exponent, float randomness, int metric, float *r_distance, float3 *r_color, float4 *r_position)
 
void blender::noise::voronoi_distance_to_edge (const float4 coord, float randomness, float *r_distance)
 
void blender::noise::voronoi_n_sphere_radius (const float4 coord, float randomness, float *r_radius)