Commit: ff1244dac720441123b9776458395545d6ce603f Author: OmarSquircleArt Date: Fri May 31 21:24:16 2019 +0200 Branches: soc-2019-cycles-procedural https://developer.blender.org/rBff1244dac720441123b9776458395545d6ce603f
Fixed CUDA and OpenCL kernels for reflect and project functions. =================================================================== M intern/cycles/kernel/svm/svm_math_util.h M intern/cycles/util/util_math_float3.h =================================================================== diff --git a/intern/cycles/kernel/svm/svm_math_util.h b/intern/cycles/kernel/svm/svm_math_util.h index 3d8c16a8495..cc505e1791e 100644 --- a/intern/cycles/kernel/svm/svm_math_util.h +++ b/intern/cycles/kernel/svm/svm_math_util.h @@ -33,7 +33,9 @@ ccl_device void svm_vector_math( *Fac = 0.0f; break; case NODE_VECTOR_MATH_DIVIDE: - *Vector = safe_divide(Vector1, Vector2); + *Vector = make_float3(safe_divide(Vector1.x, Vector2.x), + safe_divide(Vector1.y, Vector2.y), + safe_divide(Vector1.z, Vector2.z)); *Fac = 0.0f; break; case NODE_VECTOR_MATH_CROSS_PRODUCT: diff --git a/intern/cycles/util/util_math_float3.h b/intern/cycles/util/util_math_float3.h index ee8a28a5ccf..7d3f184f9b4 100644 --- a/intern/cycles/util/util_math_float3.h +++ b/intern/cycles/util/util_math_float3.h @@ -50,9 +50,6 @@ ccl_device_inline bool operator!=(const float3 &a, const float3 &b); ccl_device_inline float dot(const float3 &a, const float3 &b); ccl_device_inline float dot_xy(const float3 &a, const float3 &b); ccl_device_inline float3 cross(const float3 &a, const float3 &b); -ccl_device_inline float3 safe_divide(const float3 &a, const float3 &b); -ccl_device_inline float3 project(const float3 &v, const float3 &v_proj); -ccl_device_inline float3 reflect(const float3 &i, const float3 &n); ccl_device_inline float3 normalize(const float3 &a); ccl_device_inline float3 min(const float3 &a, const float3 &b); ccl_device_inline float3 max(const float3 &a, const float3 &b); @@ -68,6 +65,9 @@ ccl_device_inline float max3(float3 a); ccl_device_inline float len(const float3 a); ccl_device_inline float len_squared(const float3 a); +ccl_device_inline float3 reflect(const float3 i, const float3 n); +ccl_device_inline float3 project(const float3 v, const float3 v_proj); + ccl_device_inline float3 saturate3(float3 a); ccl_device_inline float3 safe_normalize(const float3 a); ccl_device_inline float3 normalize_len(const float3 a, float *t); @@ -216,25 +216,6 @@ ccl_device_inline float dot(const float3 &a, const float3 &b) # endif } -ccl_device_inline float3 safe_divide(const float3 &a, const float3 &b) -{ - return make_float3((b.x != 0.0f) ? a.x / b.x : 0.0f, - (b.y != 0.0f) ? a.y / b.y : 0.0f, - (b.z != 0.0f) ? a.z / b.z : 0.0f); -} - -ccl_device_inline float3 project(const float3 &v, const float3 &v_proj) -{ - float lenSquared = dot(v_proj, v_proj); - return (lenSquared != 0.0f) ? (dot(v, v_proj) / lenSquared) * v_proj : make_float3(0.0f); -} - -ccl_device_inline float3 reflect(const float3 &i, const float3 &n) -{ - float3 normal = normalize(n); - return i - 2 * normal * dot(i, normal); -} - ccl_device_inline float dot_xy(const float3 &a, const float3 &b) { # if defined(__KERNEL_SSE41__) && defined(__KERNEL_SSE__) @@ -342,6 +323,19 @@ ccl_device_inline float len_squared(const float3 a) return dot(a, a); } +ccl_device_inline float3 reflect(const float3 i, const float3 n) +{ + float3 normal = normalize(n); + return i - 2 * normal * dot(i, normal); +} + +ccl_device_inline float3 project(const float3 v, const float3 v_proj) +{ + float lenSquared = dot(v_proj, v_proj); + return (lenSquared != 0.0f) ? (dot(v, v_proj) / lenSquared) * v_proj : + make_float3(0.0f, 0.0f, 0.0f); +} + ccl_device_inline float3 saturate3(float3 a) { return make_float3(saturate(a.x), saturate(a.y), saturate(a.z)); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs