[Bf-blender-cvs] [bdd34d2cfbb] soc-2022-many-lights-sampling: Cleanup: prims after swapping already ordered
Weizhen Huang
noreply at git.blender.org
Tue Nov 22 11:16:15 CET 2022
Commit: bdd34d2cfbbff4cc202641d98b2daa345938555a
Author: Weizhen Huang
Date: Tue Nov 22 11:15:39 2022 +0100
Branches: soc-2022-many-lights-sampling
https://developer.blender.org/rBbdd34d2cfbbff4cc202641d98b2daa345938555a
Cleanup: prims after swapping already ordered
===================================================================
M intern/cycles/scene/light_tree.cpp
M intern/cycles/scene/light_tree.h
===================================================================
diff --git a/intern/cycles/scene/light_tree.cpp b/intern/cycles/scene/light_tree.cpp
index f051f30a5fe..88315e61f7d 100644
--- a/intern/cycles/scene/light_tree.cpp
+++ b/intern/cycles/scene/light_tree.cpp
@@ -192,18 +192,11 @@ LightTree::LightTree(vector<LightTreePrimitive> &prims, uint max_lights_in_leaf)
}
max_lights_in_leaf_ = max_lights_in_leaf;
-
- for (int i = 0; i < prims.size(); i++) {
- prims[i].prim_num = i;
- }
-
- vector<LightTreePrimitive> ordered_prims;
int num_prims = prims.size();
- ordered_prims.reserve(num_prims);
/* The amount of nodes is estimated to be twice the amount of primitives */
nodes_.reserve(2 * num_prims);
- recursive_build(0, num_prims, prims, ordered_prims, 0, 0);
- prims = std::move(ordered_prims);
+
+ recursive_build(0, num_prims, prims, 0, 0);
nodes_.shrink_to_fit();
}
@@ -213,12 +206,8 @@ const vector<LightTreeNode> &LightTree::get_nodes() const
return nodes_;
}
-int LightTree::recursive_build(int start,
- int end,
- vector<LightTreePrimitive> &prims,
- vector<LightTreePrimitive> &ordered_prims,
- uint bit_trail,
- int depth)
+int LightTree::recursive_build(
+ int start, int end, vector<LightTreePrimitive> &prims, uint bit_trail, int depth)
{
BoundBox bbox = BoundBox::empty;
OrientationBounds bcone = OrientationBounds::empty;
@@ -270,7 +259,6 @@ int LightTree::recursive_build(int start,
}
if (left < right) {
- std::swap(prims[left].prim_num, prims[right].prim_num);
std::swap(prims[left], prims[right]);
}
}
@@ -282,19 +270,13 @@ int LightTree::recursive_build(int start,
middle = (start + end) / 2;
}
- int left_index = recursive_build(start, middle, prims, ordered_prims, bit_trail, depth + 1);
- int right_index = recursive_build(
- middle, end, prims, ordered_prims, bit_trail | (1u << depth), depth + 1);
+ int left_index = recursive_build(start, middle, prims, bit_trail, depth + 1);
+ int right_index = recursive_build(middle, end, prims, bit_trail | (1u << depth), depth + 1);
assert(left_index == current_index + 1);
nodes_[current_index].make_interior(right_index);
}
else {
- int first_prim_offset = ordered_prims.size();
- for (int i = start; i < end; i++) {
- int prim_num = prims[i].prim_num;
- ordered_prims.push_back(prims[prim_num]);
- }
- nodes_[current_index].make_leaf(first_prim_offset, num_prims);
+ nodes_[current_index].make_leaf(start, num_prims);
}
return current_index;
}
diff --git a/intern/cycles/scene/light_tree.h b/intern/cycles/scene/light_tree.h
index 53f2261a9b8..bd77d2a9d78 100644
--- a/intern/cycles/scene/light_tree.h
+++ b/intern/cycles/scene/light_tree.h
@@ -61,7 +61,6 @@ struct LightTreePrimitive {
int prim_id;
int object_id;
- int prim_num;
float energy;
float3 centroid;
OrientationBounds bcone;
@@ -144,7 +143,6 @@ class LightTree {
int recursive_build(int start,
int end,
vector<LightTreePrimitive> &prims,
- vector<LightTreePrimitive> &ordered_prims,
uint bit_trail,
int depth);
float min_split_saoh(const BoundBox ¢roid_bounds,
More information about the Bf-blender-cvs
mailing list