35 #define STATS_MAX_SIZE 16384
66 static int rna_DepsgraphObjectInstance_is_instance_get(
PointerRNA *
ptr)
84 static bool rna_DepsgraphObjectInstance_show_self_get(
PointerRNA *
ptr)
92 static bool rna_DepsgraphObjectInstance_show_particles_get(
PointerRNA *
ptr)
122 static void rna_DepsgraphObjectInstance_persistent_id_get(
PointerRNA *
ptr,
int *persistent_id)
127 memcpy(persistent_id,
136 static unsigned int rna_DepsgraphObjectInstance_random_id_get(
PointerRNA *
ptr)
148 static void rna_DepsgraphObjectInstance_matrix_world_get(
PointerRNA *
ptr,
float *mat)
163 static void rna_DepsgraphObjectInstance_orco_get(
PointerRNA *
ptr,
float *orco)
175 static void rna_DepsgraphObjectInstance_uv_get(
PointerRNA *
ptr,
float *uv)
202 static bool rna_DepsgraphUpdate_is_updated_transform_get(
PointerRNA *
ptr)
208 static bool rna_DepsgraphUpdate_is_updated_shading_get(
PointerRNA *
ptr)
216 static bool rna_DepsgraphUpdate_is_updated_geometry_get(
PointerRNA *
ptr)
235 static void rna_Depsgraph_debug_relations_graphviz(
Depsgraph *
depsgraph,
const char *filename)
237 FILE *f = fopen(filename,
"w");
246 const char *filename,
249 FILE *f = fopen(filename,
"w");
264 size_t outer, ops, rels;
268 "Approx %zu Operations, %zu Relations, %zu Outer Nodes",
337 typedef struct RNA_Depsgraph_Instances_Iterator {
342 } RNA_Depsgraph_Instances_Iterator;
354 di_it->iterators[0].valid =
true;
356 iter->
valid = di_it->iterators[0].valid;
361 RNA_Depsgraph_Instances_Iterator *di_it = (RNA_Depsgraph_Instances_Iterator *)
365 di_it->iterators[(di_it->counter + 1) % 2] = di_it->iterators[di_it->counter % 2];
366 di_it->deg_data[(di_it->counter + 1) % 2] = di_it->deg_data[di_it->counter % 2];
369 di_it->iterators[di_it->counter % 2].data = &di_it->deg_data[di_it->counter % 2];
376 if (di_it->deg_data[di_it->counter % 2].dupli_object_current !=
NULL) {
377 di_it->dupli_object_current[di_it->counter % 2] =
378 *di_it->deg_data[di_it->counter % 2].dupli_object_current;
379 di_it->deg_data[di_it->counter % 2].dupli_object_current =
380 &di_it->dupli_object_current[di_it->counter % 2];
382 iter->
valid = di_it->iterators[di_it->counter % 2].valid;
387 RNA_Depsgraph_Instances_Iterator *di_it = (RNA_Depsgraph_Instances_Iterator *)
396 RNA_Depsgraph_Instances_Iterator *di_it = (RNA_Depsgraph_Instances_Iterator *)
398 BLI_Iterator *iterator = &di_it->iterators[di_it->counter % 2];
441 data->only_updated =
true;
511 "Dependency Graph Object Instance",
512 "Extended information about dependency graph object iterator "
513 "(Warning: All data here is 'evaluated' one, not original .blend IDs)");
524 prop,
"Show Self",
"The object geometry itself should be visible in the render");
530 prop,
"Show Particles",
"Particles part of the object should be visible in the render");
536 prop,
"Is Instance",
"Denotes if the object is generated by another object");
542 prop,
"Instance Object",
"Evaluated object which is being instanced by this iterator");
545 prop,
"rna_DepsgraphObjectInstance_instance_object_get",
NULL,
NULL,
NULL);
550 prop,
"Parent",
"If the object is an instance, the parent object that generated it");
558 prop,
"Particle System",
"Evaluated particle system that this object was instanced from");
560 prop,
"rna_DepsgraphObjectInstance_particle_system_get",
NULL,
NULL,
NULL);
566 "Persistent identifier for inter-frame matching of objects with motion blur");
574 prop,
"Instance Random ID",
"Random id for this instance, typically for randomized shading");
587 prop,
"Generated Coordinates",
"Generated coordinates in parent object space");
646 prop =
RNA_def_enum(srna,
"mode", enum_depsgraph_mode_items, 0,
"Mode",
"Evaluation mode");
653 srna,
"debug_relations_graphviz",
"rna_Depsgraph_debug_relations_graphviz");
655 func,
"filename",
NULL,
FILE_MAX,
"File Name",
"Output path for the graphviz debug file");
658 func =
RNA_def_function(srna,
"debug_stats_gnuplot",
"rna_Depsgraph_debug_stats_gnuplot");
660 func,
"filename",
NULL,
FILE_MAX,
"File Name",
"Output path for the gnuplot debug file");
667 "File name where gnuplot script will save the result");
670 func =
RNA_def_function(srna,
"debug_tag_update",
"rna_Depsgraph_debug_tag_update");
684 "Re-evaluate any modified data-blocks, for example for animation or modifiers. "
685 "This invalidates all references to evaluated data-blocks from this dependency graph.");
701 prop,
"View Layer",
"Original view layer dependency graph is built for");
707 func,
"id",
"ID",
"",
"Original ID to get evaluated complementary part for");
709 parm =
RNA_def_pointer(func,
"id_eval",
"ID",
"",
"Evaluated ID for the given original one");
712 func =
RNA_def_function(srna,
"id_type_updated",
"rna_Depsgraph_id_type_updated");
719 "True if any datablock with this type was added, updated or removed");
733 prop,
"View Layer",
"Original view layer dependency graph is built for");
740 "rna_Depsgraph_ids_begin",
741 "rna_Depsgraph_ids_next",
742 "rna_Depsgraph_ids_end",
743 "rna_Depsgraph_ids_get",
753 "rna_Depsgraph_objects_begin",
754 "rna_Depsgraph_objects_next",
755 "rna_Depsgraph_objects_end",
756 "rna_Depsgraph_objects_get",
766 "rna_Depsgraph_object_instances_begin",
767 "rna_Depsgraph_object_instances_next",
768 "rna_Depsgraph_object_instances_end",
769 "rna_Depsgraph_object_instances_get",
776 "All object instances to display or render "
777 "(Warning: Only use this as an iterator, never as a sequence, "
778 "and do not keep any references to its items)");
783 "rna_Depsgraph_updates_begin",
784 "rna_Depsgraph_ids_next",
785 "rna_Depsgraph_ids_end",
786 "rna_Depsgraph_updates_get",
General operations, lookup, etc. for blender objects.
int BKE_object_visibility(const struct Object *ob, const int dag_eval_mode)
void BKE_report(ReportList *reports, ReportType type, const char *message)
void BKE_scene_graph_update_tagged(struct Depsgraph *depsgraph, struct Main *bmain)
void copy_m4_m4(float m1[4][4], const float m2[4][4])
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void zero_v2(float r[2])
MINLINE void zero_v3(float r[3])
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
#define BPy_BEGIN_ALLOW_THREADS
#define BPy_END_ALLOW_THREADS
struct Depsgraph Depsgraph
bool DEG_is_evaluating(const struct Depsgraph *depsgraph)
void DEG_graph_tag_relations_update(struct Depsgraph *graph)
void DEG_debug_relations_graphviz(const struct Depsgraph *graph, FILE *fp, const char *label)
void DEG_stats_simple(const struct Depsgraph *graph, size_t *r_outer, size_t *r_operations, size_t *r_relations)
void DEG_debug_stats_gnuplot(const struct Depsgraph *graph, FILE *fp, const char *label, const char *output_filename)
void DEG_iterator_objects_next(struct BLI_Iterator *iter)
struct Scene * DEG_get_input_scene(const Depsgraph *graph)
void DEG_iterator_ids_begin(struct BLI_Iterator *iter, DEGIDIterData *data)
eEvaluationMode DEG_get_mode(const Depsgraph *graph)
void DEG_iterator_ids_end(struct BLI_Iterator *iter)
struct ID * DEG_get_evaluated_id(const struct Depsgraph *depsgraph, struct ID *id)
struct ViewLayer * DEG_get_evaluated_view_layer(const struct Depsgraph *graph)
void DEG_iterator_objects_end(struct BLI_Iterator *iter)
void DEG_iterator_objects_begin(struct BLI_Iterator *iter, DEGObjectIterData *data)
void DEG_iterator_ids_next(struct BLI_Iterator *iter)
@ DEG_ITER_OBJECT_FLAG_LINKED_DIRECTLY
@ DEG_ITER_OBJECT_FLAG_VISIBLE
@ DEG_ITER_OBJECT_FLAG_DUPLI
@ DEG_ITER_OBJECT_FLAG_LINKED_VIA_SET
struct ViewLayer * DEG_get_input_view_layer(const Depsgraph *graph)
bool DEG_id_type_updated(const struct Depsgraph *depsgraph, short id_type)
struct Scene * DEG_get_evaluated_scene(const struct Depsgraph *graph)
Object is a sort of wrapper for general info.
Read Guarded memory(de)allocation.
StructRNA RNA_DepsgraphObjectInstance
StructRNA RNA_DepsgraphUpdate
StructRNA RNA_ParticleSystem
return(oflags[bm->toolflag_index].f &oflag) !=0
const char * output_filename
const Depsgraph * depsgraph
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
const EnumPropertyItem rna_enum_id_type_items[]
void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr)
PointerRNA rna_pointer_inherit_refine(PointerRNA *ptr, StructRNA *type, void *data)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, bool default_value, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_pointer(StructOrFunctionRNA *cont_, const char *identifier, const char *type, const char *ui_name, const char *ui_description)
void RNA_def_function_return(FunctionRNA *func, PropertyRNA *ret)
void RNA_def_property_float_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
PropertyRNA * RNA_def_string_file_path(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, int maxlen, const char *ui_name, const char *ui_description)
FunctionRNA * RNA_def_function(StructRNA *srna, const char *identifier, const char *call)
void RNA_def_property_collection_funcs(PropertyRNA *prop, const char *begin, const char *next, const char *end, const char *get, const char *length, const char *lookupint, const char *lookupstring, const char *assignint)
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description)
void RNA_def_function_output(FunctionRNA *UNUSED(func), PropertyRNA *ret)
void RNA_def_property_boolean_funcs(PropertyRNA *prop, const char *get, const char *set)
void RNA_def_property_multi_array(PropertyRNA *prop, int dimension, const int length[])
void RNA_def_property_array(PropertyRNA *prop, int length)
void RNA_def_property_struct_type(PropertyRNA *prop, const char *type)
void RNA_def_function_ui_description(FunctionRNA *func, const char *description)
const int rna_matrix_dimsize_4x4[]
void RNA_def_property_enum_funcs(PropertyRNA *prop, const char *get, const char *set, const char *item)
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
void RNA_def_function_flag(FunctionRNA *func, int flag)
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const char *set, const char *type_fn, const char *poll)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
void RNA_def_property_int_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, int maxlen, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, int default_value, const char *ui_name, const char *ui_description)
void RNA_def_parameter_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void RNA_def_depsgraph(BlenderRNA *brna)
static void rna_def_depsgraph_instance(BlenderRNA *brna)
static void rna_def_depsgraph_update(BlenderRNA *brna)
static void rna_def_depsgraph(BlenderRNA *brna)
union CollectionPropertyIterator::@1099 internal
eEvaluationMode eval_mode
struct Object * dupli_parent
struct DupliObject * dupli_object_current
struct ParticleSystem * particle_system