[Bf-blender-cvs] [1d19c96a1f5] soc-2020-io-performance: Remove depsgraph member variable; use const variables.

Ankit Meel noreply at git.blender.org
Wed Sep 16 13:05:54 CEST 2020


Commit: 1d19c96a1f57fafeaabbf2e30f06ceb648a92b71
Author: Ankit Meel
Date:   Wed Sep 16 14:29:19 2020 +0530
Branches: soc-2020-io-performance
https://developer.blender.org/rB1d19c96a1f57fafeaabbf2e30f06ceb648a92b71

Remove depsgraph member variable; use const variables.

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

M	source/blender/io/wavefront_obj/intern/obj_export_file_writer.cc
M	source/blender/io/wavefront_obj/intern/obj_export_mesh.cc
M	source/blender/io/wavefront_obj/intern/obj_export_mesh.hh

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

diff --git a/source/blender/io/wavefront_obj/intern/obj_export_file_writer.cc b/source/blender/io/wavefront_obj/intern/obj_export_file_writer.cc
index d42ce309679..e02096046b4 100644
--- a/source/blender/io/wavefront_obj/intern/obj_export_file_writer.cc
+++ b/source/blender/io/wavefront_obj/intern/obj_export_file_writer.cc
@@ -158,7 +158,8 @@ void OBJWriter::write_object_name(const OBJMesh &obj_mesh_data) const
  */
 void OBJWriter::write_vertex_coords(const OBJMesh &obj_mesh_data) const
 {
-  for (uint i = 0; i < obj_mesh_data.tot_vertices(); i++) {
+  const int tot_vertices = obj_mesh_data.tot_vertices();
+  for (uint i = 0; i < tot_vertices; i++) {
     float3 vertex = obj_mesh_data.calc_vertex_coords(i, export_params_.scaling_factor);
     fprintf(outfile_, "v %f %f %f\n", vertex[0], vertex[1], vertex[2]);
   }
@@ -186,7 +187,8 @@ void OBJWriter::write_poly_normals(OBJMesh &obj_mesh_data) const
 {
   obj_mesh_data.ensure_mesh_normals();
   Vector<float3> lnormals;
-  for (uint i = 0; i < obj_mesh_data.tot_polygons(); i++) {
+  const int tot_polygons = obj_mesh_data.tot_polygons();
+  for (uint i = 0; i < tot_polygons; i++) {
     if (obj_mesh_data.is_ith_poly_smooth(i)) {
       obj_mesh_data.calc_loop_normals(i, lnormals);
       for (const float3 &lnormal : lnormals) {
@@ -357,7 +359,8 @@ void OBJWriter::write_poly_elements(const OBJMesh &obj_mesh_data)
 void OBJWriter::write_edges_indices(const OBJMesh &obj_mesh_data) const
 {
   obj_mesh_data.ensure_mesh_edges();
-  for (uint edge_index = 0; edge_index < obj_mesh_data.tot_edges(); edge_index++) {
+  const int tot_edges = obj_mesh_data.tot_edges();
+  for (uint edge_index = 0; edge_index < tot_edges; edge_index++) {
     std::optional<std::array<int, 2>> vertex_indices = obj_mesh_data.calc_loose_edge_vert_indices(
         edge_index);
     if (!vertex_indices) {
diff --git a/source/blender/io/wavefront_obj/intern/obj_export_mesh.cc b/source/blender/io/wavefront_obj/intern/obj_export_mesh.cc
index 1109a017a04..cb6b0da3a14 100644
--- a/source/blender/io/wavefront_obj/intern/obj_export_mesh.cc
+++ b/source/blender/io/wavefront_obj/intern/obj_export_mesh.cc
@@ -47,9 +47,8 @@ namespace blender::io::obj {
  * meshes.
  */
 OBJMesh::OBJMesh(Depsgraph *depsgraph, const OBJExportParams &export_params, Object *export_object)
-    : depsgraph_(depsgraph), export_object_eval_(export_object)
 {
-  export_object_eval_ = DEG_get_evaluated_object(depsgraph_, export_object);
+  export_object_eval_ = DEG_get_evaluated_object(depsgraph, export_object);
   export_mesh_eval_ = BKE_object_get_evaluated_mesh(export_object_eval_);
   mesh_eval_needs_free_ = false;
 
@@ -57,7 +56,7 @@ OBJMesh::OBJMesh(Depsgraph *depsgraph, const OBJExportParams &export_params, Obj
     /* Curves and NURBS surfaces need a new mesh when they're
      * exported in the form of vertices and edges.
      */
-    export_mesh_eval_ = BKE_mesh_new_from_object(depsgraph_, export_object_eval_, true);
+    export_mesh_eval_ = BKE_mesh_new_from_object(depsgraph, export_object_eval_, true);
     /* Since a new mesh been allocated, it needs to be freed in the destructor. */
     mesh_eval_needs_free_ = true;
   }
@@ -217,20 +216,18 @@ void OBJMesh::ensure_mesh_edges() const
  */
 void OBJMesh::calc_smooth_groups(const bool use_bitflags)
 {
-  int tot_smooth_groups = 0;
   poly_smooth_groups_ = BKE_mesh_calc_smoothgroups(export_mesh_eval_->medge,
                                                    export_mesh_eval_->totedge,
                                                    export_mesh_eval_->mpoly,
                                                    export_mesh_eval_->totpoly,
                                                    export_mesh_eval_->mloop,
                                                    export_mesh_eval_->totloop,
-                                                   &tot_smooth_groups,
+                                                   &tot_smooth_groups_,
                                                    use_bitflags);
-  tot_smooth_groups_ = tot_smooth_groups;
 }
 
 /**
- * Return mat_nr-th material of the object.
+ * Return mat_nr-th material of the object. The given index should be zero-based.
  */
 const Material *OBJMesh::get_object_material(const short mat_nr) const
 {
@@ -306,7 +303,8 @@ void OBJMesh::calc_poly_vertex_indices(const uint poly_index,
 {
   const MPoly &mpoly = export_mesh_eval_->mpoly[poly_index];
   const MLoop *mloop = &export_mesh_eval_->mloop[mpoly.loopstart];
-  for (uint loop_index = 0; loop_index < mpoly.totloop; loop_index++) {
+  const int totloop = mpoly.totloop;
+  for (uint loop_index = 0; loop_index < totloop; loop_index++) {
     r_poly_vertex_indices[loop_index] = mloop[loop_index].v;
   }
 }
diff --git a/source/blender/io/wavefront_obj/intern/obj_export_mesh.hh b/source/blender/io/wavefront_obj/intern/obj_export_mesh.hh
index cbe37178739..636992abba2 100644
--- a/source/blender/io/wavefront_obj/intern/obj_export_mesh.hh
+++ b/source/blender/io/wavefront_obj/intern/obj_export_mesh.hh
@@ -50,10 +50,9 @@ struct CustomBMeshDeleter {
 };
 
 using unique_bmesh_ptr = std::unique_ptr<BMesh, CustomBMeshDeleter>;
+
 class OBJMesh : NonMovable, NonCopyable {
  private:
-  Depsgraph *depsgraph_;
-
   Object *export_object_eval_;
   Mesh *export_mesh_eval_;
   /**



More information about the Bf-blender-cvs mailing list