[Bf-blender-cvs] [bfc644dcfb5] master: Reduce `DupliObject::persistent_id` from 16 to 8 items

Sybren A. Stüvel noreply at git.blender.org
Mon Jul 6 16:53:51 CEST 2020


Commit: bfc644dcfb52b873ad7c356cf4b05208fba17bba
Author: Sybren A. Stüvel
Date:   Mon Jul 6 16:52:28 2020 +0200
Branches: master
https://developer.blender.org/rBbfc644dcfb52b873ad7c356cf4b05208fba17bba

Reduce `DupliObject::persistent_id` from 16 to 8 items

For historical reasons, `DupliObject::persistent_id` was of size
`2*MAX_DUPLI_RECUR`. These reasons are now gone, and the persistent ID
always gets exactly one array element for every dupli-recursion.

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

Reviewed by: brecht

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

M	intern/cycles/blender/blender_id_map.h
M	source/blender/blenkernel/BKE_duplilist.h
M	source/blender/blenkernel/intern/object_dupli.c
M	source/blender/draw/engines/eevee/eevee_private.h
M	source/blender/makesrna/intern/rna_depsgraph.c

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

diff --git a/intern/cycles/blender/blender_id_map.h b/intern/cycles/blender/blender_id_map.h
index 3bc42e349ae..b5f6aaa67a8 100644
--- a/intern/cycles/blender/blender_id_map.h
+++ b/intern/cycles/blender/blender_id_map.h
@@ -200,7 +200,7 @@ template<typename K, typename T> class id_map {
  * To uniquely identify instances, we use the parent, object and persistent instance ID.
  * We also export separate object for a mesh and its particle hair. */
 
-enum { OBJECT_PERSISTENT_ID_SIZE = 16 };
+enum { OBJECT_PERSISTENT_ID_SIZE = 8 /* MAX_DUPLI_RECUR in Blender. */ };
 
 struct ObjectKey {
   void *parent;
diff --git a/source/blender/blenkernel/BKE_duplilist.h b/source/blender/blenkernel/BKE_duplilist.h
index 71b6d06b450..13918dd4fb1 100644
--- a/source/blender/blenkernel/BKE_duplilist.h
+++ b/source/blender/blenkernel/BKE_duplilist.h
@@ -52,7 +52,7 @@ typedef struct DupliObject {
 
   /* Persistent identifier for a dupli object, for inter-frame matching of
    * objects with motion blur, or inter-update matching for syncing. */
-  int persistent_id[16]; /* 2*MAX_DUPLI_RECUR */
+  int persistent_id[8]; /* MAX_DUPLI_RECUR */
 
   /* Particle this dupli was generated from. */
   struct ParticleSystem *particle_system;
diff --git a/source/blender/blenkernel/intern/object_dupli.c b/source/blender/blenkernel/intern/object_dupli.c
index 4c6354f12a1..f498e147110 100644
--- a/source/blender/blenkernel/intern/object_dupli.c
+++ b/source/blender/blenkernel/intern/object_dupli.c
@@ -186,7 +186,7 @@ static DupliObject *make_dupli(const DupliContext *ctx, Object *ob, float mat[4]
   dob->random_id = BLI_hash_string(dob->ob->id.name + 2);
 
   if (dob->persistent_id[0] != INT_MAX) {
-    for (i = 0; i < MAX_DUPLI_RECUR * 2; i++) {
+    for (i = 0; i < MAX_DUPLI_RECUR; i++) {
       dob->random_id = BLI_hash_int_2d(dob->random_id, (unsigned int)dob->persistent_id[i]);
     }
   }
diff --git a/source/blender/draw/engines/eevee/eevee_private.h b/source/blender/draw/engines/eevee/eevee_private.h
index a67593773ab..3edb649768c 100644
--- a/source/blender/draw/engines/eevee/eevee_private.h
+++ b/source/blender/draw/engines/eevee/eevee_private.h
@@ -589,7 +589,7 @@ typedef struct EEVEE_ObjectKey {
   /** Parent object for duplis */
   struct Object *parent;
   /** Dupli objects recursive unique identifier */
-  int id[16]; /* 2*MAX_DUPLI_RECUR */
+  int id[8]; /* MAX_DUPLI_RECUR */
 } EEVEE_ObjectKey;
 
 typedef struct EEVEE_ObjectMotionData {
diff --git a/source/blender/makesrna/intern/rna_depsgraph.c b/source/blender/makesrna/intern/rna_depsgraph.c
index ca34f69ab1e..da1ed166eb2 100644
--- a/source/blender/makesrna/intern/rna_depsgraph.c
+++ b/source/blender/makesrna/intern/rna_depsgraph.c
@@ -551,7 +551,7 @@ static void rna_def_depsgraph_instance(BlenderRNA *brna)
       prop,
       "Persistent ID",
       "Persistent identifier for inter-frame matching of objects with motion blur");
-  RNA_def_property_array(prop, 2 * MAX_DUPLI_RECUR);
+  RNA_def_property_array(prop, MAX_DUPLI_RECUR);
   RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
   RNA_def_property_int_funcs(prop, "rna_DepsgraphObjectInstance_persistent_id_get", NULL, NULL);



More information about the Bf-blender-cvs mailing list