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:
authorOmarSquircleArt <omar.squircleart@gmail.com>2019-09-04 18:54:32 +0300
committerOmarSquircleArt <omar.squircleart@gmail.com>2019-09-04 18:54:32 +0300
commit23564583a4988778b4c43496fd21818b286f6ba1 (patch)
tree3dc149c4e5c26ea2aac460ed582cb31def988470 /intern/cycles/kernel/svm/svm_musgrave.h
parent45d4c925799e94c6d442a9a9066af2d3305724e1 (diff)
Shading: Extend Noise node to other dimenstions.
This patch extends perlin noise to operate in 1D, 2D, 3D, and 4D space. The noise code has also been refactored to be more readable. The Color output and distortion patterns changed, so this patch breaks backward compatibility. This is due to the fact that we now use random offsets as noise seeds, as opposed to swizzling and constants offsets. Reviewers: brecht, JacquesLucke Differential Revision: https://developer.blender.org/D5560
Diffstat (limited to 'intern/cycles/kernel/svm/svm_musgrave.h')
-rw-r--r--intern/cycles/kernel/svm/svm_musgrave.h24
1 files changed, 12 insertions, 12 deletions
diff --git a/intern/cycles/kernel/svm/svm_musgrave.h b/intern/cycles/kernel/svm/svm_musgrave.h
index 9291c7e7295..db87f04581f 100644
--- a/intern/cycles/kernel/svm/svm_musgrave.h
+++ b/intern/cycles/kernel/svm/svm_musgrave.h
@@ -37,14 +37,14 @@ ccl_device_noinline_cpu float noise_musgrave_fBm(float3 p,
int i;
for (i = 0; i < float_to_int(octaves); i++) {
- value += snoise(p) * pwr;
+ value += snoise_3d(p) * pwr;
pwr *= pwHL;
p *= lacunarity;
}
rmd = octaves - floorf(octaves);
if (rmd != 0.0f)
- value += rmd * snoise(p) * pwr;
+ value += rmd * snoise_3d(p) * pwr;
return value;
}
@@ -68,14 +68,14 @@ ccl_device_noinline_cpu float noise_musgrave_multi_fractal(float3 p,
int i;
for (i = 0; i < float_to_int(octaves); i++) {
- value *= (pwr * snoise(p) + 1.0f);
+ value *= (pwr * snoise_3d(p) + 1.0f);
pwr *= pwHL;
p *= lacunarity;
}
rmd = octaves - floorf(octaves);
if (rmd != 0.0f)
- value *= (rmd * pwr * snoise(p) + 1.0f); /* correct? */
+ value *= (rmd * pwr * snoise_3d(p) + 1.0f); /* correct? */
return value;
}
@@ -97,11 +97,11 @@ ccl_device_noinline_cpu float noise_musgrave_hetero_terrain(
int i;
/* first unscaled octave of function; later octaves are scaled */
- value = offset + snoise(p);
+ value = offset + snoise_3d(p);
p *= lacunarity;
for (i = 1; i < float_to_int(octaves); i++) {
- increment = (snoise(p) + offset) * pwr * value;
+ increment = (snoise_3d(p) + offset) * pwr * value;
value += increment;
pwr *= pwHL;
p *= lacunarity;
@@ -109,7 +109,7 @@ ccl_device_noinline_cpu float noise_musgrave_hetero_terrain(
rmd = octaves - floorf(octaves);
if (rmd != 0.0f) {
- increment = (snoise(p) + offset) * pwr * value;
+ increment = (snoise_3d(p) + offset) * pwr * value;
value += rmd * increment;
}
@@ -132,7 +132,7 @@ ccl_device_noinline_cpu float noise_musgrave_hybrid_multi_fractal(
float pwr = pwHL;
int i;
- result = snoise(p) + offset;
+ result = snoise_3d(p) + offset;
weight = gain * result;
p *= lacunarity;
@@ -140,7 +140,7 @@ ccl_device_noinline_cpu float noise_musgrave_hybrid_multi_fractal(
if (weight > 1.0f)
weight = 1.0f;
- signal = (snoise(p) + offset) * pwr;
+ signal = (snoise_3d(p) + offset) * pwr;
pwr *= pwHL;
result += weight * signal;
weight *= gain * signal;
@@ -149,7 +149,7 @@ ccl_device_noinline_cpu float noise_musgrave_hybrid_multi_fractal(
rmd = octaves - floorf(octaves);
if (rmd != 0.0f)
- result += rmd * ((snoise(p) + offset) * pwr);
+ result += rmd * ((snoise_3d(p) + offset) * pwr);
return result;
}
@@ -170,7 +170,7 @@ ccl_device_noinline_cpu float noise_musgrave_ridged_multi_fractal(
float pwr = pwHL;
int i;
- signal = offset - fabsf(snoise(p));
+ signal = offset - fabsf(snoise_3d(p));
signal *= signal;
result = signal;
weight = 1.0f;
@@ -178,7 +178,7 @@ ccl_device_noinline_cpu float noise_musgrave_ridged_multi_fractal(
for (i = 1; i < float_to_int(octaves); i++) {
p *= lacunarity;
weight = saturate(signal * gain);
- signal = offset - fabsf(snoise(p));
+ signal = offset - fabsf(snoise_3d(p));
signal *= signal;
signal *= weight;
result += signal * pwr;