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:
authorSergey Sharybin <sergey.vfx@gmail.com>2020-03-06 19:18:10 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2020-03-09 16:47:59 +0300
commit598ab525da3df3fef2033c159c570688c7282a8f (patch)
treeba2bd0b8fc6ee5d264512bf655def1a6ee5d7b31
parentee5d7bc16b243f309c84bce5deddf3a86b7f4c14 (diff)
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
-rw-r--r--source/blender/blenkernel/intern/brush.c2
-rw-r--r--source/blender/blenkernel/intern/bvhutils.c2
-rw-r--r--source/blender/blenkernel/intern/collision.c14
-rw-r--r--source/blender/blenkernel/intern/constraint.c2
-rw-r--r--source/blender/blenkernel/intern/dynamicpaint.c2
-rw-r--r--source/blender/blenkernel/intern/effect.c4
-rw-r--r--source/blender/blenkernel/intern/fcurve.c2
-rw-r--r--source/blender/blenkernel/intern/mask.c2
-rw-r--r--source/blender/blenkernel/intern/mesh.c4
-rw-r--r--source/blender/blenkernel/intern/multires.c8
-rw-r--r--source/blender/blenkernel/intern/pbvh_bmesh.c4
-rw-r--r--source/blender/blenkernel/intern/softbody.c6
-rw-r--r--source/blender/blenkernel/intern/studiolight.c29
-rw-r--r--source/blender/blenlib/BLI_math_base.h17
-rw-r--r--source/blender/blenlib/BLI_utildefines.h27
-rw-r--r--source/blender/blenlib/intern/kdtree_impl.h4
-rw-r--r--source/blender/blenlib/intern/listbase.c3
-rw-r--r--source/blender/blenlib/intern/math_base_inline.c66
-rw-r--r--source/blender/blenlib/intern/math_color_inline.c6
-rw-r--r--source/blender/blenlib/intern/math_geom.c4
-rw-r--r--source/blender/blenlib/intern/math_rotation.c2
-rw-r--r--source/blender/blenlib/intern/string.c3
-rw-r--r--source/blender/bmesh/intern/bmesh_edgeloop.c4
-rw-r--r--source/blender/bmesh/operators/bmo_planar_faces.c2
-rw-r--r--source/blender/bmesh/tools/bmesh_decimate_collapse.c2
-rw-r--r--source/blender/bmesh/tools/bmesh_intersect_edges.c10
-rw-r--r--source/blender/bmesh/tools/bmesh_region_match.c9
-rw-r--r--source/blender/compositor/operations/COM_VectorBlurOperation.cpp6
-rw-r--r--source/blender/draw/engines/eevee/eevee_lightprobes.c2
-rw-r--r--source/blender/draw/engines/eevee/eevee_private.h2
-rw-r--r--source/blender/draw/engines/workbench/workbench_data.c4
-rw-r--r--source/blender/draw/engines/workbench/workbench_effect_dof.c5
-rw-r--r--source/blender/draw/engines/workbench/workbench_effect_taa.c6
-rw-r--r--source/blender/draw/intern/draw_manager_exec.c2
-rw-r--r--source/blender/editors/armature/armature_utils.c3
-rw-r--r--source/blender/editors/curve/editcurve_paint.c6
-rw-r--r--source/blender/editors/gizmo_library/gizmo_types/arrow3d_gizmo.c4
-rw-r--r--source/blender/editors/gpencil/gpencil_primitive.c2
-rw-r--r--source/blender/editors/interface/interface_handlers.c16
-rw-r--r--source/blender/editors/interface/interface_utils.c2
-rw-r--r--source/blender/editors/mask/mask_ops.c4
-rw-r--r--source/blender/editors/mesh/editmesh_utils.c2
-rw-r--r--source/blender/editors/render/render_preview.c4
-rw-r--r--source/blender/editors/screen/area.c10
-rw-r--r--source/blender/editors/screen/area_utils.c2
-rw-r--r--source/blender/editors/screen/screen_edit.c16
-rw-r--r--source/blender/editors/screen/screen_ops.c20
-rw-r--r--source/blender/editors/sculpt_paint/paint_image_proj.c4
-rw-r--r--source/blender/editors/sculpt_paint/paint_stroke.c2
-rw-r--r--source/blender/editors/sculpt_paint/sculpt.c11
-rw-r--r--source/blender/editors/space_clip/tracking_ops.c2
-rw-r--r--source/blender/editors/space_clip/tracking_ops_plane.c2
-rw-r--r--source/blender/editors/space_image/image_undo.c10
-rw-r--r--source/blender/editors/space_node/drawnode.c6
-rw-r--r--source/blender/editors/space_view3d/view3d_edit.c4
-rw-r--r--source/blender/editors/transform/transform_snap_object.c16
-rw-r--r--source/blender/editors/uvedit/uvedit_ops.c2
-rw-r--r--source/blender/gpencil_modifiers/intern/MOD_gpencilhook.c2
-rw-r--r--source/blender/gpu/intern/gpu_buffers.c6
-rw-r--r--source/blender/ikplugin/intern/iksolver_plugin.c2
-rw-r--r--source/blender/makesrna/intern/makesrna.c3
-rw-r--r--source/blender/modifiers/intern/MOD_hook.c2
-rw-r--r--source/blender/modifiers/intern/MOD_screw.c2
-rw-r--r--source/blender/modifiers/intern/MOD_warp.c2
-rw-r--r--source/blender/modifiers/intern/MOD_weld.c2
-rw-r--r--source/blender/python/mathutils/mathutils_bvhtree.c2
-rw-r--r--source/blender/render/intern/source/initrender.c2
67 files changed, 256 insertions, 186 deletions
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);
+ const float limit_len_sq = square_f(limit_len);
BMLoop *l_iter = l_edge;
do {
diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c
index 4e75f4f0761..4eec5ac3605 100644
--- a/source/blender/blenkernel/intern/softbody.c
+++ b/source/blender/blenkernel/intern/softbody.c
@@ -1118,7 +1118,7 @@ static int sb_detect_face_pointCached(float face_v1[3],
/* origin to face_v2*/
sub_v3_v3(nv1, face_v2);
facedist = dot_v3v3(nv1, d_nvect);
- if (ABS(facedist) < outerfacethickness) {
+ if (fabsf(facedist) < outerfacethickness) {
if (isect_point_tri_prism_v3(nv1, face_v1, face_v2, face_v3)) {
float df;
if (facedist > 0) {
@@ -2020,7 +2020,7 @@ static int _softbody_calc_forces_slice_in_a_thread(Scene *scene,
sub_v3_v3v3(def, bp->pos, obp->pos);
/* rather check the AABBoxes before ever calculating the real distance */
/* mathematically it is completely nuts, but performance is pretty much (3) times faster */
- if ((ABS(def[0]) > compare) || (ABS(def[1]) > compare) || (ABS(def[2]) > compare)) {
+ if ((fabsf(def[0]) > compare) || (fabsf(def[1]) > compare) || (fabsf(def[2]) > compare)) {
continue;
}
distance = normalize_v3(def);
@@ -3414,7 +3414,7 @@ static void softbody_step(
}
forcetime = forcetimemax; /* hope for integrating in one step */
- while ((ABS(timedone) < ABS(dtime)) && (loops < 2000)) {
+ while ((fabsf(timedone) < fabsf(dtime)) && (loops < 2000)) {
/* set goals in time */
interpolate_exciter(ob, 200, (int)(200.0f * (timedone / dtime)));
diff --git a/source/blender/blenkernel/intern/studiolight.c b/source/blender/blenkernel/intern/studiolight.c
index 4a69fcfa9d0..18d11e4d4c6 100644
--- a/source/blender/blenkernel/intern/studiolight.c
+++ b/source/blender/blenkernel/intern/studiolight.c
@@ -609,8 +609,8 @@ static void studiolight_calculate_radiance_cubemap_buffers(StudioLight *sl)
BKE_studiolight_ensure_flag(sl, STUDIOLIGHT_EXTERNAL_IMAGE_LOADED);
ImBuf *ibuf = sl->equirect_radiance_buffer;
if (ibuf) {
- float *colbuf = MEM_mallocN(SQUARE(STUDIOLIGHT_RADIANCE_CUBEMAP_SIZE) * sizeof(float[4]),
- __func__);
+ float *colbuf = MEM_malloc_arrayN(
+ square_i(STUDIOLIGHT_RADIANCE_CUBEMAP_SIZE), sizeof(float[4]), __func__);
/* front */
studiolight_calculate_radiance_buffer(ibuf, colbuf, 0, 2, 1, 1, -1, 1);
@@ -772,11 +772,11 @@ static float studiolight_spherical_harmonics_lambda_get(float *sh, float max_lap
table_b[0] = 0.0f;
int index = 1;
for (int level = 1; level < STUDIOLIGHT_SH_BANDS; level++) {
- table_l[level] = (float)(SQUARE(level) * SQUARE(level + 1));
+ table_l[level] = (float)(square_i(level) * square_i(level + 1));
float b = 0.0f;
for (int m = -1; m <= level; m++) {
- b += SQUARE(sh[index++]);
+ b += square_f(sh[index++]);
}
table_b[level] = b;
}
@@ -797,9 +797,9 @@ static float studiolight_spherical_harmonics_lambda_get(float *sh, float max_lap
float fd = 0.0f;
for (int level = 1; level < STUDIOLIGHT_SH_BANDS; level++) {
- f += table_l[level] * table_b[level] / SQUARE(1.0f + lambda * table_l[level]);
- fd += (2.0f * SQUARE(table_l[level]) * table_b[level]) /
- CUBE(1.0f + lambda * table_l[level]);
+ f += table_l[level] * table_b[level] / square_f(1.0f + lambda * table_l[level]);
+ fd += (2.0f * square_f(table_l[level]) * table_b[level]) /
+ cube_f(1.0f + lambda * table_l[level]);
}
f = target_squared_laplacian - f;
@@ -807,7 +807,7 @@ static float studiolight_spherical_harmonics_lambda_get(float *sh, float max_lap
float delta = -f / fd;
lambda += delta;
- if (ABS(delta) < 1e-6f) {
+ if (fabsf(delta) < 1e-6f) {
break;
}
}
@@ -837,9 +837,11 @@ static void studiolight_spherical_harmonics_apply_windowing(float (*sh)[3], floa
int index = 0;
for (int level = 0; level < STUDIOLIGHT_SH_BANDS; level++) {
float s[3];
- s[0] = 1.0f / (1.0f + lambda_r * SQUARE(level) * SQUARE(level + 1.0f));
- s[1] = 1.0f / (1.0f + lambda_g * SQUARE(level) * SQUARE(level + 1.0f));
- s[2] = 1.0f / (1.0f + lambda_b * SQUARE(level) * SQUARE(level + 1.0f));
+ const int level_sq = square_i(level);
+ const int level_1_sq = square_i(level + 1.0f);
+ s[0] = 1.0f / (1.0f + lambda_r * level_sq * level_1_sq);
+ s[1] = 1.0f / (1.0f + lambda_g * level_sq * level_1_sq);
+ s[2] = 1.0f / (1.0f + lambda_b * level_sq * level_1_sq);
for (int m = -1; m <= level; m++) {
mul_v3_v3(sh[index++], s);
@@ -947,7 +949,8 @@ static void studiolight_spherical_harmonics_apply_band_factors(StudioLight *sl,
int index = 0, dst_idx = 0;
for (int band = 0; band < STUDIOLIGHT_SH_BANDS; band++) {
- for (int m = 0; m < SQUARE(band + 1) - SQUARE(band); m++) {
+ const int last_band = square_i(band + 1) - square_i(band);
+ for (int m = 0; m < last_band; m++) {
/* Skip L3 */
if (band != 3) {
mul_v3_v3fl(sl->spherical_harmonics_coefs[dst_idx++], sh[index], sl_sh_band_factors[band]);
@@ -1265,7 +1268,7 @@ static void sphere_normal_from_uv(float normal[3], float u, float v)
normal[0] = u * 2.0f - 1.0f;
normal[1] = v * 2.0f - 1.0f;
float dist = len_v2(normal);
- normal[2] = sqrtf(1.0f - SQUARE(dist));
+ normal[2] = sqrtf(1.0f - square_f(dist));
}
static void studiolight_radiance_preview(uint *icon_buffer, StudioLight *sl)
diff --git a/source/blender/blenlib/BLI_math_base.h b/source/blender/blenlib/BLI_math_base.h
index 4f841f75d3a..7555d3d7daf 100644
--- a/source/blender/blenlib/BLI_math_base.h
+++ b/source/blender/blenlib/BLI_math_base.h
@@ -114,6 +114,23 @@ MINLINE float sasqrt(float fac);
MINLINE float interpf(float a, float b, float t);
MINLINE double interpd(double a, double b, double t);
+/* NOTE: Compilers will upcast all types smaller than int to int when performing arithmetic
+ * operation. */
+MINLINE int square_s(short a);
+MINLINE int square_uchar(unsigned char a);
+MINLINE int cube_s(short a);
+MINLINE int cube_uchar(unsigned char a);
+
+MINLINE int square_i(int a);
+MINLINE unsigned int square_uint(unsigned int a);
+MINLINE float square_f(float a);
+MINLINE double square_d(double a);
+
+MINLINE int cube_i(int a);
+MINLINE unsigned int cube_uint(unsigned int a);
+MINLINE float cube_f(float a);
+MINLINE double cube_d(double a);
+
MINLINE float min_ff(float a, float b);
MINLINE float max_ff(float a, float b);
MINLINE float min_fff(float a, float b, float c);
diff --git a/source/blender/blenlib/BLI_utildefines.h b/source/blender/blenlib/BLI_utildefines.h
index 5d80da6de77..3565b6fb26b 100644
--- a/source/blender/blenlib/BLI_utildefines.h
+++ b/source/blender/blenlib/BLI_utildefines.h
@@ -293,33 +293,6 @@ extern "C" {
/** \name Simple Math Macros
* \{ */
-/* avoid multiple access for supported compilers */
-#if defined(__GNUC__) || defined(__clang__)
-
-# define ABS(a) \
- ({ \
- typeof(a) a_ = (a); \
- ((a_) < 0 ? (-(a_)) : (a_)); \
- })
-# define SQUARE(a) \
- ({ \
- typeof(a) a_ = (a); \
- ((a_) * (a_)); \
- })
-# define CUBE(a) \
- ({ \
- typeof(a) a_ = (a); \
- ((a_) * (a_) * (a_)); \
- })
-
-#else
-
-# define ABS(a) ((a) < 0 ? (-(a)) : (a))
-# define SQUARE(a) ((a) * (a))
-# define CUBE(a) ((a) * (a) * (a))
-
-#endif
-
/* Float equality checks. */
#define IS_EQ(a, b) \
diff --git a/source/blender/blenlib/intern/kdtree_impl.h b/source/blender/blenlib/intern/kdtree_impl.h
index 404e136a0a6..9e11ea903c2 100644
--- a/source/blender/blenlib/intern/kdtree_impl.h
+++ b/source/blender/blenlib/intern/kdtree_impl.h
@@ -79,7 +79,7 @@ static float len_squared_vnvn(const float v0[KD_DIMS], const float v1[KD_DIMS])
{
float d = 0.0f;
for (uint j = 0; j < KD_DIMS; j++) {
- d += SQUARE(v0[j] - v1[j]);
+ d += square_f(v0[j] - v1[j]);
}
return d;
}
@@ -893,7 +893,7 @@ int BLI_kdtree_nd_(calc_duplicates_fast)(const KDTree *tree,
struct DeDuplicateParams p = {
.nodes = tree->nodes,
.range = range,
- .range_sq = SQUARE(range),
+ .range_sq = square_f(range),
.duplicates = duplicates,
.duplicates_found = &found,
};
diff --git a/source/blender/blenlib/intern/listbase.c b/source/blender/blenlib/intern/listbase.c
index fe5f9f7673f..e43c4b07a87 100644
--- a/source/blender/blenlib/intern/listbase.c
+++ b/source/blender/blenlib/intern/listbase.c
@@ -485,7 +485,8 @@ bool BLI_listbase_link_move(ListBase *listbase, void *vlink, int step)
BLI_assert(BLI_findindex(listbase, link) != -1);
/* find link to insert before/after */
- for (int i = 0; i < ABS(step); i++) {
+ const int abs_step = abs(step);
+ for (int i = 0; i < abs_step; i++) {
hook = is_up ? hook->prev : hook->next;
if (!hook) {
return false;
diff --git a/source/blender/blenlib/intern/math_base_inline.c b/source/blender/blenlib/intern/math_base_inline.c
index c0ee658d434..a293695154a 100644
--- a/source/blender/blenlib/intern/math_base_inline.c
+++ b/source/blender/blenlib/intern/math_base_inline.c
@@ -375,6 +375,72 @@ MINLINE float wrapf(float value, float max, float min)
return (range != 0.0f) ? value - (range * floorf((value - min) / range)) : min;
}
+// Square.
+
+MINLINE int square_s(short a)
+{
+ return a * a;
+}
+
+MINLINE int square_i(int a)
+{
+ return a * a;
+}
+
+MINLINE unsigned int square_uint(unsigned int a)
+{
+ return a * a;
+}
+
+MINLINE int square_uchar(unsigned char a)
+{
+ return a * a;
+}
+
+MINLINE float square_f(float a)
+{
+ return a * a;
+}
+
+MINLINE double square_d(double a)
+{
+ return a * a;
+}
+
+// Cube.
+
+MINLINE int cube_s(short a)
+{
+ return a * a * a;
+}
+
+MINLINE int cube_i(int a)
+{
+ return a * a * a;
+}
+
+MINLINE unsigned int cube_uint(unsigned int a)
+{
+ return a * a * a;
+}
+
+MINLINE int cube_uchar(unsigned char a)
+{
+ return a * a * a;
+}
+
+MINLINE float cube_f(float a)
+{
+ return a * a * a;
+}
+
+MINLINE double cube_d(double a)
+{
+ return a * a * a;
+}
+
+// Min/max
+
MINLINE float min_ff(float a, float b)
{
return (a < b) ? a : b;
diff --git a/source/blender/blenlib/intern/math_color_inline.c b/source/blender/blenlib/intern/math_color_inline.c
index 66fd2780cf8..85aabbb672a 100644
--- a/source/blender/blenlib/intern/math_color_inline.c
+++ b/source/blender/blenlib/intern/math_color_inline.c
@@ -304,11 +304,11 @@ MINLINE int compare_rgb_uchar(const unsigned char col_a[3],
const int limit)
{
const int r = (int)col_a[0] - (int)col_b[0];
- if (ABS(r) < limit) {
+ if (abs(r) < limit) {
const int g = (int)col_a[1] - (int)col_b[1];
- if (ABS(g) < limit) {
+ if (abs(g) < limit) {
const int b = (int)col_a[2] - (int)col_b[2];
- if (ABS(b) < limit) {
+ if (abs(b) < limit) {
return 1;
}
}
diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c
index 0033265a5a2..7da080dbe9a 100644
--- a/source/blender/blenlib/intern/math_geom.c
+++ b/source/blender/blenlib/intern/math_geom.c
@@ -655,7 +655,7 @@ float dist_squared_ray_to_seg_v3(const float ray_origin[3],
*r_depth = depth;
}
- return len_squared_v3(dvec) - SQUARE(depth);
+ return len_squared_v3(dvec) - square_f(depth);
}
/* Returns the coordinates of the nearest vertex and
@@ -1311,7 +1311,7 @@ int isect_seg_seg_v2_point_ex(const float v0[2],
float u_a, u_b;
if (equals_v2v2(v0, v1)) {
- if (len_squared_v2v2(v2, v3) > SQUARE(eps)) {
+ if (len_squared_v2v2(v2, v3) > square_f(eps)) {
/* use non-point segment as basis */
SWAP(const float *, v0, v2);
SWAP(const float *, v1, v3);
diff --git a/source/blender/blenlib/intern/math_rotation.c b/source/blender/blenlib/intern/math_rotation.c
index 2a6652fa424..cc8042316f8 100644
--- a/source/blender/blenlib/intern/math_rotation.c
+++ b/source/blender/blenlib/intern/math_rotation.c
@@ -1953,7 +1953,7 @@ void mat4_to_dquat(DualQuat *dq, const float basemat[4][4], const float mat[4][4
copy_m3_m4(mat3, mat);
if (!is_orthonormal_m3(mat3) || (determinant_m4(mat) < 0.0f) ||
- len_squared_v3(dscale) > SQUARE(1e-4f)) {
+ len_squared_v3(dscale) > square_f(1e-4f)) {
/* extract R and S */
float tmp[4][4];
diff --git a/source/blender/blenlib/intern/string.c b/source/blender/blenlib/intern/string.c
index 99db2f0a290..db97cd3b065 100644
--- a/source/blender/blenlib/intern/string.c
+++ b/source/blender/blenlib/intern/string.c
@@ -25,6 +25,7 @@
#include <stdlib.h>
#include <stdarg.h>
#include <ctype.h>
+#include <math.h>
#include <inttypes.h>
#include "MEM_guardedalloc.h"
@@ -1119,7 +1120,7 @@ void BLI_str_format_byte_unit(char dst[15], long long int bytes, const bool base
BLI_STATIC_ASSERT(ARRAY_SIZE(units_base_2) == ARRAY_SIZE(units_base_10), "array size mismatch");
- while ((ABS(bytes_converted) >= base) && ((order + 1) < tot_units)) {
+ while ((fabs(bytes_converted) >= base) && ((order + 1) < tot_units)) {
bytes_converted /= base;
order++;
}
diff --git a/source/blender/bmesh/intern/bmesh_edgeloop.c b/source/blender/bmesh/intern/bmesh_edgeloop.c
index 49c71bf8298..c07bae5e3f2 100644
--- a/source/blender/bmesh/intern/bmesh_edgeloop.c
+++ b/source/blender/bmesh/intern/bmesh_edgeloop.c
@@ -82,7 +82,7 @@ static bool bm_loop_build(BMEdgeLoopStore *el_store, BMVert *v_prev, BMVert *v,
BMVert *v_next;
BMVert *v_first = v;
- BLI_assert(ABS(dir) == 1);
+ BLI_assert(abs(dir) == 1);
if (!BM_elem_flag_test(v, BM_ELEM_INTERNAL_TAG)) {
return true;
@@ -224,7 +224,7 @@ static bool bm_loop_path_build_step(BLI_mempool *vs_pool,
{
ListBase lb_tmp = {NULL, NULL};
struct VertStep *vs, *vs_next;
- BLI_assert(ABS(dir) == 1);
+ BLI_assert(abs(dir) == 1);
for (vs = lb->first; vs; vs = vs_next) {
BMIter iter;
diff --git a/source/blender/bmesh/operators/bmo_planar_faces.c b/source/blender/bmesh/operators/bmo_planar_faces.c
index 30aa473b2c7..9315d002d46 100644
--- a/source/blender/bmesh/operators/bmo_planar_faces.c
+++ b/source/blender/bmesh/operators/bmo_planar_faces.c
@@ -44,7 +44,7 @@ void bmo_planar_faces_exec(BMesh *bm, BMOperator *op)
const int faces_num = BMO_slot_buffer_count(op->slots_in, "faces");
const float eps = 0.00001f;
- const float eps_sq = SQUARE(eps);
+ const float eps_sq = square_f(eps);
BMOIter oiter;
BMFace *f;
diff --git a/source/blender/bmesh/tools/bmesh_decimate_collapse.c b/source/blender/bmesh/tools/bmesh_decimate_collapse.c
index 56febf12e71..c183f370faa 100644
--- a/source/blender/bmesh/tools/bmesh_decimate_collapse.c
+++ b/source/blender/bmesh/tools/bmesh_decimate_collapse.c
@@ -411,7 +411,7 @@ static int *bm_edge_symmetry_map(BMesh *bm, uint symmetry_axis, float limit)
BMEdge *e, **etable;
uint i;
int *edge_symmetry_map;
- const float limit_sq = SQUARE(limit);
+ const float limit_sq = square_f(limit);
KDTree_3d *tree;
tree = BLI_kdtree_3d_new(bm->totedge);
diff --git a/source/blender/bmesh/tools/bmesh_intersect_edges.c b/source/blender/bmesh/tools/bmesh_intersect_edges.c
index ce40256221e..6a51bceb6ac 100644
--- a/source/blender/bmesh/tools/bmesh_intersect_edges.c
+++ b/source/blender/bmesh/tools/bmesh_intersect_edges.c
@@ -272,7 +272,7 @@ static bool bm_edgexvert_isect_impl(BMVert *v,
}
if (v != e_v) {
- float dist_sq_vert = SQUARE(dist_sq_vert_factor) * len_squared_v3(dir);
+ float dist_sq_vert = square_f(dist_sq_vert_factor) * len_squared_v3(dir);
if (dist_sq_vert < data_dist_sq) {
/* Vert x Vert is already handled elsewhere. */
return false;
@@ -380,8 +380,8 @@ static bool bm_edgexedge_isect_impl(struct EDBMSplitData *data,
return false;
}
- float dist_sq_va = SQUARE(dist_sq_va_factor) * len_squared_v3(dir_a);
- float dist_sq_vb = SQUARE(dist_sq_vb_factor) * len_squared_v3(dir_b);
+ float dist_sq_va = square_f(dist_sq_va_factor) * len_squared_v3(dir_a);
+ float dist_sq_vb = square_f(dist_sq_vb_factor) * len_squared_v3(dir_b);
if (dist_sq_va < data->dist_sq || dist_sq_vb < data->dist_sq) {
/* Vert x Edge is already handled elsewhere. */
@@ -503,7 +503,7 @@ bool BM_mesh_intersect_edges(
BLI_Stack **pair_stack_vertxvert = pair_stack;
BLI_Stack **pair_stack_edgexelem = &pair_stack[KDOP_TREE_TYPE];
- const float dist_sq = SQUARE(dist);
+ const float dist_sq = square_f(dist);
const float dist_half = dist / 2;
struct EDBMSplitData data = {
@@ -511,7 +511,7 @@ bool BM_mesh_intersect_edges(
.pair_stack = pair_stack,
.cut_edges_len = 0,
.dist_sq = dist_sq,
- .dist_sq_sq = SQUARE(dist_sq),
+ .dist_sq_sq = square_f(dist_sq),
};
BM_mesh_elem_table_ensure(bm, BM_VERT | BM_EDGE);
diff --git a/source/blender/bmesh/tools/bmesh_region_match.c b/source/blender/bmesh/tools/bmesh_region_match.c
index c30992fa296..b4c2c3f091e 100644
--- a/source/blender/bmesh/tools/bmesh_region_match.c
+++ b/source/blender/bmesh/tools/bmesh_region_match.c
@@ -921,6 +921,11 @@ static void bm_face_array_visit(BMFace **faces,
/* signed user id */
typedef intptr_t SUID_Int;
+BLI_INLINE intptr_t abs_intptr(intptr_t a)
+{
+ return (a < 0) ? -a : a;
+}
+
static bool bm_edge_is_region_boundary(BMEdge *e)
{
if (e->l->radial_next != e->l) {
@@ -984,7 +989,7 @@ static SUID_Int bm_face_region_vert_boundary_id(BMVert *v)
id ^= (tot * PRIME_VERT_MID_B);
- return id ? ABS(id) : 1;
+ return id ? abs_intptr(id) : 1;
# undef PRIME_VERT_SMALL_A
# undef PRIME_VERT_SMALL_B
@@ -1039,7 +1044,7 @@ static SUID_Int bm_face_region_vert_pass_id(GHash *gh, BMVert *v)
/* disallow 0 & min (since it can't be flipped) */
id = (UNLIKELY(id == 0) ? 1 : UNLIKELY(id < id_min) ? id_min : id);
- return ABS(id);
+ return abs_intptr(id);
# undef PRIME_VERT_MID_A
# undef PRIME_VERT_MID_B
diff --git a/source/blender/compositor/operations/COM_VectorBlurOperation.cpp b/source/blender/compositor/operations/COM_VectorBlurOperation.cpp
index 8e67b8ac786..80df13966b1 100644
--- a/source/blender/compositor/operations/COM_VectorBlurOperation.cpp
+++ b/source/blender/compositor/operations/COM_VectorBlurOperation.cpp
@@ -659,7 +659,7 @@ void zbuf_accumulate_vecblur(NodeBlurData *nbd,
dvz[1] = dvec2[-3];
div++;
}
- else if ((ABS(dvec2[-4]) + ABS(dvec2[-3])) < (ABS(dvz[0]) + ABS(dvz[1]))) {
+ else if ((fabsf(dvec2[-4]) + fabsf(dvec2[-3])) < (fabsf(dvz[0]) + fabsf(dvz[1]))) {
dvz[0] = dvec2[-4];
dvz[1] = dvec2[-3];
}
@@ -673,7 +673,7 @@ void zbuf_accumulate_vecblur(NodeBlurData *nbd,
dvz[1] = dvec1[1];
div++;
}
- else if ((ABS(dvec1[0]) + ABS(dvec1[1])) < (ABS(dvz[0]) + ABS(dvz[1]))) {
+ else if ((fabsf(dvec1[0]) + fabsf(dvec1[1])) < (fabsf(dvz[0]) + fabsf(dvz[1]))) {
dvz[0] = dvec1[0];
dvz[1] = dvec1[1];
}
@@ -683,7 +683,7 @@ void zbuf_accumulate_vecblur(NodeBlurData *nbd,
dvz[0] = dvec2[0];
dvz[1] = dvec2[1];
}
- else if ((ABS(dvec2[0]) + ABS(dvec2[1])) < (ABS(dvz[0]) + ABS(dvz[1]))) {
+ else if ((fabsf(dvec2[0]) + fabsf(dvec2[1])) < (fabsf(dvz[0]) + fabsf(dvz[1]))) {
dvz[0] = dvec2[0];
dvz[1] = dvec2[1];
}
diff --git a/source/blender/draw/engines/eevee/eevee_lightprobes.c b/source/blender/draw/engines/eevee/eevee_lightprobes.c
index 1f12ef1f379..4fbecfe3120 100644
--- a/source/blender/draw/engines/eevee/eevee_lightprobes.c
+++ b/source/blender/draw/engines/eevee/eevee_lightprobes.c
@@ -765,7 +765,7 @@ void EEVEE_lightprobes_cache_finish(EEVEE_ViewLayerData *sldata, EEVEE_Data *ved
sldata->common_data.prb_lod_cube_max = (float)light_cache->mips_len - 1.0f;
sldata->common_data.prb_lod_planar_max = (float)MAX_PLANAR_LOD_LEVEL;
sldata->common_data.prb_irradiance_vis_size = light_cache->vis_res;
- sldata->common_data.prb_irradiance_smooth = SQUARE(scene_eval->eevee.gi_irradiance_smoothing);
+ sldata->common_data.prb_irradiance_smooth = square_f(scene_eval->eevee.gi_irradiance_smoothing);
sldata->common_data.prb_num_render_cube = max_ii(1, light_cache->cube_len);
sldata->common_data.prb_num_render_grid = max_ii(1, light_cache->grid_len);
sldata->common_data.prb_num_planar = pinfo->num_planar;
diff --git a/source/blender/draw/engines/eevee/eevee_private.h b/source/blender/draw/engines/eevee/eevee_private.h
index 9a8b2cb793a..5ffea393e1f 100644
--- a/source/blender/draw/engines/eevee/eevee_private.h
+++ b/source/blender/draw/engines/eevee/eevee_private.h
@@ -140,7 +140,7 @@ extern struct DrawEngineType draw_engine_eevee_type;
BLI_INLINE int octahedral_size_from_cubesize(int cube_size)
{
- int cube_pixel_count = SQUARE(cube_size) * 6.0f;
+ int cube_pixel_count = square_i(cube_size) * 6;
int octa_size = (int)ceilf(sqrtf(cube_pixel_count));
int lod_count = log2_floor_u(octa_size) - MIN_CUBE_LOD_LEVEL;
/* Find lowest lod size and grow back to avoid having non matching mipsizes that would
diff --git a/source/blender/draw/engines/workbench/workbench_data.c b/source/blender/draw/engines/workbench/workbench_data.c
index 056e6a6c364..623a3c0cb15 100644
--- a/source/blender/draw/engines/workbench/workbench_data.c
+++ b/source/blender/draw/engines/workbench/workbench_data.c
@@ -177,8 +177,8 @@ void workbench_private_data_init(WORKBENCH_PrivateData *wpd)
copy_v3_v3(wd->object_outline_color, wpd->shading.object_outline_color);
wd->object_outline_color[3] = 1.0f;
- wd->curvature_ridge = 0.5f / max_ff(SQUARE(wpd->shading.curvature_ridge_factor), 1e-4f);
- wd->curvature_valley = 0.7f / max_ff(SQUARE(wpd->shading.curvature_valley_factor), 1e-4f);
+ wd->curvature_ridge = 0.5f / max_ff(square_f(wpd->shading.curvature_ridge_factor), 1e-4f);
+ wd->curvature_valley = 0.7f / max_ff(square_f(wpd->shading.curvature_valley_factor), 1e-4f);
/* Will be NULL when rendering. */
if (RV3D_CLIPPING_ENABLED(v3d, rv3d)) {
diff --git a/source/blender/draw/engines/workbench/workbench_effect_dof.c b/source/blender/draw/engines/workbench/workbench_effect_dof.c
index 3709c5600e6..ae3e2218463 100644
--- a/source/blender/draw/engines/workbench/workbench_effect_dof.c
+++ b/source/blender/draw/engines/workbench/workbench_effect_dof.c
@@ -77,8 +77,9 @@ static void square_to_circle(float x, float y, float *r, float *T)
}
}
-#define KERNEL_RAD 3
-#define SAMP_LEN SQUARE(KERNEL_RAD * 2 + 1)
+#define SQUARE_UNSAFE(a) ((a) * (a))
+#define KERNEL_RAD (3)
+#define SAMP_LEN SQUARE_UNSAFE(KERNEL_RAD * 2 + 1)
static void workbench_dof_setup_samples(struct GPUUniformBuffer **ubo,
float **data,
diff --git a/source/blender/draw/engines/workbench/workbench_effect_taa.c b/source/blender/draw/engines/workbench/workbench_effect_taa.c
index 772d859392b..e2864f8c832 100644
--- a/source/blender/draw/engines/workbench/workbench_effect_taa.c
+++ b/source/blender/draw/engines/workbench/workbench_effect_taa.c
@@ -43,7 +43,7 @@ static void workbench_taa_jitter_init_order(float (*table)[2], int num)
float closest_squared_distance = 1.0f;
for (int index = 0; index < num; index++) {
- const float squared_dist = SQUARE(table[index][0]) + SQUARE(table[index][1]);
+ const float squared_dist = square_f(table[index][0]) + square_f(table[index][1]);
if (squared_dist < closest_squared_distance) {
closest_squared_distance = squared_dist;
closest_index = index;
@@ -66,8 +66,8 @@ static void workbench_taa_jitter_init_order(float (*table)[2], int num)
float f_squared_dist = 0.0;
int f_index = i;
for (int j = i + 1; j < num; j++) {
- const float squared_dist = SQUARE(table[i][0] - table[j][0]) +
- SQUARE(table[i][1] - table[j][1]);
+ const float squared_dist = square_f(table[i][0] - table[j][0]) +
+ square_f(table[i][1] - table[j][1]);
if (squared_dist > f_squared_dist) {
f_squared_dist = squared_dist;
f_index = j;
diff --git a/source/blender/draw/intern/draw_manager_exec.c b/source/blender/draw/intern/draw_manager_exec.c
index 807f17a5635..90de20c0d30 100644
--- a/source/blender/draw/intern/draw_manager_exec.c
+++ b/source/blender/draw/intern/draw_manager_exec.c
@@ -476,7 +476,7 @@ static bool draw_culling_sphere_test(const BoundSphere *frustum_bsphere,
/* Do a rough test first: Sphere VS Sphere intersect. */
float center_dist_sq = len_squared_v3v3(bsphere->center, frustum_bsphere->center);
float radius_sum = bsphere->radius + frustum_bsphere->radius;
- if (center_dist_sq > SQUARE(radius_sum)) {
+ if (center_dist_sq > square_f(radius_sum)) {
return false;
}
/* TODO we could test against the inscribed sphere of the frustum to early out positively. */
diff --git a/source/blender/editors/armature/armature_utils.c b/source/blender/editors/armature/armature_utils.c
index a291bbc66e8..76361f6785b 100644
--- a/source/blender/editors/armature/armature_utils.c
+++ b/source/blender/editors/armature/armature_utils.c
@@ -704,7 +704,8 @@ void ED_armature_from_edit(Main *bmain, bArmature *arm)
for (eBone = arm->edbo->first; eBone; eBone = neBone) {
float len_sq = len_squared_v3v3(eBone->head, eBone->tail);
neBone = eBone->next;
- if (len_sq <= SQUARE(0.000001f)) { /* FLT_EPSILON is too large? */
+ /* TODO(sergey): How to ensure this is a constexpr? */
+ if (len_sq <= square_f(0.000001f)) { /* FLT_EPSILON is too large? */
EditBone *fBone;
/* Find any bones that refer to this bone */
diff --git a/source/blender/editors/curve/editcurve_paint.c b/source/blender/editors/curve/editcurve_paint.c
index f97214991ef..85441c9b88d 100644
--- a/source/blender/editors/curve/editcurve_paint.c
+++ b/source/blender/editors/curve/editcurve_paint.c
@@ -481,7 +481,7 @@ static void curve_draw_event_add(wmOperator *op, const wmEvent *event)
if (cdd->sample.use_substeps && cdd->prev.selem) {
const struct StrokeElem selem_target = *selem;
struct StrokeElem *selem_new_last = selem;
- if (len_sq >= SQUARE(STROKE_SAMPLE_DIST_MAX_PX)) {
+ if (len_sq >= square_f(STROKE_SAMPLE_DIST_MAX_PX)) {
int n = (int)ceil(sqrt((double)len_sq)) / STROKE_SAMPLE_DIST_MAX_PX;
for (int i = 1; i < n; i++) {
@@ -685,7 +685,7 @@ static void curve_draw_exec_precalc(wmOperator *op)
}
if (len_squared_v2v2(selem_first->mval, selem_last->mval) <=
- SQUARE(STROKE_CYCLIC_DIST_PX * U.pixelsize)) {
+ square_f(STROKE_CYCLIC_DIST_PX * U.pixelsize)) {
use_cyclic = true;
}
}
@@ -1167,7 +1167,7 @@ static int curve_draw_modal(bContext *C, wmOperator *op, const wmEvent *event)
else if (ELEM(event->type, MOUSEMOVE, INBETWEEN_MOUSEMOVE)) {
if (cdd->state == CURVE_DRAW_PAINTING) {
const float mval_fl[2] = {UNPACK2(event->mval)};
- if (len_squared_v2v2(mval_fl, cdd->prev.mouse) > SQUARE(STROKE_SAMPLE_DIST_MIN_PX)) {
+ if (len_squared_v2v2(mval_fl, cdd->prev.mouse) > square_f(STROKE_SAMPLE_DIST_MIN_PX)) {
curve_draw_event_add(op, event);
}
}
diff --git a/source/blender/editors/gizmo_library/gizmo_types/arrow3d_gizmo.c b/source/blender/editors/gizmo_library/gizmo_types/arrow3d_gizmo.c
index 5a256c24c59..909be74cced 100644
--- a/source/blender/editors/gizmo_library/gizmo_types/arrow3d_gizmo.c
+++ b/source/blender/editors/gizmo_library/gizmo_types/arrow3d_gizmo.c
@@ -242,7 +242,7 @@ static int gizmo_arrow_test_select(bContext *UNUSED(C), wmGizmo *gz, const int m
const float arrow_head_threshold_px = 12 * UI_DPI_FAC;
/* Distance to arrow head. */
- if (len_squared_v2v2(mval_fl, arrow_end) < SQUARE(arrow_head_threshold_px)) {
+ if (len_squared_v2v2(mval_fl, arrow_end) < square_f(arrow_head_threshold_px)) {
return 0;
}
@@ -252,7 +252,7 @@ static int gizmo_arrow_test_select(bContext *UNUSED(C), wmGizmo *gz, const int m
/* Clamp inside the line, to avoid overlapping with other gizmos,
* especially around the start of the arrow. */
if (lambda >= 0.0 && lambda <= 1.0) {
- if (len_squared_v2v2(mval_fl, co_isect) < SQUARE(arrow_stem_threshold_px)) {
+ if (len_squared_v2v2(mval_fl, co_isect) < square_f(arrow_stem_threshold_px)) {
return 0;
}
}
diff --git a/source/blender/editors/gpencil/gpencil_primitive.c b/source/blender/editors/gpencil/gpencil_primitive.c
index 3ec14ee43b9..ad54382dde7 100644
--- a/source/blender/editors/gpencil/gpencil_primitive.c
+++ b/source/blender/editors/gpencil/gpencil_primitive.c
@@ -905,7 +905,7 @@ static void gp_primitive_update_strokes(bContext *C, tGPDprimitive *tgpi)
}
/* exponential value */
- const float exfactor = SQUARE(brush->gpencil_settings->draw_jitter + 2.0f);
+ const float exfactor = square_f(brush->gpencil_settings->draw_jitter + 2.0f);
const float fac = p2d->rnd[0] * exfactor * jitter;
/* vector */
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index e2909af47f3..6a9632f54bb 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -479,7 +479,7 @@ void ui_pan_to_scroll(const wmEvent *event, int *type, int *val)
else {
lastdy += dy;
- if (ABS(lastdy) > (int)UI_UNIT_Y) {
+ if (abs(lastdy) > (int)UI_UNIT_Y) {
if (U.uiflag2 & USER_TRACKPAD_NATURAL) {
dy = -dy;
}
@@ -568,7 +568,7 @@ static bool ui_but_dragedit_update_mval(uiHandleButtonData *data, int mx)
}
if (data->draglock) {
- if (ABS(mx - data->dragstartx) <= BUTTON_DRAGLOCK_THRESH) {
+ if (abs(mx - data->dragstartx) <= BUTTON_DRAGLOCK_THRESH) {
return false;
}
#ifdef USE_DRAG_MULTINUM
@@ -1855,7 +1855,7 @@ static bool ui_but_drag_init(bContext *C,
WM_event_drag_threshold(event),
(int)((UI_UNIT_Y / 2) * ui_block_to_window_scale(data->region, but->block)));
- if (ABS(data->dragstartx - event->x) + ABS(data->dragstarty - event->y) > drag_threshold) {
+ if (abs(data->dragstartx - event->x) + abs(data->dragstarty - event->y) > drag_threshold) {
button_activate_state(C, but, BUTTON_STATE_EXIT);
data->cancel = true;
#ifdef USE_DRAG_TOGGLE
@@ -6554,7 +6554,7 @@ static int ui_do_but_COLORBAND(
/* activate new key when mouse is close */
for (a = 0, cbd = coba->data; a < coba->tot; a++, cbd++) {
xco = but->rect.xmin + (cbd->pos * BLI_rctf_size_x(&but->rect));
- xco = ABS(xco - mx);
+ xco = abs(xco - mx);
if (a == coba->cur) {
/* Selected one disadvantage. */
xco += 5;
@@ -6739,7 +6739,7 @@ static int ui_do_but_CURVE(
CurveMap *cuma = cumap->cm + cumap->cur;
CurveMapPoint *cmp;
const float m_xy[2] = {mx, my};
- float dist_min_sq = SQUARE(U.dpi_fac * 14.0f); /* 14 pixels radius */
+ float dist_min_sq = square_f(U.dpi_fac * 14.0f); /* 14 pixels radius */
int sel = -1;
if (event->ctrl) {
@@ -6774,7 +6774,7 @@ static int ui_do_but_CURVE(
BLI_rctf_transform_pt_v(&but->rect, &cumap->curr, f_xy, &cmp[0].x);
/* with 160px height 8px should translate to the old 0.05 coefficient at no zoom */
- dist_min_sq = SQUARE(U.dpi_fac * 8.0f);
+ dist_min_sq = square_f(U.dpi_fac * 8.0f);
/* loop through the curve segment table and find what's near the mouse. */
for (i = 1; i <= CM_TABLE; i++) {
@@ -7046,7 +7046,7 @@ static int ui_do_but_CURVEPROFILE(
}
/* Check for selecting of a point by finding closest point in radius. */
- dist_min_sq = SQUARE(U.dpi_fac * 14.0f); /* 14 pixels radius for selecting points. */
+ dist_min_sq = square_f(U.dpi_fac * 14.0f); /* 14 pixels radius for selecting points. */
pts = profile->path;
for (i = 0; i < profile->path_len; i++) {
float f_xy[2];
@@ -7064,7 +7064,7 @@ static int ui_do_but_CURVEPROFILE(
pts = profile->table;
BLI_rctf_transform_pt_v(&but->rect, &profile->view_rect, f_xy, &pts[0].x);
- dist_min_sq = SQUARE(U.dpi_fac * 8.0f); /* 8 pixel radius from each table point. */
+ dist_min_sq = square_f(U.dpi_fac * 8.0f); /* 8 pixel radius from each table point. */
/* Loop through the path's high resolution table and find what's near the click. */
for (i = 1; i <= PROF_N_TABLE(profile->path_len); i++) {
diff --git a/source/blender/editors/interface/interface_utils.c b/source/blender/editors/interface/interface_utils.c
index 63e382e2280..034bd906add 100644
--- a/source/blender/editors/interface/interface_utils.c
+++ b/source/blender/editors/interface/interface_utils.c
@@ -525,7 +525,7 @@ int UI_calc_float_precision(int prec, double value)
* this is so 0.00001 is not displayed as 0.00,
* _but_, this is only for small values si 10.0001 will not get the same treatment.
*/
- value = ABS(value);
+ value = fabs(value);
if ((value < pow10_neg[prec]) && (value > (1.0 / max_pow))) {
int value_i = (int)((value * max_pow) + 0.5);
if (value_i != 0) {
diff --git a/source/blender/editors/mask/mask_ops.c b/source/blender/editors/mask/mask_ops.c
index cff0bcef38b..50f7466f7ed 100644
--- a/source/blender/editors/mask/mask_ops.c
+++ b/source/blender/editors/mask/mask_ops.c
@@ -614,7 +614,7 @@ static bool spline_under_mouse_get(const bContext *C,
}
}
}
- if (closest_dist_squared < SQUARE(threshold) && closest_spline != NULL) {
+ if (closest_dist_squared < square_f(threshold) && closest_spline != NULL) {
float diff_score;
if (ED_mask_find_nearest_diff_point(C,
mask,
@@ -629,7 +629,7 @@ static bool spline_under_mouse_get(const bContext *C,
NULL,
NULL,
&diff_score)) {
- if (SQUARE(diff_score) < closest_dist_squared) {
+ if (square_f(diff_score) < closest_dist_squared) {
return false;
}
}
diff --git a/source/blender/editors/mesh/editmesh_utils.c b/source/blender/editors/mesh/editmesh_utils.c
index e5f436bbe48..d281dc46b2c 100644
--- a/source/blender/editors/mesh/editmesh_utils.c
+++ b/source/blender/editors/mesh/editmesh_utils.c
@@ -1079,7 +1079,7 @@ void EDBM_verts_mirror_cache_begin_ex(BMEditMesh *em,
BMVert *v;
int cd_vmirr_offset = 0;
int i;
- const float maxdist_sq = SQUARE(maxdist);
+ const float maxdist_sq = square_f(maxdist);
/* one or the other is used depending if topo is enabled */
KDTree_3d *tree = NULL;
diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c
index b6c588c8c33..369572a5d6d 100644
--- a/source/blender/editors/render/render_preview.c
+++ b/source/blender/editors/render/render_preview.c
@@ -615,7 +615,7 @@ static bool ed_preview_draw_rect(ScrArea *sa, int split, int first, rcti *rect,
if (rv && rv->rectf) {
- if (ABS(rres.rectx - newx) < 2 && ABS(rres.recty - newy) < 2) {
+ if (abs(rres.rectx - newx) < 2 && abs(rres.recty - newy) < 2) {
newrect->xmax = max_ii(newrect->xmax, rect->xmin + rres.rectx + offx);
newrect->ymax = max_ii(newrect->ymax, rect->ymin + rres.recty);
@@ -694,7 +694,7 @@ void ED_preview_draw(const bContext *C, void *idp, void *parentp, void *slotp, r
* or if the job is running and the size of preview changed */
if ((sbuts != NULL && sbuts->preview) ||
(!ok && !WM_jobs_test(wm, sa, WM_JOB_TYPE_RENDER_PREVIEW)) ||
- (sp && (ABS(sp->sizex - newx) >= 2 || ABS(sp->sizey - newy) > 2))) {
+ (sp && (abs(sp->sizex - newx) >= 2 || abs(sp->sizey - newy) > 2))) {
if (sbuts != NULL) {
sbuts->preview = 0;
}
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c
index 85d84ad6864..e72818479c4 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -2533,7 +2533,7 @@ void ED_region_panels_layout_ex(const bContext *C,
region->sizey = size_dyn[1];
sa->flag |= AREA_FLAG_REGION_SIZE_UPDATE;
}
- y = ABS(region->sizey * UI_DPI_FAC - 1);
+ y = fabsf(region->sizey * UI_DPI_FAC - 1);
}
}
else if (vertical) {
@@ -3390,21 +3390,21 @@ static void region_visible_rect_calc(ARegion *region, rcti *rect)
if (ELEM(alignment, RGN_ALIGN_LEFT, RGN_ALIGN_RIGHT)) {
/* Overlap left, also check 1 pixel offset (2 regions on one side). */
- if (ABS(rect->xmin - arn->winrct.xmin) < 2) {
+ if (abs(rect->xmin - arn->winrct.xmin) < 2) {
rect->xmin = arn->winrct.xmax;
}
/* Overlap right. */
- if (ABS(rect->xmax - arn->winrct.xmax) < 2) {
+ if (abs(rect->xmax - arn->winrct.xmax) < 2) {
rect->xmax = arn->winrct.xmin;
}
}
else if (ELEM(alignment, RGN_ALIGN_TOP, RGN_ALIGN_BOTTOM)) {
/* Same logic as above for vertical regions. */
- if (ABS(rect->ymin - arn->winrct.ymin) < 2) {
+ if (abs(rect->ymin - arn->winrct.ymin) < 2) {
rect->ymin = arn->winrct.ymax;
}
- if (ABS(rect->ymax - arn->winrct.ymax) < 2) {
+ if (abs(rect->ymax - arn->winrct.ymax) < 2) {
rect->ymax = arn->winrct.ymin;
}
}
diff --git a/source/blender/editors/screen/area_utils.c b/source/blender/editors/screen/area_utils.c
index 003ba46be4f..cacd6b1edd7 100644
--- a/source/blender/editors/screen/area_utils.c
+++ b/source/blender/editors/screen/area_utils.c
@@ -81,7 +81,7 @@ int ED_region_generic_tools_region_snap_size(const ARegion *region, int size, in
if (size <= snap_units[ARRAY_SIZE(snap_units) - 1]) {
for (uint i = 0; i < ARRAY_SIZE(snap_units); i += 1) {
const int test_size = snap_units[i];
- const int test_diff = ABS(test_size - size);
+ const int test_diff = abs(test_size - size);
if (test_diff < best_diff) {
best_size = test_size;
best_diff = test_diff;
diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c
index 2000c707b8e..d62ea73876f 100644
--- a/source/blender/editors/screen/screen_edit.c
+++ b/source/blender/editors/screen/screen_edit.c
@@ -307,26 +307,26 @@ int area_getorientation(ScrArea *sa, ScrArea *sb)
int tolerance = U.pixelsize * 4;
if (saBL->vec.x == sbBR->vec.x && saTL->vec.x == sbTR->vec.x) { /* sa to right of sb = W */
- if ((ABS(saBL->vec.y - sbBR->vec.y) <= tolerance) &&
- (ABS(saTL->vec.y - sbTR->vec.y) <= tolerance)) {
+ if ((abs(saBL->vec.y - sbBR->vec.y) <= tolerance) &&
+ (abs(saTL->vec.y - sbTR->vec.y) <= tolerance)) {
return 0;
}
}
else if (saTL->vec.y == sbBL->vec.y && saTR->vec.y == sbBR->vec.y) { /* sa to bottom of sb = N */
- if ((ABS(saTL->vec.x - sbBL->vec.x) <= tolerance) &&
- (ABS(saTR->vec.x - sbBR->vec.x) <= tolerance)) {
+ if ((abs(saTL->vec.x - sbBL->vec.x) <= tolerance) &&
+ (abs(saTR->vec.x - sbBR->vec.x) <= tolerance)) {
return 1;
}
}
else if (saTR->vec.x == sbTL->vec.x && saBR->vec.x == sbBL->vec.x) { /* sa to left of sb = E */
- if ((ABS(saTR->vec.y - sbTL->vec.y) <= tolerance) &&
- (ABS(saBR->vec.y - sbBL->vec.y) <= tolerance)) {
+ if ((abs(saTR->vec.y - sbTL->vec.y) <= tolerance) &&
+ (abs(saBR->vec.y - sbBL->vec.y) <= tolerance)) {
return 2;
}
}
else if (saBL->vec.y == sbTL->vec.y && saBR->vec.y == sbTR->vec.y) { /* sa on top of sb = S*/
- if ((ABS(saBL->vec.x - sbTL->vec.x) <= tolerance) &&
- (ABS(saBR->vec.x - sbTR->vec.x) <= tolerance)) {
+ if ((abs(saBL->vec.x - sbTL->vec.x) <= tolerance) &&
+ (abs(saBR->vec.x - sbTR->vec.x) <= tolerance)) {
return 3;
}
}
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index 74c65765cbe..a9f44f54b3a 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -774,10 +774,10 @@ static AZone *area_actionzone_refresh_xy(ScrArea *sa, const int xy[2], const boo
az->alpha = 1.0f;
}
else {
- const int mouse_sq = SQUARE(xy[0] - az->x2) + SQUARE(xy[1] - az->y2);
- const int spot_sq = SQUARE(AZONESPOTW);
- const int fadein_sq = SQUARE(AZONEFADEIN);
- const int fadeout_sq = SQUARE(AZONEFADEOUT);
+ const int mouse_sq = square_i(xy[0] - az->x2) + square_i(xy[1] - az->y2);
+ const int spot_sq = square_i(AZONESPOTW);
+ const int fadein_sq = square_i(AZONEFADEIN);
+ const int fadeout_sq = square_i(AZONEFADEOUT);
if (mouse_sq < spot_sq) {
az->alpha = 1.0f;
@@ -1014,7 +1014,7 @@ static int actionzone_modal(bContext *C, wmOperator *op, const wmEvent *event)
const int delta_y = (event->y - sad->y);
/* Movement in dominant direction. */
- const int delta_max = max_ii(ABS(delta_x), ABS(delta_y));
+ const int delta_max = max_ii(abs(delta_x), abs(delta_y));
/* Movement in dominant direction before action taken. */
const int join_threshold = (0.6 * U.widget_unit);
@@ -1022,13 +1022,13 @@ static int actionzone_modal(bContext *C, wmOperator *op, const wmEvent *event)
const int area_threshold = (0.1 * U.widget_unit);
/* Calculate gesture cardinal direction. */
- if (delta_y > ABS(delta_x)) {
+ if (delta_y > abs(delta_x)) {
sad->gesture_dir = 'n';
}
- else if (delta_x >= ABS(delta_y)) {
+ else if (delta_x >= abs(delta_y)) {
sad->gesture_dir = 'e';
}
- else if (delta_y < -ABS(delta_x)) {
+ else if (delta_y < -abs(delta_x)) {
sad->gesture_dir = 's';
}
else {
@@ -2677,7 +2677,7 @@ static int region_scale_modal(bContext *C, wmOperator *op, const wmEvent *event)
if (rmd->region->type->snap_size) {
short sizex_test = rmd->region->type->snap_size(rmd->region, rmd->region->sizex, 0);
- if (ABS(rmd->region->sizex - sizex_test) < snap_size_threshold) {
+ if (abs(rmd->region->sizex - sizex_test) < snap_size_threshold) {
rmd->region->sizex = sizex_test;
}
}
@@ -2710,7 +2710,7 @@ static int region_scale_modal(bContext *C, wmOperator *op, const wmEvent *event)
if (rmd->region->type->snap_size) {
short sizey_test = rmd->region->type->snap_size(rmd->region, rmd->region->sizey, 1);
- if (ABS(rmd->region->sizey - sizey_test) < snap_size_threshold) {
+ if (abs(rmd->region->sizey - sizey_test) < snap_size_threshold) {
rmd->region->sizey = sizey_test;
}
}
diff --git a/source/blender/editors/sculpt_paint/paint_image_proj.c b/source/blender/editors/sculpt_paint/paint_image_proj.c
index 0f5ebcf9f71..cac377c7e33 100644
--- a/source/blender/editors/sculpt_paint/paint_image_proj.c
+++ b/source/blender/editors/sculpt_paint/paint_image_proj.c
@@ -1350,7 +1350,7 @@ static void uv_image_outset(const ProjPaintState *ps,
if (tri_ang > 0.0f) {
const float dist = ps->seam_bleed_px * tanf(tri_ang);
- seam_data->corner_dist_sq[i] = SQUARE(dist);
+ seam_data->corner_dist_sq[i] = square_f(dist);
}
else {
seam_data->corner_dist_sq[i] = 0.0f;
@@ -5886,7 +5886,7 @@ static void project_state_init(bContext *C, Object *ob, ProjPaintState *ps, int
#ifndef PROJ_DEBUG_NOSEAMBLEED
/* pixel num to bleed */
ps->seam_bleed_px = settings->imapaint.seam_bleed;
- ps->seam_bleed_px_sq = SQUARE(settings->imapaint.seam_bleed);
+ ps->seam_bleed_px_sq = square_s(settings->imapaint.seam_bleed);
#endif
if (ps->do_mask_normal) {
diff --git a/source/blender/editors/sculpt_paint/paint_stroke.c b/source/blender/editors/sculpt_paint/paint_stroke.c
index 72422770587..ee114d5f662 100644
--- a/source/blender/editors/sculpt_paint/paint_stroke.c
+++ b/source/blender/editors/sculpt_paint/paint_stroke.c
@@ -639,7 +639,7 @@ static bool paint_smooth_stroke(PaintStroke *stroke,
/* If the mouse is moving within the radius of the last move,
* don't update the mouse position. This allows sharp turns. */
- if (len_squared_v2v2(stroke->last_mouse_position, sample->mouse) < SQUARE(radius)) {
+ if (len_squared_v2v2(stroke->last_mouse_position, sample->mouse) < square_f(radius)) {
return false;
}
diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c
index 41bbaa94904..0fb5897628f 100644
--- a/source/blender/editors/sculpt_paint/sculpt.c
+++ b/source/blender/editors/sculpt_paint/sculpt.c
@@ -2364,7 +2364,7 @@ static PBVHNode **sculpt_pbvh_gather_generic(Object *ob,
SculptSearchSphereData data = {
.ss = ss,
.sd = sd,
- .radius_squared = SQUARE(ss->cache->radius * radius_scale),
+ .radius_squared = square_f(ss->cache->radius * radius_scale),
.original = use_original,
.ignore_fully_masked = brush->sculpt_tool != SCULPT_TOOL_MASK,
.center = NULL,
@@ -2378,7 +2378,8 @@ static PBVHNode **sculpt_pbvh_gather_generic(Object *ob,
SculptSearchCircleData data = {
.ss = ss,
.sd = sd,
- .radius_squared = ss->cache ? SQUARE(ss->cache->radius * radius_scale) : ss->cursor_radius,
+ .radius_squared = ss->cache ? square_f(ss->cache->radius * radius_scale) :
+ ss->cursor_radius,
.original = use_original,
.dist_ray_to_aabb_precalc = &dist_ray_to_aabb_precalc,
.ignore_fully_masked = brush->sculpt_tool != SCULPT_TOOL_MASK,
@@ -5710,7 +5711,7 @@ static void do_brush_action(Sculpt *sd, Object *ob, Brush *brush, UnifiedPaintSe
SculptSearchSphereData data = {
.ss = ss,
.sd = sd,
- .radius_squared = SQUARE(ss->cache->radius * (1.0 + brush->cloth_sim_limit)),
+ .radius_squared = square_f(ss->cache->radius * (1.0 + brush->cloth_sim_limit)),
.original = false,
.ignore_fully_masked = false,
.center = ss->cache->initial_location,
@@ -6795,7 +6796,7 @@ static void sculpt_update_brush_delta(UnifiedPaintSettings *ups, Object *ob, Bru
if ((normalize_v3(v2) > eps) && (normalize_v3(v1) > eps) &&
(len_squared_v3v3(v1, v2) > eps)) {
const float rake_dist_sq = len_squared_v3v3(cache->rake_data.follow_co, grab_location);
- const float rake_fade = (rake_dist_sq > SQUARE(cache->rake_data.follow_dist)) ?
+ const float rake_fade = (rake_dist_sq > square_f(cache->rake_data.follow_dist)) ?
1.0f :
sqrtf(rake_dist_sq) / cache->rake_data.follow_dist;
@@ -9780,7 +9781,7 @@ static int sculpt_mask_expand_modal(bContext *C, wmOperator *op, const wmEvent *
copy_v2_v2(prevclick_f, op->customdata);
int prevclick[2] = {(int)prevclick_f[0], (int)prevclick_f[1]};
int len = (int)len_v2v2_int(prevclick, event->mval);
- len = ABS(len);
+ len = abs(len);
int mask_speed = RNA_int_get(op->ptr, "mask_speed");
int mask_expand_update_it = len / mask_speed;
mask_expand_update_it = mask_expand_update_it + 1;
diff --git a/source/blender/editors/space_clip/tracking_ops.c b/source/blender/editors/space_clip/tracking_ops.c
index 030b0625e32..aab60f8bc6e 100644
--- a/source/blender/editors/space_clip/tracking_ops.c
+++ b/source/blender/editors/space_clip/tracking_ops.c
@@ -454,7 +454,7 @@ static float mouse_to_slide_zone_distance_squared(const float co[2],
{
const float pixel_co[2] = {co[0] * width, co[1] * height},
pixel_slide_zone[2] = {slide_zone[0] * width, slide_zone[1] * height};
- return SQUARE(pixel_co[0] - pixel_slide_zone[0]) + SQUARE(pixel_co[1] - pixel_slide_zone[1]);
+ return square_f(pixel_co[0] - pixel_slide_zone[0]) + square_f(pixel_co[1] - pixel_slide_zone[1]);
}
static float mouse_to_search_corner_distance_squared(
diff --git a/source/blender/editors/space_clip/tracking_ops_plane.c b/source/blender/editors/space_clip/tracking_ops_plane.c
index ced51e4502a..00861ab0270 100644
--- a/source/blender/editors/space_clip/tracking_ops_plane.c
+++ b/source/blender/editors/space_clip/tracking_ops_plane.c
@@ -117,7 +117,7 @@ static float mouse_to_plane_slide_zone_distance_squared(const float co[2],
{
const float pixel_co[2] = {co[0] * width, co[1] * height},
pixel_slide_zone[2] = {slide_zone[0] * width, slide_zone[1] * height};
- return SQUARE(pixel_co[0] - pixel_slide_zone[0]) + SQUARE(pixel_co[1] - pixel_slide_zone[1]);
+ return square_f(pixel_co[0] - pixel_slide_zone[0]) + square_f(pixel_co[1] - pixel_slide_zone[1]);
}
static MovieTrackingPlaneTrack *tracking_plane_marker_check_slide(bContext *C,
diff --git a/source/blender/editors/space_image/image_undo.c b/source/blender/editors/space_image/image_undo.c
index 79aa4d2ed7f..d18eb9a5410 100644
--- a/source/blender/editors/space_image/image_undo.c
+++ b/source/blender/editors/space_image/image_undo.c
@@ -161,7 +161,7 @@ void *ED_image_paint_tile_find(ListBase *paint_tiles,
if (r_mask) {
/* allocate mask if requested. */
if (!ptile->mask) {
- ptile->mask = MEM_callocN(sizeof(ushort) * SQUARE(ED_IMAGE_UNDO_TILE_SIZE),
+ ptile->mask = MEM_callocN(sizeof(ushort) * square_i(ED_IMAGE_UNDO_TILE_SIZE),
"UndoImageTile.mask");
}
*r_mask = ptile->mask;
@@ -216,12 +216,12 @@ void *ED_image_paint_tile_push(ListBase *paint_tiles,
/* add mask explicitly here */
if (r_mask) {
- *r_mask = ptile->mask = MEM_callocN(sizeof(ushort) * SQUARE(ED_IMAGE_UNDO_TILE_SIZE),
+ *r_mask = ptile->mask = MEM_callocN(sizeof(ushort) * square_i(ED_IMAGE_UNDO_TILE_SIZE),
"PaintTile.mask");
}
ptile->rect.pt = MEM_mapallocN((ibuf->rect_float ? sizeof(float[4]) : sizeof(char[4])) *
- SQUARE(ED_IMAGE_UNDO_TILE_SIZE),
+ square_i(ED_IMAGE_UNDO_TILE_SIZE),
"PaintTile.rect");
ptile->use_float = has_float;
@@ -333,10 +333,10 @@ static UndoImageTile *utile_alloc(bool has_float)
{
UndoImageTile *utile = MEM_callocN(sizeof(*utile), "ImageUndoTile");
if (has_float) {
- utile->rect.fp = MEM_mallocN(sizeof(float[4]) * SQUARE(ED_IMAGE_UNDO_TILE_SIZE), __func__);
+ utile->rect.fp = MEM_mallocN(sizeof(float[4]) * square_i(ED_IMAGE_UNDO_TILE_SIZE), __func__);
}
else {
- utile->rect.uint = MEM_mallocN(sizeof(uint) * SQUARE(ED_IMAGE_UNDO_TILE_SIZE), __func__);
+ utile->rect.uint = MEM_mallocN(sizeof(uint) * square_i(ED_IMAGE_UNDO_TILE_SIZE), __func__);
}
return utile;
}
diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c
index 148c1669b06..beaa8c2617e 100644
--- a/source/blender/editors/space_node/drawnode.c
+++ b/source/blender/editors/space_node/drawnode.c
@@ -651,7 +651,7 @@ static void node_draw_reroute(const bContext *C,
static int node_tweak_area_reroute(bNode *node, int x, int y)
{
/* square of tweak radius */
- const float tweak_radius_sq = SQUARE(24);
+ const float tweak_radius_sq = square_f(24.0f);
bNodeSocket *sock = node->inputs.first;
float dx = sock->locx - x;
@@ -3656,7 +3656,7 @@ static bool node_link_bezier_handles(View2D *v2d,
deltay = vec[3][1] - vec[0][1];
/* check direction later, for top sockets */
if (fromreroute) {
- if (ABS(deltax) > ABS(deltay)) {
+ if (fabsf(deltax) > fabsf(deltay)) {
vec[1][1] = vec[0][1];
vec[1][0] = vec[0][0] + (deltax > 0 ? dist : -dist);
}
@@ -3670,7 +3670,7 @@ static bool node_link_bezier_handles(View2D *v2d,
vec[1][1] = vec[0][1];
}
if (toreroute) {
- if (ABS(deltax) > ABS(deltay)) {
+ if (fabsf(deltax) > fabsf(deltay)) {
vec[2][1] = vec[3][1];
vec[2][0] = vec[3][0] + (deltax > 0 ? -dist : dist);
}
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c
index 415c275090d..13b38a04f63 100644
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@ -211,11 +211,11 @@ static void calctrackballvec(const rcti *rect, const int event_xy[2], float r_di
const float d = len_v2(r_dir);
if (d < t) {
/* Inside sphere. */
- r_dir[2] = sqrtf(SQUARE(radius) - SQUARE(d));
+ r_dir[2] = sqrtf(square_f(radius) - square_f(d));
}
else {
/* On hyperbola. */
- r_dir[2] = SQUARE(t) / d;
+ r_dir[2] = square_f(t) / d;
}
}
diff --git a/source/blender/editors/transform/transform_snap_object.c b/source/blender/editors/transform/transform_snap_object.c
index 841bc11edf1..e2d97ef9a91 100644
--- a/source/blender/editors/transform/transform_snap_object.c
+++ b/source/blender/editors/transform/transform_snap_object.c
@@ -1509,7 +1509,7 @@ static short snap_mesh_polygon(SnapObjectContext *sctx,
BVHTreeNearest nearest = {
.index = -1,
- .dist_sq = SQUARE(*dist_px),
+ .dist_sq = square_f(*dist_px),
};
SnapObjectData *sod = snap_object_data_lookup(sctx, ob);
@@ -1674,7 +1674,7 @@ static short snap_mesh_edge_verts_mixed(SnapObjectContext *sctx,
BVHTreeNearest nearest = {
.index = -1,
- .dist_sq = SQUARE(original_dist_px),
+ .dist_sq = square_f(original_dist_px),
};
float lambda;
@@ -1807,7 +1807,7 @@ static short snapArmature(SnapData *snapdata,
return retval;
}
- float lpmat[4][4], dist_px_sq = SQUARE(*dist_px);
+ float lpmat[4][4], dist_px_sq = square_f(*dist_px);
mul_m4_m4m4(lpmat, snapdata->pmat, obmat);
struct DistProjectedAABBPrecalc neasrest_precalc;
@@ -1954,7 +1954,7 @@ static short snapCurve(SnapData *snapdata,
}
Curve *cu = ob->data;
- float dist_px_sq = SQUARE(*dist_px);
+ float dist_px_sq = square_f(*dist_px);
float lpmat[4][4];
mul_m4_m4m4(lpmat, snapdata->pmat, obmat);
@@ -2115,7 +2115,7 @@ static short snapEmpty(SnapData *snapdata,
}
bool is_persp = snapdata->view_proj == VIEW_PROJ_PERSP;
- float dist_px_sq = SQUARE(*dist_px);
+ float dist_px_sq = square_f(*dist_px);
float co[3];
copy_v3_v3(co, obmat[3]);
if (test_projected_vert_dist(&neasrest_precalc,
@@ -2157,7 +2157,7 @@ static short snapCamera(const SnapObjectContext *sctx,
Scene *scene = sctx->scene;
bool is_persp = snapdata->view_proj == VIEW_PROJ_PERSP;
- float dist_px_sq = SQUARE(*dist_px);
+ float dist_px_sq = square_f(*dist_px);
float orig_camera_mat[4][4], orig_camera_imat[4][4], imat[4][4];
MovieClip *clip = BKE_object_movieclip_get(scene, object, false);
@@ -2268,7 +2268,7 @@ static short snapMesh(SnapObjectContext *sctx,
float lpmat[4][4];
mul_m4_m4m4(lpmat, snapdata->pmat, obmat);
- float dist_px_sq = SQUARE(*dist_px);
+ float dist_px_sq = square_f(*dist_px);
/* Test BoundBox */
BoundBox *bb = BKE_mesh_boundbox_get(ob);
@@ -2506,7 +2506,7 @@ static short snapEditMesh(SnapObjectContext *sctx,
float lpmat[4][4];
mul_m4_m4m4(lpmat, snapdata->pmat, obmat);
- float dist_px_sq = SQUARE(*dist_px);
+ float dist_px_sq = square_f(*dist_px);
SnapObjectData *sod = snap_object_data_editmesh_get(sctx, ob, em);
diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c
index 7172db788f1..41bb51340fc 100644
--- a/source/blender/editors/uvedit/uvedit_ops.c
+++ b/source/blender/editors/uvedit/uvedit_ops.c
@@ -971,7 +971,7 @@ bool uv_find_nearest_vert(Scene *scene,
MLoopUV *luv = BM_ELEM_CD_GET_VOID_P(l, cd_loop_uv_offset);
if (penalty_dist != 0.0f && uvedit_uv_select_test(scene, l, cd_loop_uv_offset)) {
dist_test_sq = len_v2v2(co, luv->uv) + penalty_dist;
- dist_test_sq = SQUARE(dist_test_sq);
+ dist_test_sq = square_f(dist_test_sq);
}
else {
dist_test_sq = len_squared_v2v2(co, luv->uv);
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilhook.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilhook.c
index 5a9dc78829f..ae51bad3ca3 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilhook.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilhook.c
@@ -224,7 +224,7 @@ static void deformStroke(GpencilModifierData *md,
tData.curfalloff = mmd->curfalloff;
tData.falloff_type = mmd->falloff_type;
tData.falloff = (mmd->falloff_type == eHook_Falloff_None) ? 0.0f : mmd->falloff;
- tData.falloff_sq = SQUARE(tData.falloff);
+ tData.falloff_sq = square_f(tData.falloff);
tData.fac_orig = mmd->force;
tData.use_falloff = (tData.falloff_sq != 0.0f);
tData.use_uniform = (mmd->flag & GP_HOOK_UNIFORM_SPACE) != 0;
diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c
index b4d18ba0928..4f02e3d9a2a 100644
--- a/source/blender/gpu/intern/gpu_buffers.c
+++ b/source/blender/gpu/intern/gpu_buffers.c
@@ -569,7 +569,7 @@ static void gpu_pbvh_grid_fill_index_buffers(
}
else {
uint offset = 0;
- const uint grid_vert_len = SQUARE(gridsize - 1) * 4;
+ const uint grid_vert_len = square_uint(gridsize - 1) * 4;
for (int i = 0; i < totgrid; i++, offset += grid_vert_len) {
bool grid_visible = false;
@@ -668,7 +668,7 @@ void GPU_pbvh_grid_buffers_update(GPU_PBVH_Buffers *buffers,
buffers->smooth = grid_flag_mats[grid_indices[0]].flag & ME_SMOOTH;
- uint vert_per_grid = (buffers->smooth) ? key->grid_area : (SQUARE(key->grid_size - 1) * 4);
+ uint vert_per_grid = (buffers->smooth) ? key->grid_area : (square_i(key->grid_size - 1) * 4);
uint vert_count = totgrid * vert_per_grid;
if (buffers->index_buf == NULL) {
@@ -784,7 +784,7 @@ void GPU_pbvh_grid_buffers_update(GPU_PBVH_Buffers *buffers,
vbo_index += 4;
}
}
- vbo_index_offset += SQUARE(key->grid_size - 1) * 4;
+ vbo_index_offset += square_i(key->grid_size - 1) * 4;
}
}
diff --git a/source/blender/ikplugin/intern/iksolver_plugin.c b/source/blender/ikplugin/intern/iksolver_plugin.c
index 775719ec33d..c4a0ee859f1 100644
--- a/source/blender/ikplugin/intern/iksolver_plugin.c
+++ b/source/blender/ikplugin/intern/iksolver_plugin.c
@@ -394,7 +394,7 @@ static void execute_posetree(struct Depsgraph *depsgraph,
IK_SetStiffness(seg, IK_Z, pchan->stiffness[2]);
if (tree->stretch && (pchan->ikstretch > 0.0f)) {
- const float ikstretch_sq = SQUARE(pchan->ikstretch);
+ const float ikstretch_sq = square_f(pchan->ikstretch);
/* this function does its own clamping */
IK_SetStiffness(seg, IK_TRANS_Y, 1.0f - ikstretch_sq);
IK_SetLimit(seg, IK_TRANS_Y, IK_STRETCH_STIFF_MIN, IK_STRETCH_STIFF_MAX);
diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c
index 7b23364bd90..b1143acfbee 100644
--- a/source/blender/makesrna/intern/makesrna.c
+++ b/source/blender/makesrna/intern/makesrna.c
@@ -21,6 +21,7 @@
#include <inttypes.h>
#include <float.h>
#include <limits.h>
+#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -588,7 +589,7 @@ static void rna_float_print(FILE *f, float num)
else if (num == FLT_MAX) {
fprintf(f, "FLT_MAX");
}
- else if ((ABS(num) < INT64_MAX) && ((int64_t)num == num)) {
+ else if ((fabsf(num) < INT64_MAX) && ((int64_t)num == num)) {
fprintf(f, "%.1ff", num);
}
else {
diff --git a/source/blender/modifiers/intern/MOD_hook.c b/source/blender/modifiers/intern/MOD_hook.c
index f09ec570202..720ca4ffa13 100644
--- a/source/blender/modifiers/intern/MOD_hook.c
+++ b/source/blender/modifiers/intern/MOD_hook.c
@@ -281,7 +281,7 @@ static void deformVerts_do(HookModifierData *hmd,
hd.falloff_type = hmd->falloff_type;
hd.falloff = (hmd->falloff_type == eHook_Falloff_None) ? 0.0f : hmd->falloff;
- hd.falloff_sq = SQUARE(hd.falloff);
+ hd.falloff_sq = square_f(hd.falloff);
hd.fac_orig = hmd->force;
hd.use_falloff = (hd.falloff_sq != 0.0f);
diff --git a/source/blender/modifiers/intern/MOD_screw.c b/source/blender/modifiers/intern/MOD_screw.c
index a50b703756e..460fd906986 100644
--- a/source/blender/modifiers/intern/MOD_screw.c
+++ b/source/blender/modifiers/intern/MOD_screw.c
@@ -112,7 +112,7 @@ static Mesh *mesh_remove_doubles_on_axis(Mesh *result,
const float axis_offset[3],
const float merge_threshold)
{
- const float merge_threshold_sq = SQUARE(merge_threshold);
+ const float merge_threshold_sq = square_f(merge_threshold);
const bool use_offset = axis_offset != NULL;
uint tot_doubles = 0;
for (uint i = 0; i < totvert; i += 1) {
diff --git a/source/blender/modifiers/intern/MOD_warp.c b/source/blender/modifiers/intern/MOD_warp.c
index 8cfe6a17b01..9d037455579 100644
--- a/source/blender/modifiers/intern/MOD_warp.c
+++ b/source/blender/modifiers/intern/MOD_warp.c
@@ -169,7 +169,7 @@ static void warpModifier_do(WarpModifierData *wmd,
float tmat[4][4];
- const float falloff_radius_sq = SQUARE(wmd->falloff_radius);
+ const float falloff_radius_sq = square_f(wmd->falloff_radius);
float strength = wmd->strength;
float fac = 1.0f, weight;
int i;
diff --git a/source/blender/modifiers/intern/MOD_weld.c b/source/blender/modifiers/intern/MOD_weld.c
index f12162f9173..609c9c33d24 100644
--- a/source/blender/modifiers/intern/MOD_weld.c
+++ b/source/blender/modifiers/intern/MOD_weld.c
@@ -1663,7 +1663,7 @@ static Mesh *weldModifier_doWeld(WeldModifierData *wmd, const ModifierEvalContex
struct WeldOverlapData data;
data.mvert = mvert;
- data.merge_dist_sq = SQUARE(wmd->merge_dist);
+ data.merge_dist_sq = square_f(wmd->merge_dist);
uint overlap_len;
BVHTreeOverlap *overlap = BLI_bvhtree_overlap_ex(bvhtree,
diff --git a/source/blender/python/mathutils/mathutils_bvhtree.c b/source/blender/python/mathutils/mathutils_bvhtree.c
index ecc128bf008..ad88bd8cd84 100644
--- a/source/blender/python/mathutils/mathutils_bvhtree.c
+++ b/source/blender/python/mathutils/mathutils_bvhtree.c
@@ -493,7 +493,7 @@ static PyObject *py_bvhtree_find_nearest_range(PyBVHTree *self, PyObject *args)
struct PyBVH_RangeData data = {
.self = self,
.result = ret,
- .dist_sq = SQUARE(max_dist),
+ .dist_sq = square_f(max_dist),
};
BLI_bvhtree_range_query(self->tree, co, max_dist, py_bvhtree_nearest_point_range_cb, &data);
diff --git a/source/blender/render/intern/source/initrender.c b/source/blender/render/intern/source/initrender.c
index acdd801bd86..e2e2e09d393 100644
--- a/source/blender/render/intern/source/initrender.c
+++ b/source/blender/render/intern/source/initrender.c
@@ -129,7 +129,7 @@ float RE_filter_value(int type, float x)
{
float gaussfac = 1.6f;
- x = ABS(x);
+ x = fabsf(x);
switch (type) {
case R_FILTER_BOX: