[Bf-blender-cvs] [a2e0f714f28] master: Cleanup: Remove unecessary variables
Hans Goudey
noreply at git.blender.org
Wed Aug 25 04:57:55 CEST 2021
Commit: a2e0f714f28559c85082ef039d9f7d829c5afdf3
Author: Hans Goudey
Date: Tue Aug 24 21:57:45 2021 -0500
Branches: master
https://developer.blender.org/rBa2e0f714f28559c85082ef039d9f7d829c5afdf3
Cleanup: Remove unecessary variables
Instead of passing separate booleans for whether to store the locations
and distances, check if the spans are empty. And instead of passing a
separate boolean for whether there is valid tree data, pass a pointer
to the data.
===================================================================
M source/blender/nodes/geometry/nodes/node_geo_attribute_proximity.cc
===================================================================
diff --git a/source/blender/nodes/geometry/nodes/node_geo_attribute_proximity.cc b/source/blender/nodes/geometry/nodes/node_geo_attribute_proximity.cc
index d71cb09f1bd..ad017ce7cf3 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_attribute_proximity.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_attribute_proximity.cc
@@ -63,15 +63,10 @@ namespace blender::nodes {
static void proximity_calc(MutableSpan<float> distance_span,
MutableSpan<float3> location_span,
const VArray<float3> &positions,
- BVHTreeFromMesh &tree_data_mesh,
- BVHTreeFromPointCloud &tree_data_pointcloud,
- const bool bvh_mesh_success,
- const bool bvh_pointcloud_success,
- const bool store_distances,
- const bool store_locations)
+ BVHTreeFromMesh *tree_data_mesh,
+ BVHTreeFromPointCloud *tree_data_pointcloud)
{
- IndexRange range = positions.index_range();
- threading::parallel_for(range, 512, [&](IndexRange range) {
+ threading::parallel_for(positions.index_range(), 512, [&](IndexRange range) {
BVHTreeNearest nearest_from_mesh;
BVHTreeNearest nearest_from_pointcloud;
@@ -85,12 +80,12 @@ static void proximity_calc(MutableSpan<float> distance_span,
/* Use the distance to the last found point as upper bound to speedup the bvh lookup. */
nearest_from_mesh.dist_sq = len_squared_v3v3(nearest_from_mesh.co, positions[i]);
- if (bvh_mesh_success) {
- BLI_bvhtree_find_nearest(tree_data_mesh.tree,
+ if (tree_data_mesh != nullptr) {
+ BLI_bvhtree_find_nearest(tree_data_mesh->tree,
positions[i],
&nearest_from_mesh,
- tree_data_mesh.nearest_callback,
- &tree_data_mesh);
+ tree_data_mesh->nearest_callback,
+ tree_data_mesh);
}
/* Use the distance to the closest point in the mesh to speedup the pointcloud bvh lookup.
@@ -98,27 +93,27 @@ static void proximity_calc(MutableSpan<float> distance_span,
* than the mesh. */
nearest_from_pointcloud.dist_sq = nearest_from_mesh.dist_sq;
- if (bvh_pointcloud_success) {
- BLI_bvhtree_find_nearest(tree_data_pointcloud.tree,
+ if (tree_data_pointcloud != nullptr) {
+ BLI_bvhtree_find_nearest(tree_data_pointcloud->tree,
positions[i],
&nearest_from_pointcloud,
- tree_data_pointcloud.nearest_callback,
- &tree_data_pointcloud);
+ tree_data_pointcloud->nearest_callback,
+ tree_data_pointcloud);
}
if (nearest_from_pointcloud.dist_sq < nearest_from_mesh.dist_sq) {
- if (store_distances) {
+ if (!distance_span.is_empty()) {
distance_span[i] = sqrtf(nearest_from_pointcloud.dist_sq);
}
- if (store_locations) {
+ if (!location_span.is_empty()) {
location_span[i] = nearest_from_pointcloud.co;
}
}
else {
- if (store_distances) {
+ if (!distance_span.is_empty()) {
distance_span[i] = sqrtf(nearest_from_mesh.dist_sq);
}
- if (store_locations) {
+ if (!location_span.is_empty()) {
location_span[i] = nearest_from_mesh.co;
}
}
@@ -181,20 +176,18 @@ static void attribute_calc_proximity(GeometryComponent &component,
}
BLI_assert(position_attribute.varray->type().is<float3>());
- const bNode &node = params.node();
- const NodeGeometryAttributeProximity &storage = *(const NodeGeometryAttributeProximity *)
- node.storage;
+ const NodeGeometryAttributeProximity &storage =
+ *(const NodeGeometryAttributeProximity *)params.node().storage;
- BVHTreeFromMesh tree_data_mesh;
- BVHTreeFromPointCloud tree_data_pointcloud;
bool bvh_mesh_success = false;
- bool bvh_pointcloud_success = false;
-
+ BVHTreeFromMesh tree_data_mesh;
if (geometry_set_target.has_mesh()) {
bvh_mesh_success = bvh_from_mesh(
geometry_set_target.get_mesh_for_read(), storage.target_geometry_element, tree_data_mesh);
}
+ bool bvh_pointcloud_success = false;
+ BVHTreeFromPointCloud tree_data_pointcloud;
if (geometry_set_target.has_pointcloud() &&
storage.target_geometry_element ==
GEO_NODE_ATTRIBUTE_PROXIMITY_TARGET_GEOMETRY_ELEMENT_POINTS) {
@@ -211,12 +204,8 @@ static void attribute_calc_proximity(GeometryComponent &component,
proximity_calc(distance_span,
location_span,
positions,
- tree_data_mesh,
- tree_data_pointcloud,
- bvh_mesh_success,
- bvh_pointcloud_success,
- distance_attribute, /* Boolean. */
- location_attribute); /* Boolean. */
+ bvh_mesh_success ? &tree_data_mesh : nullptr,
+ bvh_pointcloud_success ? &tree_data_pointcloud : nullptr);
if (bvh_mesh_success) {
free_bvhtree_from_mesh(&tree_data_mesh);
More information about the Bf-blender-cvs
mailing list