[Bf-blender-cvs] [b1584775515] blender-v2.93-release: Fix ocean modifier giving different result on Arm than x86

Brecht Van Lommel noreply at git.blender.org
Tue May 18 14:45:54 CEST 2021


Commit: b1584775515b9830d277343db7a25701fd054578
Author: Brecht Van Lommel
Date:   Tue May 18 14:02:41 2021 +0200
Branches: blender-v2.93-release
https://developer.blender.org/rBb1584775515b9830d277343db7a25701fd054578

Fix ocean modifier giving different result on Arm than x86

And re-enable the test on macOS Arm.

Ref T78710

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

M	source/blender/blenkernel/intern/ocean.c
M	tests/python/CMakeLists.txt

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

diff --git a/source/blender/blenkernel/intern/ocean.c b/source/blender/blenkernel/intern/ocean.c
index d2f4d0702ed..9d53dad8d03 100644
--- a/source/blender/blenkernel/intern/ocean.c
+++ b/source/blender/blenkernel/intern/ocean.c
@@ -911,8 +911,12 @@ void BKE_ocean_init(struct Ocean *o,
   for (i = 0; i < o->_M; i++) {
     for (j = 0; j < o->_N; j++) {
       /* This ensures we get a value tied to the surface location, avoiding dramatic surface
-       * change with changing resolution. */
-      int new_seed = seed + BLI_hash_int_2d(o->_kx[i] * 360.0f, o->_kz[j] * 360.0f);
+       * change with changing resolution.
+       * Explicitly cast to signed int first to ensure consistent behavior on all processors,
+       * since behavior of float to unsigned int cast is undefined in C. */
+      const int hash_x = o->_kx[i] * 360.0f;
+      const int hash_z = o->_kz[j] * 360.0f;
+      int new_seed = seed + BLI_hash_int_2d(hash_x, hash_z);
 
       BLI_rng_seed(rng, new_seed);
       float r1 = gaussRand(rng);
diff --git a/tests/python/CMakeLists.txt b/tests/python/CMakeLists.txt
index 4770a421ba9..92cebb7d274 100644
--- a/tests/python/CMakeLists.txt
+++ b/tests/python/CMakeLists.txt
@@ -240,17 +240,14 @@ add_blender_test(
   --run-all-tests
 )
 
-# disabled on macOS arm64 until updated & working
-if(NOT (APPLE AND ("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64")))
-  if(WITH_MOD_OCEANSIM)
-    add_blender_test(
-      physics_ocean
-      ${TEST_SRC_DIR}/physics/ocean_test.blend
-      --python ${TEST_PYTHON_DIR}/physics_ocean.py
-      --
-      --run-all-tests
-    )
-  endif()
+if(WITH_MOD_OCEANSIM)
+  add_blender_test(
+    physics_ocean
+    ${TEST_SRC_DIR}/physics/ocean_test.blend
+    --python ${TEST_PYTHON_DIR}/physics_ocean.py
+    --
+    --run-all-tests
+  )
 endif()



More information about the Bf-blender-cvs mailing list