Blender Git Loki

Git Commits -> Revision ff60dd8

Revision ff60dd8 by Sybren A. Stüvel (master)
March 6, 2020, 15:19 (GMT)
Depsgraph: remove unused no-op nodes after building

This is the companion of D7031. That patch adds a new DIMENSIONS node to
the depsgraph for each object that has geometry. However, this node is
only necessary when there are drivers using an object's dimensions as
variable. Since this is rare, it's easiest to remove these nodes after
they turn out to be unnecessary. This is what (almost) happens in this
patch.

Removing nodes from the depsgraph is hard, and there are no functions to
do this yet. Instead, this patch recursively removes all the incoming
relations from unused no-op nodes (i.e. no-op operation nodes without
outgoing connections). Actually removing the nodes will be left as a
future improvement.

I've tested this on a Spring file [1]. Here are there results of blender
--debug-depsgraph-time spring_02_055_A.eevee.blend and letting it run
for a while to stabilise the reported FPS:

master: 11.7 FPS
Just D7031: 11.7 FPS
Just D7033: 11.8 FPS
Both D7031 + D7033: 12.3 FPS

[1] https://cloud.blender.org/p/spring/5d30a1076249366fa1939cf1

Differential Revision: https://developer.blender.org/D7033

Commit Details:

Full Hash: ff60dd8b18ed00902e5bdfd36882072db7af8735
Parent Commit: f2f8c5b
Lines Changed: +113, -0

2 Added Paths:

/source/blender/depsgraph/intern/builder/deg_builder_remove_noop.cc (+76, -0) (View)
/source/blender/depsgraph/intern/builder/deg_builder_remove_noop.h (+33, -0) (View)

2 Modified Paths:

/source/blender/depsgraph/CMakeLists.txt (+2, -0) (Diff)
/source/blender/depsgraph/intern/depsgraph_build.cc (+2, -0) (Diff)
Tehnyt: Miika HämäläinenViimeksi päivitetty: 07.11.2014 14:18MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021