diff options
author | Brecht Van Lommel <brecht@blender.org> | 2022-03-24 00:46:17 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2022-03-24 01:25:31 +0300 |
commit | 51380b9346a5115bbbaf064387509d96bdf21a43 (patch) | |
tree | 9ad9f1475c313cd559af72a7f9dbf3fa16dbff9d /intern | |
parent | d84b4becd3bce34b75385155535b17d77f68578a (diff) |
Fix Cycles Metal build error and GCC warning after recent changes
Function overloading of make_float4() doesn't work since it's a macro, just
don't do this minor cleanup then.
Diffstat (limited to 'intern')
-rw-r--r-- | intern/cycles/kernel/closure/bsdf_hair_principled.h | 2 | ||||
-rw-r--r-- | intern/cycles/kernel/device/cpu/image.h | 50 | ||||
-rw-r--r-- | intern/cycles/util/math_float4.h | 10 | ||||
-rw-r--r-- | intern/cycles/util/types_float4.h | 1 | ||||
-rw-r--r-- | intern/cycles/util/types_float4_impl.h | 5 |
5 files changed, 30 insertions, 38 deletions
diff --git a/intern/cycles/kernel/closure/bsdf_hair_principled.h b/intern/cycles/kernel/closure/bsdf_hair_principled.h index fb65d744a0c..33706213403 100644 --- a/intern/cycles/kernel/closure/bsdf_hair_principled.h +++ b/intern/cycles/kernel/closure/bsdf_hair_principled.h @@ -220,7 +220,7 @@ ccl_device_inline void hair_attenuation(KernelGlobals kg, ccl_private float4 *Ap) { /* Primary specular (R). */ - Ap[0] = make_float4(f); + Ap[0] = make_float4(f, f, f, f); /* Transmission (TT). */ float3 col = sqr(1.0f - f) * T; diff --git a/intern/cycles/kernel/device/cpu/image.h b/intern/cycles/kernel/device/cpu/image.h index ebddc1989bd..3b714a3e580 100644 --- a/intern/cycles/kernel/device/cpu/image.h +++ b/intern/cycles/kernel/device/cpu/image.h @@ -31,20 +31,18 @@ ccl_device_inline float frac(float x, int *ix) return x - (float)i; } -template<typename ZeroT> ccl_always_inline ZeroT zero(); - -template<> ccl_always_inline float zero<float>() -{ - return 0.0f; -} - -template<> ccl_always_inline float4 zero<float4>() -{ - return zero_float4(); -} - template<typename TexT, typename OutT = float4> struct TextureInterpolator { + static ccl_always_inline OutT zero() + { + if constexpr (std::is_same<OutT, float4>::value) { + return zero_float4(); + } + else { + return 0.0f; + } + } + static ccl_always_inline float4 read(float4 r) { return r; @@ -99,7 +97,7 @@ template<typename TexT, typename OutT = float4> struct TextureInterpolator { static ccl_always_inline OutT read_clip(const TexT *data, int x, int y, int width, int height) { if (x < 0 || x >= width || y < 0 || y >= height) { - return zero<OutT>(); + return zero(); } return read(data[y * width + x]); } @@ -118,7 +116,7 @@ template<typename TexT, typename OutT = float4> struct TextureInterpolator { read_clip(const TexT *data, int x, int y, int z, int width, int height, int depth) { if (x < 0 || x >= width || y < 0 || y >= height || z < 0 || z >= depth) { - return zero<OutT>(); + return zero(); } return read(data[x + y * width + z * width * height]); } @@ -221,7 +219,7 @@ template<typename TexT, typename OutT = float4> struct TextureInterpolator { case EXTENSION_CLIP: /* No samples are inside the clip region. */ if (ix < 0 || ix >= width || iy < 0 || iy >= height) { - return zero<OutT>(); + return zero(); } break; case EXTENSION_EXTEND: @@ -230,7 +228,7 @@ template<typename TexT, typename OutT = float4> struct TextureInterpolator { break; default: kernel_assert(0); - return zero<OutT>(); + return zero(); } const TexT *data = (const TexT *)info.data; @@ -259,7 +257,7 @@ template<typename TexT, typename OutT = float4> struct TextureInterpolator { case EXTENSION_CLIP: /* No linear samples are inside the clip region. */ if (ix < -1 || ix >= width || iy < -1 || iy >= height) { - return zero<OutT>(); + return zero(); } nix = ix + 1; niy = iy + 1; @@ -272,7 +270,7 @@ template<typename TexT, typename OutT = float4> struct TextureInterpolator { break; default: kernel_assert(0); - return zero<OutT>(); + return zero(); } const TexT *data = (const TexT *)info.data; @@ -311,7 +309,7 @@ template<typename TexT, typename OutT = float4> struct TextureInterpolator { case EXTENSION_CLIP: /* No cubic samples are inside the clip region. */ if (ix < -2 || ix > width || iy < -2 || iy > height) { - return zero<OutT>(); + return zero(); } pix = ix - 1; @@ -335,7 +333,7 @@ template<typename TexT, typename OutT = float4> struct TextureInterpolator { break; default: kernel_assert(0); - return zero<OutT>(); + return zero(); } const TexT *data = (const TexT *)info.data; @@ -397,7 +395,7 @@ template<typename TexT, typename OutT = float4> struct TextureInterpolator { case EXTENSION_CLIP: /* No samples are inside the clip region. */ if (ix < 0 || ix >= width || iy < 0 || iy >= height || iz < 0 || iz >= depth) { - return zero<OutT>(); + return zero(); } break; case EXTENSION_EXTEND: @@ -407,7 +405,7 @@ template<typename TexT, typename OutT = float4> struct TextureInterpolator { break; default: kernel_assert(0); - return zero<OutT>(); + return zero(); } const TexT *data = (const TexT *)info.data; @@ -444,7 +442,7 @@ template<typename TexT, typename OutT = float4> struct TextureInterpolator { case EXTENSION_CLIP: /* No linear samples are inside the clip region. */ if (ix < -1 || ix >= width || iy < -1 || iy >= height || iz < -1 || iz >= depth) { - return zero<OutT>(); + return zero(); } nix = ix + 1; @@ -484,7 +482,7 @@ template<typename TexT, typename OutT = float4> struct TextureInterpolator { break; default: kernel_assert(0); - return zero<OutT>(); + return zero(); } return trilinear_lookup((const TexT *)info.data, @@ -553,7 +551,7 @@ template<typename TexT, typename OutT = float4> struct TextureInterpolator { case EXTENSION_CLIP: { /* No cubic samples are inside the clip region. */ if (ix < -2 || ix > width || iy < -2 || iy > height || iz < -2 || iz > depth) { - return zero<OutT>(); + return zero(); } pix = ix - 1; @@ -599,7 +597,7 @@ template<typename TexT, typename OutT = float4> struct TextureInterpolator { break; default: kernel_assert(0); - return zero<OutT>(); + return zero(); } const int xc[4] = {pix, ix, nix, nnix}; const int yc[4] = {piy, iy, niy, nniy}; diff --git a/intern/cycles/util/math_float4.h b/intern/cycles/util/math_float4.h index 5d4da7dd30f..ae9dfe75a9c 100644 --- a/intern/cycles/util/math_float4.h +++ b/intern/cycles/util/math_float4.h @@ -90,13 +90,13 @@ ccl_device_inline float4 zero_float4() #ifdef __KERNEL_SSE__ return float4(_mm_setzero_ps()); #else - return make_float4(0.0f); + return make_float4(0.0f, 0.0f, 0.0f, 0.0f); #endif } ccl_device_inline float4 one_float4() { - return make_float4(1.0f); + return make_float4(1.0f, 1.0f, 1.0f, 1.0f); } #if !defined(__KERNEL_METAL__) @@ -149,7 +149,7 @@ ccl_device_inline float4 operator/(const float4 &a, const float4 &b) ccl_device_inline float4 operator+(const float4 &a, const float f) { - return a + make_float4(f); + return a + make_float4(f, f, f, f); } ccl_device_inline float4 operator+(const float4 &a, const float4 &b) @@ -163,7 +163,7 @@ ccl_device_inline float4 operator+(const float4 &a, const float4 &b) ccl_device_inline float4 operator-(const float4 &a, const float f) { - return a - make_float4(f); + return a - make_float4(f, f, f, f); } ccl_device_inline float4 operator-(const float4 &a, const float4 &b) @@ -317,7 +317,7 @@ ccl_device_inline float4 reduce_add(const float4 &a) # endif # else float sum = (a.x + a.y) + (a.z + a.w); - return make_float4(sum); + return make_float4(sum, sum, sum, sum); # endif } diff --git a/intern/cycles/util/types_float4.h b/intern/cycles/util/types_float4.h index 0e84dfa3d64..68ba787dac0 100644 --- a/intern/cycles/util/types_float4.h +++ b/intern/cycles/util/types_float4.h @@ -45,7 +45,6 @@ ccl_device_inline float4 make_float4(const int4 &i); ccl_device_inline void print_float4(const char *label, const float4 &a); #endif /* __KERNEL_GPU__ */ -ccl_device_inline float4 make_float4(float f); CCL_NAMESPACE_END #endif /* __UTIL_TYPES_FLOAT4_H__ */ diff --git a/intern/cycles/util/types_float4_impl.h b/intern/cycles/util/types_float4_impl.h index aa923eb038d..de2e7cb7061 100644 --- a/intern/cycles/util/types_float4_impl.h +++ b/intern/cycles/util/types_float4_impl.h @@ -89,11 +89,6 @@ ccl_device_inline void print_float4(const char *label, const float4 &a) { printf("%s: %.8f %.8f %.8f %.8f\n", label, (double)a.x, (double)a.y, (double)a.z, (double)a.w); } -#else -ccl_device_inline float4 make_float4(float f) -{ - return make_float4(f, f, f, f); -} #endif /* __KERNEL_GPU__ */ CCL_NAMESPACE_END |