[Bf-blender-cvs] [0ddb8d9] master: Cycles: Disable optimization of operator / for float3

Sergey Sharybin noreply at git.blender.org
Fri Oct 14 13:53:29 CEST 2016


Commit: 0ddb8d9b13806c0a47224b9f3ba4dd6911cd7a47
Author: Sergey Sharybin
Date:   Fri Oct 14 13:51:59 2016 +0200
Branches: master
https://developer.blender.org/rB0ddb8d9b13806c0a47224b9f3ba4dd6911cd7a47

Cycles: Disable optimization of operator / for float3

This was giving some speedup but made intersection tests to fail
from watertight point of view.

Needs deeper investigation, but need to quickly get it fixed for
the studio.

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

M	intern/cycles/util/util_math.h

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

diff --git a/intern/cycles/util/util_math.h b/intern/cycles/util/util_math.h
index ce2e4e5..b9594f7 100644
--- a/intern/cycles/util/util_math.h
+++ b/intern/cycles/util/util_math.h
@@ -462,12 +462,13 @@ ccl_device_inline float3 operator*(const float f, const float3& a)
 
 ccl_device_inline float3 operator/(const float f, const float3& a)
 {
-#ifdef __KERNEL_SSE__
-	__m128 rc = _mm_rcp_ps(a.m128);
-	return float3(_mm_mul_ps(_mm_set1_ps(f),rc));
-#else
+	/* TODO(sergey): Currently disabled, gives speedup but makes intersection tets non-watertight. */
+// #ifdef __KERNEL_SSE__
+// 	__m128 rc = _mm_rcp_ps(a.m128);
+// 	return float3(_mm_mul_ps(_mm_set1_ps(f),rc));
+// #else
 	return make_float3(f / a.x, f / a.y, f / a.z);
-#endif
+// #endif
 }
 
 ccl_device_inline float3 operator/(const float3& a, const float f)




More information about the Bf-blender-cvs mailing list