[Bf-blender-cvs] [598ab525da3] master: Cleanup: Replace ABS/SQUARE/CUBE with function calls

Sergey Sharybin noreply at git.blender.org
Mon Mar 9 14:50:34 CET 2020


Commit: 598ab525da3df3fef2033c159c570688c7282a8f
Author: Sergey Sharybin
Date:   Fri Mar 6 17:18:10 2020 +0100
Branches: master
https://developer.blender.org/rB598ab525da3df3fef2033c159c570688c7282a8f

Cleanup: Replace ABS/SQUARE/CUBE with function calls

While it might be handy to have type-less functionality which is
similar to how C++ math is implemented it can not be easily achieved
with just preprocessor in a way which does not have side-effects on
wrong usage.

There macros where often used on a non-trivial expression, and there
was at least one usage where it was causing an actual side effect/bug
on Windows (see change around square_f(sh[index++]) in studiolight.c).

For such cases it is handy to have a function which is guaranteed to
have zero side-effects. The motivation behind actually removing the
macros is that there is already a way to do similar calculation. Also,
not having such macros is a way to guarantee that its usage is not
changed in a way which have side-effects and that it's not used as an
inspiration for cases where it should not be used.

Differential Revision: https://developer.blender.org/D7051

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

M	source/blender/blenkernel/intern/brush.c
M	source/blender/blenkernel/intern/bvhutils.c
M	source/blender/blenkernel/intern/collision.c
M	source/blender/blenkernel/intern/constraint.c
M	source/blender/blenkernel/intern/dynamicpaint.c
M	source/blender/blenkernel/intern/effect.c
M	source/blender/blenkernel/intern/fcurve.c
M	source/blender/blenkernel/intern/mask.c
M	source/blender/blenkernel/intern/mesh.c
M	source/blender/blenkernel/intern/multires.c
M	source/blender/blenkernel/intern/pbvh_bmesh.c
M	source/blender/blenkernel/intern/softbody.c
M	source/blender/blenkernel/intern/studiolight.c
M	source/blender/blenlib/BLI_math_base.h
M	source/blender/blenlib/BLI_utildefines.h
M	source/blender/blenlib/intern/kdtree_impl.h
M	source/blender/blenlib/intern/listbase.c
M	source/blender/blenlib/intern/math_base_inline.c
M	source/blender/blenlib/intern/math_color_inline.c
M	source/blender/blenlib/intern/math_geom.c
M	source/blender/blenlib/intern/math_rotation.c
M	source/blender/blenlib/intern/string.c
M	source/blender/bmesh/intern/bmesh_edgeloop.c
M	source/blender/bmesh/operators/bmo_planar_faces.c
M	source/blender/bmesh/tools/bmesh_decimate_collapse.c
M	source/blender/bmesh/tools/bmesh_intersect_edges.c
M	source/blender/bmesh/tools/bmesh_region_match.c
M	source/blender/compositor/operations/COM_VectorBlurOperation.cpp
M	source/blender/draw/engines/eevee/eevee_lightprobes.c
M	source/blender/draw/engines/eevee/eevee_private.h
M	source/blender/draw/engines/workbench/workbench_data.c
M	source/blender/draw/engines/workbench/workbench_effect_dof.c
M	source/blender/draw/engines/workbench/workbench_effect_taa.c
M	source/blender/draw/intern/draw_manager_exec.c
M	source/blender/editors/armature/armature_utils.c
M	source/blender/editors/curve/editcurve_paint.c
M	source/blender/editors/gizmo_library/gizmo_types/arrow3d_gizmo.c
M	source/blender/editors/gpencil/gpencil_primitive.c
M	source/blender/editors/interface/interface_handlers.c
M	source/blender/editors/interface/interface_utils.c
M	source/blender/editors/mask/mask_ops.c
M	source/blender/editors/mesh/editmesh_utils.c
M	source/blender/editors/render/render_preview.c
M	source/blender/editors/screen/area.c
M	source/blender/editors/screen/area_utils.c
M	source/blender/editors/screen/screen_edit.c
M	source/blender/editors/screen/screen_ops.c
M	source/blender/editors/sculpt_paint/paint_image_proj.c
M	source/blender/editors/sculpt_paint/paint_stroke.c
M	source/blender/editors/sculpt_paint/sculpt.c
M	source/blender/editors/space_clip/tracking_ops.c
M	source/blender/editors/space_clip/tracking_ops_plane.c
M	source/blender/editors/space_image/image_undo.c
M	source/blender/editors/space_node/drawnode.c
M	source/blender/editors/space_view3d/view3d_edit.c
M	source/blender/editors/transform/transform_snap_object.c
M	source/blender/editors/uvedit/uvedit_ops.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilhook.c
M	source/blender/gpu/intern/gpu_buffers.c
M	source/blender/ikplugin/intern/iksolver_plugin.c
M	source/blender/makesrna/intern/makesrna.c
M	source/blender/modifiers/intern/MOD_hook.c
M	source/blender/modifiers/intern/MOD_screw.c
M	source/blender/modifiers/intern/MOD_warp.c
M	source/blender/modifiers/intern/MOD_weld.c
M	source/blender/python/mathutils/mathutils_bvhtree.c
M	source/blender/render/intern/source/initrender.c

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

diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c
index 041cd0b8539..4a92f439d74 100644
--- a/source/blender/blenkernel/intern/brush.c
+++ b/source/blender/blenkernel/intern/brush.c
@@ -1579,7 +1579,7 @@ void BKE_brush_jitter_pos(const Scene *scene, Brush *brush, const float pos[2],
   do {
     rand_pos[0] = BLI_rng_get_float(brush_rng) - 0.5f;
     rand_pos[1] = BLI_rng_get_float(brush_rng) - 0.5f;
-  } while (len_squared_v2(rand_pos) > SQUARE(0.5f));
+  } while (len_squared_v2(rand_pos) > square_f(0.5f));
 
   if (brush->flag & BRUSH_ABSOLUTE_JITTER) {
     diameter = 2 * brush->jitter_absolute;
diff --git a/source/blender/blenkernel/intern/bvhutils.c b/source/blender/blenkernel/intern/bvhutils.c
index 0a5952e1b47..78723455f14 100644
--- a/source/blender/blenkernel/intern/bvhutils.c
+++ b/source/blender/blenkernel/intern/bvhutils.c
@@ -375,7 +375,7 @@ static void mesh_edges_spherecast(void *userdata,
   const MVert *vert = data->vert;
   const MEdge *edge = &data->edge[index];
 
-  const float radius_sq = SQUARE(ray->radius);
+  const float radius_sq = square_f(ray->radius);
   float dist;
   const float *v1, *v2, *r1;
   float r2[3], i1[3], i2[3];
diff --git a/source/blender/blenkernel/intern/collision.c b/source/blender/blenkernel/intern/collision.c
index 987791db101..62ad361570c 100644
--- a/source/blender/blenkernel/intern/collision.c
+++ b/source/blender/blenkernel/intern/collision.c
@@ -625,7 +625,7 @@ static void collision_compute_barycentric(const float pv[3],
 
   d = (a * c - b * b);
 
-  if (ABS(d) < (double)ALMOST_ZERO) {
+  if (fabs(d) < (double)ALMOST_ZERO) {
     *w1 = *w2 = *w3 = 1.0 / 3.0;
     return;
   }
@@ -856,18 +856,18 @@ static int cloth_collision_response_static(ClothModifierData *clmd,
 
       for (int j = 0; j < 3; j++) {
         if (cloth1->verts[collpair->ap1].impulse_count > 0 &&
-            ABS(cloth1->verts[collpair->ap1].impulse[j]) < ABS(i1[j])) {
+            fabsf(cloth1->verts[collpair->ap1].impulse[j]) < fabsf(i1[j])) {
           cloth1->verts[collpair->ap1].impulse[j] = i1[j];
         }
 
         if (cloth1->verts[collpair->ap2].impulse_count > 0 &&
-            ABS(cloth1->verts[collpair->ap2].impulse[j]) < ABS(i2[j])) {
+            fabsf(cloth1->verts[collpair->ap2].impulse[j]) < fabsf(i2[j])) {
           cloth1->verts[collpair->ap2].impulse[j] = i2[j];
         }
 
         if (!is_hair) {
           if (cloth1->verts[collpair->ap3].impulse_count > 0 &&
-              ABS(cloth1->verts[collpair->ap3].impulse[j]) < ABS(i3[j])) {
+              fabsf(cloth1->verts[collpair->ap3].impulse[j]) < fabsf(i3[j])) {
             cloth1->verts[collpair->ap3].impulse[j] = i3[j];
           }
         }
@@ -888,15 +888,15 @@ static void cloth_selfcollision_impulse_vert(const float clamp_sq,
     return;
   }
 
-  if (ABS(vert->impulse[0]) < ABS(impulse[0])) {
+  if (fabsf(vert->impulse[0]) < fabsf(impulse[0])) {
     vert->impulse[0] = impulse[0];
   }
 
-  if (ABS(vert->impulse[1]) < ABS(impulse[1])) {
+  if (fabsf(vert->impulse[1]) < fabsf(impulse[1])) {
     vert->impulse[1] = impulse[1];
   }
 
-  if (ABS(vert->impulse[2]) < ABS(impulse[2])) {
+  if (fabsf(vert->impulse[2]) < fabsf(impulse[2])) {
     vert->impulse[2] = impulse[2];
   }
 
diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c
index f751ccd66b0..9719704967e 100644
--- a/source/blender/blenkernel/intern/constraint.c
+++ b/source/blender/blenkernel/intern/constraint.c
@@ -485,7 +485,7 @@ static void contarget_get_mesh_mat(Object *ob, const char *substring, float mat[
   copy_v3_v3(plane, tmat[1]);
 
   cross_v3_v3v3(mat[0], normal, plane);
-  if (len_squared_v3(mat[0]) < SQUARE(1e-3f)) {
+  if (len_squared_v3(mat[0]) < square_f(1e-3f)) {
     copy_v3_v3(plane, tmat[0]);
     cross_v3_v3v3(mat[0], normal, plane);
   }
diff --git a/source/blender/blenkernel/intern/dynamicpaint.c b/source/blender/blenkernel/intern/dynamicpaint.c
index b8f9eac0f6c..7f71409a3f2 100644
--- a/source/blender/blenkernel/intern/dynamicpaint.c
+++ b/source/blender/blenkernel/intern/dynamicpaint.c
@@ -2705,7 +2705,7 @@ static void dynamic_paint_find_island_border(const DynamicPaintCreateUVSurfaceDa
       /* Check if it's close enough to likely touch the intended triangle. Any triangle
        * becomes thinner than a pixel at its vertices, so robustness requires some margin. */
       const float final_pt[2] = {((final_index % w) + 0.5f) / w, ((final_index / w) + 0.5f) / h};
-      const float threshold = SQUARE(0.7f) / (w * h);
+      const float threshold = square_f(0.7f) / (w * h);
 
       if (dist_squared_to_looptri_uv_edges(
               mlooptri, mloopuv, tempPoints[final_index].tri_index, final_pt) > threshold) {
diff --git a/source/blender/blenkernel/intern/effect.c b/source/blender/blenkernel/intern/effect.c
index 4a9efc7cac4..b12201df809 100644
--- a/source/blender/blenkernel/intern/effect.c
+++ b/source/blender/blenkernel/intern/effect.c
@@ -570,7 +570,7 @@ float effector_falloff(EffectorCache *eff,
         break;
 
       case PFIELD_FALL_TUBE:
-        falloff *= falloff_func_dist(eff->pd, ABS(fac));
+        falloff *= falloff_func_dist(eff->pd, fabsf(fac));
         if (falloff == 0.0f) {
           break;
         }
@@ -580,7 +580,7 @@ float effector_falloff(EffectorCache *eff,
         falloff *= falloff_func_rad(eff->pd, r_fac);
         break;
       case PFIELD_FALL_CONE:
-        falloff *= falloff_func_dist(eff->pd, ABS(fac));
+        falloff *= falloff_func_dist(eff->pd, fabsf(fac));
         if (falloff == 0.0f) {
           break;
         }
diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c
index ebc048ce286..7dfdc1e1008 100644
--- a/source/blender/blenkernel/intern/fcurve.c
+++ b/source/blender/blenkernel/intern/fcurve.c
@@ -1546,7 +1546,7 @@ static float dvar_eval_rotDiff(ChannelDriver *driver, DriverVar *dvar)
   invert_qt_normalized(q1);
   mul_qt_qtqt(quat, q1, q2);
   angle = 2.0f * (saacos(quat[0]));
-  angle = ABS(angle);
+  angle = fabsf(angle);
 
   return (angle > (float)M_PI) ? (float)((2.0f * (float)M_PI) - angle) : (float)(angle);
 }
diff --git a/source/blender/blenkernel/intern/mask.c b/source/blender/blenkernel/intern/mask.c
index 28ed7606cbf..a6535bc9b4a 100644
--- a/source/blender/blenkernel/intern/mask.c
+++ b/source/blender/blenkernel/intern/mask.c
@@ -398,7 +398,7 @@ float BKE_mask_spline_project_co(MaskSpline *spline,
   float u = -1.0f, du = 1.0f / N, u1 = start_u, u2 = start_u;
   float ang = -1.0f;
 
-  BLI_assert(ABS(sign) <= 1); /* (-1, 0, 1) */
+  BLI_assert(abs(sign) <= 1); /* (-1, 0, 1) */
 
   while (u1 > 0.0f || u2 < 1.0f) {
     float n1[2], n2[2], co1[2], co2[2];
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index c4e77b7fc80..67b94706986 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -341,8 +341,8 @@ static int customdata_compare(
       int ltot = m1->totloop;
 
       for (j = 0; j < ltot; j++, lp1++, lp2++) {
-        if (ABS(lp1->r - lp2->r) > thresh || ABS(lp1->g - lp2->g) > thresh ||
-            ABS(lp1->b - lp2->b) > thresh || ABS(lp1->a - lp2->a) > thresh) {
+        if (abs(lp1->r - lp2->r) > thresh || abs(lp1->g - lp2->g) > thresh ||
+            abs(lp1->b - lp2->b) > thresh || abs(lp1->a - lp2->a) > thresh) {
           return MESHCMP_LOOPCOLMISMATCH;
         }
       }
diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c
index 3447d37f1ab..f3d65f584d1 100644
--- a/source/blender/blenkernel/intern/multires.c
+++ b/source/blender/blenkernel/intern/multires.c
@@ -121,7 +121,7 @@ static BLI_bitmap *multires_mdisps_upsample_hidden(BLI_bitmap *lo_hidden,
     return MEM_dupallocN(lo_hidden);
   }
 
-  subd = BLI_BITMAP_NEW(SQUARE(hi_gridsize), "MDisps.hidden upsample");
+  subd = BLI_BITMAP_NEW(square_i(hi_gridsize), "MDisps.hidden upsample");
 
   factor = BKE_ccg_factor(lo_level, hi_level);
   offset = 1 << (hi_level - lo_level - 1);
@@ -179,7 +179,7 @@ static BLI_bitmap *multires_mdisps_downsample_hidden(BLI_bitmap *old_hidden,
 
   BLI_assert(new_level <= old_level);
   factor = BKE_ccg_factor(new_level, old_level);
-  new_hidden = BLI_BITMAP_NEW(SQUARE(new_gridsize), "downsample hidden");
+  new_hidden = BLI_BITMAP_NEW(square_i(new_gridsize), "downsample hidden");
 
   for (y = 0; y < new_gridsize; y++) {
     for (x = 0; x < new_gridsize; x++) {
@@ -238,7 +238,7 @@ static MDisps *multires_mdisps_initialize_hidden(Mesh *me, int level)
 {
   MDisps *mdisps = CustomData_add_layer(&me->ldata, CD_MDISPS, CD_CALLOC, NULL, me->totloop);
   int gridsize = BKE_ccg_gridsize(level);
-  int gridarea = SQUARE(gridsize);
+  int gridarea = square_i(gridsize);
   int i, j;
 
   for (i = 0; i < me->totpoly; i++) {
@@ -622,7 +622,7 @@ static void multires_grid_paint_mask_downsample(GridPaintMask *gpm, int level)
   if (level < gpm->level) {
     int gridsize = BKE_ccg_gridsize(level);
     float *data = MEM_calloc_arrayN(
-        SQUARE(gridsize), sizeof(float), "multires_grid_paint_mask_downsample");
+        square_i(gridsize), sizeof(float), "multires_grid_paint_mask_downsample");
     int x, y;
 
     for (y = 0; y < gridsize; y++) {
diff --git a/source/blender/blenkernel/intern/pbvh_bmesh.c b/source/blender/blenkernel/intern/pbvh_bmesh.c
index 7e42f370e9b..e30cf9a4a80 100644
--- a/source/blender/blenkernel/intern/pbvh_bmesh.c
+++ b/source/blender/blenkernel/intern/pbvh_bmesh.c
@@ -872,7 +872,7 @@ static void long_edge_queue_edge_add(EdgeQueueContext *eq_ctx, BMEdge *e)
 static void long_edge_queue_edge_add_recursive(
     EdgeQueueContext *eq_ctx, BMLoop *l_edge, BMLoop *l_end, const float len_sq, float limit_len)
 {
-  BLI_assert(len_sq > SQUARE(limit_len));
+  BLI_assert(len_sq > square_f(limit_len));
 
 #  ifdef USE_EDGEQUEUE_FRONTFACE
   if (eq_ctx->q->use_view_normal) {
@@ -905,7 +905,7 @@ static void long_edge_queue_edge_add_recursive(
     const float len_sq_cmp = len_sq * EVEN_EDGELEN_THRESHOLD;
 
     limit_len *= EVEN_GENERATION_SCALE;
-    const float limit_len_sq = SQUARE(limit_len);
+    

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list