[Bf-blender-cvs] [ca7de1ff22c] blender2.8: Depsgraph: Object data separation, lamp

Sergey Sharybin noreply at git.blender.org
Wed Jun 6 12:39:14 CEST 2018


Commit: ca7de1ff22c70df0f82e8f860cf4dad37bf2ef4b
Author: Sergey Sharybin
Date:   Wed Jun 6 10:47:54 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBca7de1ff22c70df0f82e8f860cf4dad37bf2ef4b

Depsgraph: Object data separation, lamp

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

M	source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
M	source/blender/depsgraph/intern/builder/deg_builder_nodes.h
M	source/blender/depsgraph/intern/builder/deg_builder_relations.cc
M	source/blender/depsgraph/intern/builder/deg_builder_relations.h

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

diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
index 3753606862e..b1a31ebf4a9 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
@@ -569,7 +569,7 @@ void DepsgraphNodeBuilder::build_object_data(Object *object)
 			}
 			break;
 		case OB_LAMP:
-			build_lamp(object);
+			build_object_data_lamp(object);
 			break;
 		case OB_CAMERA:
 			build_camera(object);
@@ -588,6 +588,12 @@ void DepsgraphNodeBuilder::build_object_data(Object *object)
 	}
 }
 
+void DepsgraphNodeBuilder::build_object_data_lamp(Object *object)
+{
+	Lamp *lamp = (Lamp *)object->data;
+	build_lamp(lamp);
+}
+
 void DepsgraphNodeBuilder::build_object_data_lightprobe(Object *object)
 {
 	LightProbe *probe = (LightProbe *)object->data;
@@ -1176,11 +1182,8 @@ void DepsgraphNodeBuilder::build_camera(Object *object)
 	                   DEG_OPCODE_PARAMETERS_EVAL);
 }
 
-/* Lamps */
-void DepsgraphNodeBuilder::build_lamp(Object *object)
+void DepsgraphNodeBuilder::build_lamp(Lamp *lamp)
 {
-	/* Object data. */
-	Lamp *lamp = (Lamp *)object->data;
 	if (built_map_.checkIsBuiltAndTag(lamp)) {
 		return;
 	}
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.h b/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
index bb9cb2bd134..564d15781f2 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
@@ -45,12 +45,13 @@ struct Image;
 struct FCurve;
 struct Collection;
 struct Key;
+struct Lamp;
 struct LayerCollection;
+struct LightProbe;
 struct Main;
 struct Material;
 struct Mask;
 struct MTex;
-struct LightProbe;
 struct MovieClip;
 struct bNodeTree;
 struct Object;
@@ -166,6 +167,7 @@ struct DepsgraphNodeBuilder {
 	                        Object *object,
 	                        eDepsNode_LinkedState_Type linked_state);
 	void build_object_data(Object *object);
+	void build_object_data_lamp(Object *object);
 	void build_object_data_lightprobe(Object *object);
 	void build_object_transform(Object *object);
 	void build_object_constraints(Object *object);
@@ -189,7 +191,7 @@ struct DepsgraphNodeBuilder {
 	void build_shapekeys(Key *key);
 	void build_obdata_geom(Object *object);
 	void build_camera(Object *object);
-	void build_lamp(Object *object);
+	void build_lamp(Lamp *lamp);
 	void build_nodetree(bNodeTree *ntree);
 	void build_material(Material *ma);
 	void build_texture(Tex *tex);
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
index 8e826cd01df..9d978aff9fb 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
@@ -609,7 +609,7 @@ void DepsgraphRelationBuilder::build_object_data(Object *object)
 			}
 			break;
 		case OB_LAMP:
-			build_lamp(object);
+			build_object_data_lamp(object);
 			break;
 		case OB_CAMERA:
 			build_camera(object);
@@ -627,6 +627,15 @@ void DepsgraphRelationBuilder::build_object_data(Object *object)
 	}
 }
 
+void DepsgraphRelationBuilder::build_object_data_lamp(Object *object)
+{
+	Lamp *lamp = (Lamp *)object->data;
+	build_lamp(lamp);
+	ComponentKey object_parameters_key(&object->id, DEG_NODE_TYPE_PARAMETERS);
+	ComponentKey lamp_parameters_key(&lamp->id, DEG_NODE_TYPE_PARAMETERS);
+	add_relation(lamp_parameters_key, object_parameters_key, "Lamp -> Object");
+}
+
 void DepsgraphRelationBuilder::build_object_data_lightprobe(Object *object)
 {
 	LightProbe *probe = (LightProbe *)object->data;
@@ -1873,37 +1882,19 @@ void DepsgraphRelationBuilder::build_camera(Object *object)
 }
 
 /* Lamps */
-void DepsgraphRelationBuilder::build_lamp(Object *object)
+void DepsgraphRelationBuilder::build_lamp(Lamp *lamp)
 {
-	Lamp *lamp = (Lamp *)object->data;
 	if (built_map_.checkIsBuiltAndTag(lamp)) {
 		return;
 	}
-
-	ComponentKey object_parameters_key(&object->id, DEG_NODE_TYPE_PARAMETERS);
-	ComponentKey lamp_parameters_key(&lamp->id, DEG_NODE_TYPE_PARAMETERS);
-
-	add_relation(lamp_parameters_key, object_parameters_key,
-	             "Lamp -> Object");
-
 	/* lamp's nodetree */
 	if (lamp->nodetree != NULL) {
 		build_nodetree(lamp->nodetree);
+		ComponentKey lamp_parameters_key(&lamp->id, DEG_NODE_TYPE_PARAMETERS);
 		ComponentKey nodetree_key(&lamp->nodetree->id, DEG_NODE_TYPE_SHADING);
 		add_relation(nodetree_key, lamp_parameters_key, "NTree->Lamp Parameters");
 		build_nested_nodetree(&lamp->id, lamp->nodetree);
 	}
-
-	/* Make sure copy on write of lamp data is always properly updated for
-	 * visible lamps.
-	 */
-	OperationKey ob_copy_on_write_key(&object->id,
-	                                  DEG_NODE_TYPE_COPY_ON_WRITE,
-	                                  DEG_OPCODE_COPY_ON_WRITE);
-	OperationKey lamp_copy_on_write_key(&lamp->id,
-	                                    DEG_NODE_TYPE_COPY_ON_WRITE,
-	                                    DEG_OPCODE_COPY_ON_WRITE);
-	add_relation(lamp_copy_on_write_key, ob_copy_on_write_key, "Eval Order");
 }
 
 void DepsgraphRelationBuilder::build_nodetree(bNodeTree *ntree)
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.h b/source/blender/depsgraph/intern/builder/deg_builder_relations.h
index 0211f5dba68..5546d6fd32e 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.h
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.h
@@ -57,6 +57,7 @@ struct ID;
 struct FCurve;
 struct Collection;
 struct Key;
+struct Lamp;
 struct LayerCollection;
 struct LightProbe;
 struct Main;
@@ -202,6 +203,7 @@ struct DepsgraphRelationBuilder
 	void build_object(Base *base, Object *object);
 	void build_object_flags(Base *base, Object *object);
 	void build_object_data(Object *object);
+	void build_object_data_lamp(Object *object);
 	void build_object_data_lightprobe(Object *object);
 	void build_object_parent(Object *object);
 	void build_constraints(ID *id,
@@ -244,7 +246,7 @@ struct DepsgraphRelationBuilder
 	void build_shapekeys(ID *obdata, Key *key);
 	void build_obdata_geom(Object *object);
 	void build_camera(Object *object);
-	void build_lamp(Object *object);
+	void build_lamp(Lamp *lamp);
 	void build_nodetree(bNodeTree *ntree);
 	void build_material(Material *ma);
 	void build_texture(Tex *tex);



More information about the Bf-blender-cvs mailing list