Merge branch 'master' into blender2.8
[blender.git] / source / blender / depsgraph / intern / depsgraph_types.h
index 0e48be6b1e2633578d49acfecfa5d155e040a24e..b4a0dde1f350ee4322177631ed552edc80afa0c3 100644 (file)
@@ -54,8 +54,10 @@ struct FCurve;
 
 namespace DEG {
 
+/* TODO(sergey): Find a better place for this. */
 using std::string;
 using std::vector;
+using std::max;
 
 /* Evaluation Operation for atomic operation */
 // XXX: move this to another header that can be exposed?
@@ -80,6 +82,18 @@ typedef enum eDepsNode_Class {
        DEG_NODE_CLASS_OPERATION       = 2,
 } eDepsNode_Class;
 
+/* Note: We use max comparison to mark an id node that is linked more than once
+ * So keep this enum ordered accordingly.
+ */
+typedef enum eDepsNode_LinkedState_Type {
+       /* Generic indirectly linked id node. */
+       DEG_ID_LINKED_INDIRECTLY       = 0,
+       /* Id node present in the set (background) only. */
+       DEG_ID_LINKED_VIA_SET          = 1,
+       /* Id node directly linked via the ScenLayer. */
+       DEG_ID_LINKED_DIRECTLY         = 2,
+} eDepsNode_LinkedState_Type;
+
 /* Types of Nodes */
 typedef enum eDepsNode_Type {
        /* Fallback type for invalid return value */
@@ -112,6 +126,14 @@ typedef enum eDepsNode_Type {
        DEG_NODE_TYPE_GEOMETRY,
        /* Sequencer Component (Scene Only) */
        DEG_NODE_TYPE_SEQUENCER,
+       /* Component which contains all operations needed for layer collections
+        * evaluation.
+        */
+       DEG_NODE_TYPE_LAYER_COLLECTIONS,
+       /* Entry component of majority of ID nodes: prepares CoW pointers for
+        * execution.
+        */
+       DEG_NODE_TYPE_COPY_ON_WRITE,
 
        /* **** Evaluation-Related Outer Types (with Subdata) **** */
 
@@ -123,8 +145,11 @@ typedef enum eDepsNode_Type {
        DEG_NODE_TYPE_EVAL_PARTICLES,
        /* Material Shading Component */
        DEG_NODE_TYPE_SHADING,
+       DEG_NODE_TYPE_SHADING_PARAMETERS,
        /* Cache Component */
        DEG_NODE_TYPE_CACHE,
+       /* Batch Cache Component */
+       DEG_NODE_TYPE_BATCH_CACHE,
 
        /* Total number of meaningful node types. */
        NUM_DEG_NODE_TYPES,
@@ -150,6 +175,9 @@ typedef enum eDepsOperation_Code {
        /* Driver */
        DEG_OPCODE_DRIVER,
 
+       /* Object related. --------------------------------- */
+       DEG_OPCODE_OBJECT_BASE_FLAGS,
+
        /* Transform. -------------------------------------- */
        /* Transform entry point - local transforms only */
        DEG_OPCODE_TRANSFORM_LOCAL,
@@ -211,9 +239,27 @@ typedef enum eDepsOperation_Code {
        /* Particle System evaluation. */
        DEG_OPCODE_PARTICLE_SYSTEM_EVAL_INIT,
        DEG_OPCODE_PARTICLE_SYSTEM_EVAL,
+       DEG_OPCODE_PARTICLE_SETTINGS_EVAL,
+       DEG_OPCODE_PARTICLE_SETTINGS_RECALC_CLEAR,
+
+       /* Point Cache. ------------------------------------- */
+       DEG_OPCODE_POINT_CACHE_RESET,
+
+       /* Collections. ------------------------------------- */
+       DEG_OPCODE_VIEW_LAYER_INIT,
+       DEG_OPCODE_VIEW_LAYER_EVAL,
+       DEG_OPCODE_VIEW_LAYER_DONE,
+
+       /* Copy on Write. ------------------------------------ */
+       DEG_OPCODE_COPY_ON_WRITE,
 
        /* Shading. ------------------------------------------- */
        DEG_OPCODE_SHADING,
+       DEG_OPCODE_MATERIAL_UPDATE,
+       DEG_OPCODE_WORLD_UPDATE,
+
+       /* Batch caches. -------------------------------------- */
+       DEG_OPCODE_GEOMETRY_SELECT_UPDATE,
 
        /* Masks. ------------------------------------------ */
        DEG_OPCODE_MASK_ANIMATION,