[Bf-blender-cvs] [c060a4a7145] master: Fix: Compile error due to undefined isinf function.

OmarSquircleArt noreply at git.blender.org
Thu Sep 5 13:20:12 CEST 2019


Commit: c060a4a7145be2319a50928e6ef1cee465266dfb
Author: OmarSquircleArt
Date:   Thu Sep 5 13:18:00 2019 +0200
Branches: master
https://developer.blender.org/rBc060a4a7145be2319a50928e6ef1cee465266dfb

Fix: Compile error due to undefined isinf function.

Some implementations of the standard c++ library doesn't define its
functions in the global namespace. So the `isinf` function might
fail in some systems. To fix this, we use the `ensure_finite`
function instead.

Reviewers: brecht

Differential Revision: https://developer.blender.org/D5687

===================================================================

M	intern/cycles/kernel/svm/svm_noise.h

===================================================================

diff --git a/intern/cycles/kernel/svm/svm_noise.h b/intern/cycles/kernel/svm/svm_noise.h
index 35b74fb4b3e..73d9e83ae0f 100644
--- a/intern/cycles/kernel/svm/svm_noise.h
+++ b/intern/cycles/kernel/svm/svm_noise.h
@@ -552,8 +552,7 @@ ccl_device_inline float noise_scale4(float result)
 
 ccl_device_inline float snoise_1d(float p)
 {
-  float r = perlin_1d(p);
-  return isinf(r) ? 0.0f : noise_scale1(r);
+  return noise_scale1(ensure_finite(perlin_1d(p)));
 }
 
 ccl_device_inline float noise_1d(float p)
@@ -563,8 +562,7 @@ ccl_device_inline float noise_1d(float p)
 
 ccl_device_inline float snoise_2d(float2 p)
 {
-  float r = perlin_2d(p.x, p.y);
-  return isinf(r) ? 0.0f : noise_scale2(r);
+  return noise_scale2(ensure_finite(perlin_2d(p.x, p.y)));
 }
 
 ccl_device_inline float noise_2d(float2 p)
@@ -574,8 +572,7 @@ ccl_device_inline float noise_2d(float2 p)
 
 ccl_device_inline float snoise_3d(float3 p)
 {
-  float r = perlin_3d(p.x, p.y, p.z);
-  return isinf(r) ? 0.0f : noise_scale3(r);
+  return noise_scale3(ensure_finite(perlin_3d(p.x, p.y, p.z)));
 }
 
 ccl_device_inline float noise_3d(float3 p)
@@ -585,8 +582,7 @@ ccl_device_inline float noise_3d(float3 p)
 
 ccl_device_inline float snoise_4d(float4 p)
 {
-  float r = perlin_4d(p.x, p.y, p.z, p.w);
-  return isinf(r) ? 0.0f : noise_scale4(r);
+  return noise_scale4(ensure_finite(perlin_4d(p.x, p.y, p.z, p.w)));
 }
 
 ccl_device_inline float noise_4d(float4 p)



More information about the Bf-blender-cvs mailing list