Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Tönne <lukas.toenne@gmail.com>2015-04-20 10:39:08 +0300
committerLukas Tönne <lukas.toenne@gmail.com>2015-04-20 10:39:08 +0300
commit10df745d2195d4c1904cd141f151ad0c3726df6e (patch)
treece7de74e47e9e605c9b369cf08387ed6c3af745b
parentee04d04c0c9914bc2bdc221a9171882308893f4f (diff)
Revert 0d3da1343c16e1be6a6e6b78b77cf8b3354afe07
Disabling group -> duplicator dependencies would in theory make caches more attractive because the invisible objects don't have to be updated just because of the group. However, the viewport and render starts to behave unpredictably without these updates, because the dupli cache relies in many ways on the objects it is supposed to override.
-rw-r--r--source/blender/blenkernel/intern/depsgraph.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c
index 22f5effc5ac..9a5e3158234 100644
--- a/source/blender/blenkernel/intern/depsgraph.c
+++ b/source/blender/blenkernel/intern/depsgraph.c
@@ -627,8 +627,16 @@ static void build_dag_object(DagForest *dag, DagNode *scenenode, Main *bmain, Sc
* It is not a true dependency, the duplicator does not in any way depend on group objects or data!
*/
if (ob->transflag & OB_DUPLI) {
+ /* XXX In theory it would be possible to disable the visibility dependency when dupli groups are cached,
+ * since we use the results from the cache instead of the generated object data anyway.
+ * However, the caching system depends a lot on DNA objects currently and behaves unpredictably without this ...
+ */
+#if 0
bool is_cached = ob->cache_library && ob->cache_library->source_mode == CACHE_LIBRARY_SOURCE_CACHE;
if (!is_cached && (ob->transflag & OB_DUPLIGROUP) && ob->dup_group) {
+#else
+ if ((ob->transflag & OB_DUPLIGROUP) && ob->dup_group) {
+#endif
GroupObject *go;
for (go = ob->dup_group->gobject.first; go; go = go->next) {
if (go->ob) {