Blender V4.3
node_noise.h File Reference
#include "vector2.h"
#include "vector4.h"

Go to the source code of this file.

Macros

#define vector3   point
 
#define NOISE_FBM(T)
 
#define NOISE_MULTI_FRACTAL(T)
 
#define NOISE_HETERO_TERRAIN(T)
 
#define NOISE_HYBRID_MULTI_FRACTAL(T)
 
#define NOISE_RIDGED_MULTI_FRACTAL(T)
 

Functions

float safe_noise (float co)
 
float safe_noise (vector2 co)
 
float safe_noise (vector3 co)
 
float safe_noise (vector4 co)
 
float safe_snoise (float co)
 
float safe_snoise (vector2 co)
 
float safe_snoise (vector3 co)
 
float safe_snoise (vector4 co)
 

Macro Definition Documentation

◆ NOISE_FBM

#define NOISE_FBM ( T)
Value:
float noise_fbm(T co, float detail, float roughness, float lacunarity, int use_normalize) \
{ \
T p = co; \
float fscale = 1.0; \
float amp = 1.0; \
float maxamp = 0.0; \
float sum = 0.0; \
\
for (int i = 0; i <= int(detail); i++) { \
float t = safe_snoise(fscale * p); \
sum += t * amp; \
maxamp += amp; \
amp *= roughness; \
fscale *= lacunarity; \
} \
float rmd = detail - floor(detail); \
if (rmd != 0.0) { \
float t = safe_snoise(fscale * p); \
float sum2 = sum + t * amp; \
return use_normalize ? \
mix(0.5 * sum / maxamp + 0.5, 0.5 * sum2 / (maxamp + amp) + 0.5, rmd) : \
mix(sum, sum2, rmd); \
} \
else { \
return use_normalize ? 0.5 * sum / maxamp + 0.5 : sum; \
} \
}
static T sum(const btAlignedObjectArray< T > &items)
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
CCL_NAMESPACE_BEGIN ccl_device_noinline float noise_fbm(float p, float detail, float roughness, float lacunarity, bool normalize)
#define mix(a, b, c)
Definition hash.h:36
ccl_device_inline float2 floor(const float2 a)
float safe_snoise(float co)
Definition node_noise.h:59

Definition at line 108 of file node_noise.h.

◆ NOISE_HETERO_TERRAIN

#define NOISE_HETERO_TERRAIN ( T)
Value:
float noise_hetero_terrain(T co, float detail, float roughness, float lacunarity, float offset) \
{ \
T p = co; \
float pwr = roughness; \
\
/* first unscaled octave of function; later octaves are scaled */ \
float value = offset + safe_snoise(p); \
p *= lacunarity; \
\
for (int i = 1; i <= (int)detail; i++) { \
float increment = (safe_snoise(p) + offset) * pwr * value; \
value += increment; \
pwr *= roughness; \
p *= lacunarity; \
} \
\
float rmd = detail - floor(detail); \
if (rmd != 0.0) { \
float increment = (safe_snoise(p) + offset) * pwr * value; \
value += rmd * increment; \
} \
\
return value; \
}
ccl_device_noinline float noise_hetero_terrain(float p, float detail, float roughness, float lacunarity, float offset)

Definition at line 158 of file node_noise.h.

◆ NOISE_HYBRID_MULTI_FRACTAL

#define NOISE_HYBRID_MULTI_FRACTAL ( T)

Definition at line 184 of file node_noise.h.

◆ NOISE_MULTI_FRACTAL

#define NOISE_MULTI_FRACTAL ( T)
Value:
float noise_multi_fractal(T co, float detail, float roughness, float lacunarity) \
{ \
T p = co; \
float value = 1.0; \
float pwr = 1.0; \
\
for (int i = 0; i <= (int)detail; i++) { \
value *= (pwr * safe_snoise(p) + 1.0); \
pwr *= roughness; \
p *= lacunarity; \
} \
\
float rmd = detail - floor(detail); \
if (rmd != 0.0) { \
value *= (rmd * pwr * safe_snoise(p) + 1.0); /* correct? */ \
} \
\
return value; \
}
ccl_device_noinline float noise_multi_fractal(float p, float detail, float roughness, float lacunarity)

Definition at line 137 of file node_noise.h.

◆ NOISE_RIDGED_MULTI_FRACTAL

#define NOISE_RIDGED_MULTI_FRACTAL ( T)
Value:
T co, float detail, float roughness, float lacunarity, float offset, float gain) \
{ \
T p = co; \
float pwr = roughness; \
\
float signal = offset - fabs(safe_snoise(p)); \
signal *= signal; \
float value = signal; \
float weight = 1.0; \
\
for (int i = 1; i <= (int)detail; i++) { \
p *= lacunarity; \
weight = clamp(signal * gain, 0.0, 1.0); \
signal = offset - fabs(safe_snoise(p)); \
signal *= signal; \
signal *= weight; \
value += signal * pwr; \
pwr *= roughness; \
} \
\
return value; \
}
ccl_device_noinline float noise_ridged_multi_fractal(float p, float detail, float roughness, float lacunarity, float offset, float gain)
ccl_device_inline float2 fabs(const float2 a)
ccl_device_inline int clamp(int a, int mn, int mx)
Definition util/math.h:379

Definition at line 217 of file node_noise.h.

◆ vector3

#define vector3   point

Definition at line 8 of file node_noise.h.

Referenced by safe_noise(), safe_noise(), safe_snoise(), and safe_snoise().

Function Documentation

◆ safe_noise() [1/4]

float safe_noise ( float co)

Definition at line 10 of file node_noise.h.

References fabs(), float, fmod(), and noise.

◆ safe_noise() [2/4]

float safe_noise ( vector2 co)

Definition at line 20 of file node_noise.h.

References fabs(), fmod(), and noise.

◆ safe_noise() [3/4]

float safe_noise ( vector3 co)

Definition at line 32 of file node_noise.h.

References fabs(), fmod(), noise, and vector3.

◆ safe_noise() [4/4]

float safe_noise ( vector4 co)

Definition at line 45 of file node_noise.h.

References fabs(), fmod(), noise, and vector3.

◆ safe_snoise() [1/4]

float safe_snoise ( float co)

Definition at line 59 of file node_noise.h.

References fabs(), float, fmod(), and noise.

◆ safe_snoise() [2/4]

float safe_snoise ( vector2 co)

Definition at line 69 of file node_noise.h.

References fabs(), fmod(), and noise.

◆ safe_snoise() [3/4]

float safe_snoise ( vector3 co)

Definition at line 81 of file node_noise.h.

References fabs(), fmod(), noise, and vector3.

◆ safe_snoise() [4/4]

float safe_snoise ( vector4 co)

Definition at line 94 of file node_noise.h.

References fabs(), fmod(), noise, and vector3.