14 float p,
float detail,
float roughness,
float lacunarity,
bool normalize)
28 float rmd = detail -
floorf(detail);
31 float sum2 =
sum + t * amp;
32 return normalize ?
mix(0.5f *
sum / maxamp + 0.5f, 0.5f * sum2 / (maxamp + amp) + 0.5f, rmd) :
41 float2 p,
float detail,
float roughness,
float lacunarity,
bool normalize)
55 float rmd = detail -
floorf(detail);
58 float sum2 =
sum + t * amp;
59 return normalize ?
mix(0.5f *
sum / maxamp + 0.5f, 0.5f * sum2 / (maxamp + amp) + 0.5f, rmd) :
68 float3 p,
float detail,
float roughness,
float lacunarity,
bool normalize)
82 float rmd = detail -
floorf(detail);
85 float sum2 =
sum + t * amp;
86 return normalize ?
mix(0.5f *
sum / maxamp + 0.5f, 0.5f * sum2 / (maxamp + amp) + 0.5f, rmd) :
95 float4 p,
float detail,
float roughness,
float lacunarity,
bool normalize)
107 fscale *= lacunarity;
109 float rmd = detail -
floorf(detail);
112 float sum2 =
sum + t * amp;
113 return normalize ?
mix(0.5f *
sum / maxamp + 0.5f, 0.5f * sum2 / (maxamp + amp) + 0.5f, rmd) :
137 float rmd = detail -
floorf(detail);
139 value *= (rmd * pwr *
snoise_1d(p) + 1.0f);
159 float rmd = detail -
floorf(detail);
161 value *= (rmd * pwr *
snoise_2d(p) + 1.0f);
181 float rmd = detail -
floorf(detail);
183 value *= (rmd * pwr *
snoise_3d(p) + 1.0f);
203 float rmd = detail -
floorf(detail);
205 value *= (rmd * pwr *
snoise_4d(p) + 1.0f);
214 float p,
float detail,
float roughness,
float lacunarity,
float offset)
216 float pwr = roughness;
223 float increment = (
snoise_1d(p) + offset) * pwr * value;
229 float rmd = detail -
floorf(detail);
231 float increment = (
snoise_1d(p) + offset) * pwr * value;
232 value += rmd * increment;
239 float2 p,
float detail,
float roughness,
float lacunarity,
float offset)
241 float pwr = roughness;
248 float increment = (
snoise_2d(p) + offset) * pwr * value;
254 float rmd = detail -
floorf(detail);
256 float increment = (
snoise_2d(p) + offset) * pwr * value;
257 value += rmd * increment;
264 float3 p,
float detail,
float roughness,
float lacunarity,
float offset)
266 float pwr = roughness;
273 float increment = (
snoise_3d(p) + offset) * pwr * value;
279 float rmd = detail -
floorf(detail);
281 float increment = (
snoise_3d(p) + offset) * pwr * value;
282 value += rmd * increment;
289 float4 p,
float detail,
float roughness,
float lacunarity,
float offset)
291 float pwr = roughness;
298 float increment = (
snoise_4d(p) + offset) * pwr * value;
304 float rmd = detail -
floorf(detail);
306 float increment = (
snoise_4d(p) + offset) * pwr * value;
307 value += rmd * increment;
316 float p,
float detail,
float roughness,
float lacunarity,
float offset,
float gain)
322 for (
int i = 0; (weight > 0.001f) && (i <=
float_to_int(detail)); i++) {
327 float signal = (
snoise_1d(p) + offset) * pwr;
329 value += weight * signal;
330 weight *= gain * signal;
334 float rmd = detail -
floorf(detail);
335 if ((rmd != 0.0f) && (weight > 0.001f)) {
339 float signal = (
snoise_1d(p) + offset) * pwr;
340 value += rmd * weight * signal;
347 float2 p,
float detail,
float roughness,
float lacunarity,
float offset,
float gain)
353 for (
int i = 0; (weight > 0.001f) && (i <=
float_to_int(detail)); i++) {
358 float signal = (
snoise_2d(p) + offset) * pwr;
360 value += weight * signal;
361 weight *= gain * signal;
365 float rmd = detail -
floorf(detail);
366 if ((rmd != 0.0f) && (weight > 0.001f)) {
370 float signal = (
snoise_2d(p) + offset) * pwr;
371 value += rmd * weight * signal;
378 float3 p,
float detail,
float roughness,
float lacunarity,
float offset,
float gain)
384 for (
int i = 0; (weight > 0.001f) && (i <=
float_to_int(detail)); i++) {
389 float signal = (
snoise_3d(p) + offset) * pwr;
391 value += weight * signal;
392 weight *= gain * signal;
396 float rmd = detail -
floorf(detail);
397 if ((rmd != 0.0f) && (weight > 0.001f)) {
401 float signal = (
snoise_3d(p) + offset) * pwr;
402 value += rmd * weight * signal;
409 float4 p,
float detail,
float roughness,
float lacunarity,
float offset,
float gain)
415 for (
int i = 0; (weight > 0.001f) && (i <=
float_to_int(detail)); i++) {
420 float signal = (
snoise_4d(p) + offset) * pwr;
422 value += weight * signal;
423 weight *= gain * signal;
427 float rmd = detail -
floorf(detail);
428 if ((rmd != 0.0f) && (weight > 0.001f)) {
432 float signal = (
snoise_4d(p) + offset) * pwr;
433 value += rmd * weight * signal;
442 float p,
float detail,
float roughness,
float lacunarity,
float offset,
float gain)
444 float pwr = roughness;
448 float value = signal;
457 value += signal * pwr;
465 float2 p,
float detail,
float roughness,
float lacunarity,
float offset,
float gain)
467 float pwr = roughness;
471 float value = signal;
480 value += signal * pwr;
488 float3 p,
float detail,
float roughness,
float lacunarity,
float offset,
float gain)
490 float pwr = roughness;
494 float value = signal;
503 value += signal * pwr;
511 float4 p,
float detail,
float roughness,
float lacunarity,
float offset,
float gain)
513 float pwr = roughness;
517 float value = signal;
526 value += signal * pwr;
static T sum(const btAlignedObjectArray< T > &items)
SIMD_FORCE_INLINE btVector3 & normalize()
Normalize this vector x^2 + y^2 + z^2 = 1.
#define ccl_device_noinline
#define CCL_NAMESPACE_END
ccl_device_noinline float noise_multi_fractal(float p, float detail, float roughness, float lacunarity)
ccl_device_noinline float noise_ridged_multi_fractal(float p, float detail, float roughness, float lacunarity, float offset, float gain)
ccl_device_noinline float noise_hetero_terrain(float p, float detail, float roughness, float lacunarity, float offset)
ccl_device_noinline float noise_hybrid_multi_fractal(float p, float detail, float roughness, float lacunarity, float offset, float gain)
CCL_NAMESPACE_BEGIN ccl_device_noinline float noise_fbm(float p, float detail, float roughness, float lacunarity, bool normalize)
ccl_device_inline float snoise_1d(float p)
ccl_device_inline float snoise_2d(float2 p)
ccl_device_inline float snoise_3d(float3 p)
ccl_device_inline float snoise_4d(float4 p)
ccl_device_inline int float_to_int(float f)