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:
authorBrecht Van Lommel <brecht@blender.org>2021-11-02 20:27:54 +0300
committerBrecht Van Lommel <brecht@blender.org>2021-11-02 20:56:25 +0300
commit48e2a15160d276c8080cd8d4f6dc0ba752dbb410 (patch)
tree5552f66d7fa217a12bbdd4fbe0c1e9691c4fb36e /intern/cycles/kernel/osl/shaders
parent978f2cb900b75110a3bc9dbcec9d4aeae5df4565 (diff)
Fix T77681, T92634: noise texture artifacts with high detail
We run into float precision issues here, clamp the number of octaves to one less, which has little to no visual difference. This was empirically determined to work up to 16 before, but with additional inputs like roughness only 15 appears to work. Also adds misisng clamp for the geometry nodes implementation.
Diffstat (limited to 'intern/cycles/kernel/osl/shaders')
-rw-r--r--intern/cycles/kernel/osl/shaders/node_musgrave_texture.osl2
-rw-r--r--intern/cycles/kernel/osl/shaders/node_noise.h8
2 files changed, 5 insertions, 5 deletions
diff --git a/intern/cycles/kernel/osl/shaders/node_musgrave_texture.osl b/intern/cycles/kernel/osl/shaders/node_musgrave_texture.osl
index 0e71ce74c29..6a688d654c9 100644
--- a/intern/cycles/kernel/osl/shaders/node_musgrave_texture.osl
+++ b/intern/cycles/kernel/osl/shaders/node_musgrave_texture.osl
@@ -697,7 +697,7 @@ shader node_musgrave_texture(
output float Fac = 0.0)
{
float dimension = max(Dimension, 1e-5);
- float octaves = clamp(Detail, 0.0, 16.0);
+ float octaves = clamp(Detail, 0.0, 15.0);
float lacunarity = max(Lacunarity, 1e-5);
vector3 s = Vector;
diff --git a/intern/cycles/kernel/osl/shaders/node_noise.h b/intern/cycles/kernel/osl/shaders/node_noise.h
index ab4cd7792cc..e8a71032171 100644
--- a/intern/cycles/kernel/osl/shaders/node_noise.h
+++ b/intern/cycles/kernel/osl/shaders/node_noise.h
@@ -90,7 +90,7 @@ float fractal_noise(float p, float details, float roughness)
float amp = 1.0;
float maxamp = 0.0;
float sum = 0.0;
- float octaves = clamp(details, 0.0, 16.0);
+ float octaves = clamp(details, 0.0, 15.0);
int n = (int)octaves;
for (int i = 0; i <= n; i++) {
float t = safe_noise(fscale * p);
@@ -119,7 +119,7 @@ float fractal_noise(vector2 p, float details, float roughness)
float amp = 1.0;
float maxamp = 0.0;
float sum = 0.0;
- float octaves = clamp(details, 0.0, 16.0);
+ float octaves = clamp(details, 0.0, 15.0);
int n = (int)octaves;
for (int i = 0; i <= n; i++) {
float t = safe_noise(fscale * p);
@@ -148,7 +148,7 @@ float fractal_noise(vector3 p, float details, float roughness)
float amp = 1.0;
float maxamp = 0.0;
float sum = 0.0;
- float octaves = clamp(details, 0.0, 16.0);
+ float octaves = clamp(details, 0.0, 15.0);
int n = (int)octaves;
for (int i = 0; i <= n; i++) {
float t = safe_noise(fscale * p);
@@ -177,7 +177,7 @@ float fractal_noise(vector4 p, float details, float roughness)
float amp = 1.0;
float maxamp = 0.0;
float sum = 0.0;
- float octaves = clamp(details, 0.0, 16.0);
+ float octaves = clamp(details, 0.0, 15.0);
int n = (int)octaves;
for (int i = 0; i <= n; i++) {
float t = safe_noise(fscale * p);