diff options
author | OmarSquircleArt <omar.squircleart@gmail.com> | 2019-09-05 14:18:00 +0300 |
---|---|---|
committer | OmarSquircleArt <omar.squircleart@gmail.com> | 2019-09-05 14:21:21 +0300 |
commit | c060a4a7145be2319a50928e6ef1cee465266dfb (patch) | |
tree | cb756585b7d5f0763188196b87ff98c78d6b434a /intern/cycles/kernel/svm/svm_noise.h | |
parent | b6e7e173ecd943fcfa6ddad91bfe86a41073c768 (diff) |
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
Diffstat (limited to 'intern/cycles/kernel/svm/svm_noise.h')
-rw-r--r-- | intern/cycles/kernel/svm/svm_noise.h | 12 |
1 files changed, 4 insertions, 8 deletions
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) |