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);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to