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:
Diffstat (limited to 'intern/cycles/util/util_math.h')
-rw-r--r--intern/cycles/util/util_math.h31
1 files changed, 25 insertions, 6 deletions
diff --git a/intern/cycles/util/util_math.h b/intern/cycles/util/util_math.h
index 6fe1b2bcf54..68668d88d44 100644
--- a/intern/cycles/util/util_math.h
+++ b/intern/cycles/util/util_math.h
@@ -163,6 +163,25 @@ __device_inline float clamp(float a, float mn, float mx)
#endif
+__device_inline int float_to_int(float f)
+{
+#ifdef __KERNEL_SSE2__
+ return _mm_cvtt_ss2si(_mm_load_ss(&f));
+#else
+ return (int)f;
+#endif
+}
+
+__device_inline int floor_to_int(float f)
+{
+ return float_to_int(floorf(f));
+}
+
+__device_inline int ceil_to_int(float f)
+{
+ return float_to_int(ceilf(f));
+}
+
__device_inline float signf(float f)
{
return (f < 0.0f)? -1.0f: 1.0f;
@@ -990,23 +1009,23 @@ __device_inline void print_int4(const char *label, const int4& a)
#ifndef __KERNEL_OPENCL__
-__device_inline unsigned int as_int(uint i)
+__device_inline int as_int(uint i)
{
- union { unsigned int ui; int i; } u;
+ union { uint ui; int i; } u;
u.ui = i;
return u.i;
}
-__device_inline unsigned int as_uint(int i)
+__device_inline uint as_uint(int i)
{
- union { unsigned int ui; int i; } u;
+ union { uint ui; int i; } u;
u.i = i;
return u.ui;
}
-__device_inline unsigned int as_uint(float f)
+__device_inline uint as_uint(float f)
{
- union { unsigned int i; float f; } u;
+ union { uint i; float f; } u;
u.f = f;
return u.i;
}