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
AgeCommit message (Collapse)Author
2020-10-07Fix T81218: Crash in pose mode using a driver on bendy bone SegmentSybren A. Stüvel
The example file in T81218 has a driver that maps a bone's X-location to the number of BBone segments. This caused a dependency cycle, which resulted in bad thread serialisation, which caused the crash. This patch breaks the dependency cycle `BONE_LOCAL` → `DRIVER(bones["Bone"].bbone_segments)` → `BONE_LOCAL`. The 'Driver Data' relation now points to `BONE_SEGMENTS` when the driven property starts with `bbone_`. Differential Revision: https://developer.blender.org/D9122
2020-07-29Fix T78920: missing depsgraph relation when using sound strips in VSESybren A. Stüvel
Having a sound strip in the VSE caused a missing relation error to be logged on the console. This was caused by the AUDIO depsgraph component not having an entry node. This commits adds that node, and sets up relations correctly. Differential Revision: https://developer.blender.org/D8290 Reviewed By: Sergey
2020-07-02Fix T77712: Crash on proxied rig, custom bone shape, driver targeting rigSybren A. Stüvel
It turns out that `DepsgraphNodeBuilder::build_object_data_geometry(Object *object, bool is_object_visible)` was called for the custom shape with `is_object_visible=false` when there are drivers, and `is_object_visible=true` when there aren't any.
2020-06-02Cleanup: use C++'s nullptr instead of our own C NULL define, in C++ code.Bastien Montagne
2020-06-02Fix T77192: Crash when opening bunny.blend file.Bastien Montagne
New depsgraph code handling drivers was not checking for possible NULL rna_path, as done everywhere else in code...
2020-05-25Fix T76897: Lamp Power Not Updating from DriverSybren A. Stüvel
Lamps were not tagged with `ID_RECALC_SHADING` when they were updated from drivers. As a result, Cycles considered the lamp as unchanged. This is resolved by having a (seemingly non-functional) callback in a new `LIGHT_UPDATE` depsgraph node. This patch unconditionally adds the `LIGHT_UPDATE` node + the relation from the lamp's PARAMETERS node. Differential Revision: https://developer.blender.org/D7822 Reviewed by: brecht
2020-05-19Fix T76689: Armature layers not indicating the existence of bonesSybren A. Stüvel
From what I can see, there are two issues at play in {T76689} and its merged-in report {T76590}: - In Blender ≤ 2.79 the bone layer dots were updated in the draw code. This ensured the info was up to date before drawing. This is no longer possible, as the drawing code uses evaluated objects, and those should not be written to. This has been addressed in rB709f126e8143 by calling the update function explicitly in various places in the code. The problem is that this wasn't added to all necessary spots. - When in edit mode, changes are made to the edit bones but not to the 'actual' bones (this is synced when exiting edit mode). This causes undo to mess up the layer indicators. I think both issues can be addressed by having the dependency graph update the used layer info as part of the armature evaluation. This will make the undo system work properly, and allows the removal of some `BKE_armature_refresh_layer_used()` from various places. There is still the issue that there are two functions (`BKE_armature_refresh_layer_used()` and `ED_armature_edit_refresh_layer_used()`) that are both responsible for updating `bArmature::layer_used`. This is a trickier thing to solve, though, as the definition of the `EditBone` struct resides in the armature editor module. This means that blenkernel can't iterate over edit bones, but on the other hand the dependency graph shouldn't call any editor functions either. This is why I left the `ED_armature_edit_refresh_layer_used()` calls untouched. The downside of recalculating `layer_used` from the dependency graph (at least in the way that I did it now) is that it is called every time a user moves a bone in pose mode. This frequency of updates is not necessary. Differential Revision: https://developer.blender.org/D7709
2020-05-04Fix T76251: Animated procedural texture does not influence particle systemLuc Revardel
Dependancy missing while building depsgraph for particle systems. fix: adding a relation texture->particles when texture has animation data. Reviewed By: sergey Maniphest Tasks: T76251 Differential Revision: https://developer.blender.org/D7573
2020-05-04T76121 Driver depending on animated modifier property does not updateSybren A. Stüvel
This fixes an issue where an animated modifier property that's used as variable in a driver wouldn't animate that driver's value. Building the relations for the driver target creates the relation `PARAMETERS_EVAL` → `DRIVER(variable)`. Building the relations for the FCurve targeting the modifier property creates the relation `ANIMATION_EXIT` → `GEOMETRY_EVAL_INIT`. This means that there is NOT a relation `ANIMATION_EXIT` → `PARAMETERS_EVAL`, and as a result, the driver is not properly updated when its variable reads animated data. This is resolved in this commit by adding the missing relation. Differential Revision: https://developer.blender.org/D7615
2020-04-28Depsgraph: Add IDProperties handling.Bastien Montagne
Fix T75279: BLI_assert failed when deleting object in debug build (only). And all general cases of ID pointer idproperties that would use a data-block not referenced anywhere else in the depsgraph. This includes idproperties from: * All ID types; * Bones and pose bones; * Sequences; * Nodes and sockets. Differential Revision: https://developer.blender.org/D7551
2020-04-24Fix T69753 Instanced Metaballs not rendering but showing up in ViewportSybren A. Stüvel
This hides the original metaballs when they are used in duplifaces/-verts instancing, and still shows the instanced metaballs. The visibility of the original metaballs is now determined by the visibility of the instancer. I'm not too thrilled about this, but at least it gives users the ability to show/hide the metaballs for viewport/render. Differential Revision: https://developer.blender.org/D7478
2020-04-24Cleanup: remove unused arg, clang-formatCampbell Barton
2020-04-23Fix T75611: slow transform of many objects at the same timeBrecht Van Lommel
Solve O(n^2) time complexity problem where a dependency graph iterator loops over all nodes to clear flags, which happened for every object at the start of transform. Differential Revision: https://developer.blender.org/D7503
2020-04-17Fix T75686: Animating scene audio volume doesn't workSybren A. Stüvel
Scene audio volume changes require the scene to be tagged with `ID_RECALC_AUDIO_VOLUME` (see `BKE_scene_update_sound()`). Tagging happens in the RNA update function `rna_Scene_volume_update()`, but that function is not called by the animation system. As a result, animated volume changes are not sent to the audio system. This commit adds a new depsgraph operation node that sets this tag when necessary, so that the animated values are used in the rest of the depsgraph evaluation. Reviewed By: sergey Differential Revision: https://developer.blender.org/D7429
2020-04-14Fix T75542: toggling modifier visibility not working correct with undo speedupBrecht Van Lommel
The problem was that in direct_link_id_restore_recalc, recalc_undo_accumulated should contain the changes from the target state to the current state. However it had already been cleared at that point, to start accumulating changes up to the next undo push. Delaying the clear of this flag seems like the obvious solution, but it's hard to find the right place for that (if there is one). Instead this splits up the flag into two separate variables. Reviewed By: mont29 Differential Revision: https://developer.blender.org/D7402
2020-04-14Cleanup: spellingCampbell Barton
2020-04-10Fix T67232: Multiples targetless IKs in a chain gives weird behaviour (known ↵Sebastian Parborg
as FakeIK for FK posing) The issue was that the deps graph relation builder assumed that all bones that had a IK constraint on them would be evaluated. However for targetless IK bones, only the active bone would receive updates and the others would be skipped (as those would be treated as if the IK constraint was disabled). I didn't see an easy way to solve this from the depsgraph side of things. Instead I came up with a solution that I feel is quite strait forward and reflects what is actually supposed to happen under the hood. Now all targetless IK constraints are treated as disabled and will not be added to any relations in the depsgraph. Instead, a temporary IK constraint will be created when the bone in question is transformed. This is basically activating "Auto IK" for the bone while transforming. Reviewed By: Sergey, Brecht Differential Revision: http://developer.blender.org/D7378
2020-04-09TaskScheduler: Minor Preparations for TBBBrecht Van Lommel
Tasks: move priority from task to task pool {rBf7c18df4f599fe39ffc914e645e504fcdbee8636} Tasks: split task.c into task_pool.cc and task_iterator.c {rB4ada1d267749931ca934a74b14a82479bcaa92e0} Differential Revision: https://developer.blender.org/D7385
2020-04-08Fix missed depsgraph update after undo in some casesBrecht Van Lommel
Forgot to take into account legacy DEG_id_tag_update with zero flag.
2020-04-07Undo: change depsgraph recalc flags handling to improve performanceBrecht Van Lommel
These changes only have an effect when the experimental Undo Speedup preference is enabled. * For DEG_id_tag_update, accumulate recalc flags immediately before the undo push happens instead of afterwards. Otherwise the undo state does not contain enough flags, and the current state may contain too many flags. This also means we call DEG_id_tag_update after undo with the accumulated flags to ensure they are flushed to other datablocks. * For undo, accumulate recalc flags in id->recalc and clear accumulated flags immediately. Not clearing would cause circular behavior where accumulated flags may never end up being cleared. This matches what happens after an undo push where these are also cleared, indicating that the undo state and current in-memory state match exactly. * Don't change id->recalc of identical datablocks, it should not be needed. There is one exception for armatures where pointers across datablocks exist which otherwise would cause problems. There may be a better solution to this but it seems to work in agent 327 production files. * This contains a change in undofile.c to avoid detecting all datablocks as changed for the first of the two undo steps, where we restore to the state of the last undo push before going to the one before. Without this the whole system is much less efficient. However this is unsafe in the sense that if an app handler or operators edits a datablock after an undo push, that change will not be undone. It can be argued that this is acceptable behavior, since a following undo push will include that change and this may already have unexpected side effects. Ref T60695 Differential Revision: https://developer.blender.org/D7339
2020-04-03Cleanup: Animation, move AnimData API to `anim_data.c`/`BKE_anim_data.h`Sybren A. Stüvel
The `BKE_animsys.h` and `anim_sys.c` files already had a an "AnimData API" section. The code in that section has now been split off, and placed into `BKE_anim_data.h` and `anim_data.c`. All files that used to include `BKE_animsys.h` have been adjusted to only include the animation headers they need (sometimes none). No functional changes.
2020-04-03Cleanup: split `BKE_anim.h` and `anim.c` into smaller piecesSybren A. Stüvel
The files are now split up into the following sections: - `BKE_anim_path.h` and `anim_path.c` for path/curve functions. - `BKE_anim_visualization.h` and `anim_visualizationanim_path.c` for animation visualization (mostly motion paths). - `BKE_duplilist.h` for DupliList function declarations. These were already implemented in `object_dupli.c`, so they were rather out of place being declared in `BKE_anim.h` in the first place. No functional changes.
2020-04-03Cleanup: use tern 'sync' instead of 'synchronization' for function namesCampbell Barton
This is a common, unambiguous abbreviation already used throughout the code-base.
2020-04-02Fix T74983: Material preview icons don't refreshSybren A. Stüvel
The root cause of the issue reported in T74983 is that an `IDNode` would not be marked as user-modified. This marking happened while looping over outgoing relations of one of its operation nodes. Since rBff60dd8b18ed unused relations are removed, and as a result the `IDNode` would not be marked. The solution was to move the responsible code outside the loop; this is probably a good idea anyway, as the code did not actually use the looped-over relations at all, and was thus repeated unnecessarily.
2020-04-01Fix T74224: Add missing depsgraph relations for boid particlesJacques Lucke
Reviewers: brecht Differential Revision: https://developer.blender.org/D7302
2020-03-28Cleanup: Removing unused parameter.Jörg Müller
2020-03-28Cleanup: compiler warningsBrecht Van Lommel
2020-03-24Cleanup: spellingCampbell Barton
2020-03-23Revert "COW: Edit Mesh: Do not copy the looptris pointer"Germano Cavalcante
The looptri is repeated in the linked Meshes but the pointer is only referenced in the evaluated ones. This reverts commit 64982e213f014123d1b0406cf9ae893910a6a3d3.
2020-03-23Fix T74984: Crash opening specific production filesSergey Sharybin
More detailed symptoms: there was no curve cache created for an object which was used by draw manager. A bit tricky situation, which involves collection instances and their proxies. The root of the problem in the dependency graph was that instanced collections visibility was not updated when object is requested with different visibility. So what was happening is that one of the objects was pulled as an indirect dependency of something invisible, so it built instanced collections as if the instancer is invisible. After that the same object was built as visible. Before this fix this was only update object flags, the instanced collections still believed they are invisible. Since there is no path via relations which would connect visible object with instanced objects the visibility flush which is happening during graph finalization did not "fix" the visibility flags. This change makes it so instanced collections are updating their visibility when their instancer's visibility is changing to truth. This is similar to how collections will accumulate their visibility when same collection is used from multiple ones with different visibility. However, this alone wasn't enough to get crash fixed. This marked collections as visible, but the geometry component of the curve object was still considering self as invisible. This is something tricky, since the code which is responsible for this issue was added as an optimization in afb4da6650d. This looks like like an oversight in that commit since it's rather weird that ID node's flag would depend on construction order (in "normal" object builder the ID node's directly_visible flag is initialized to object's visibility). So it seems logical to get this part of code in sync between "regular" and "accumulative" object builder. And last but not least the naming is_directly_visible is old and does not really represent what it actually mans now: a more correct name would be "will be used by the draw manager". Differential Revision: https://developer.blender.org/D7217
2020-03-23Depsgraph: Driver Relations, skip finding possible relation with one driverSybren A. Stüvel
The `build_driver_relations()` function in the depsgraph relations builder adds relations between drivers that potentially write to the same memory location. This of course is only useful when there are two or more drivers.
2020-03-23Fix T73593: Drivers on hide_viewport and hide_render are unreliableSybren A. Stüvel
My previous fix (rB4c30dc343165) worked, except for an off-by-one error.
2020-03-23COW: Edit Mesh: Do not copy the looptris pointerGermano Cavalcante
No functional changes. Differential Revision: https://developer.blender.org/D7173
2020-03-23Sound: Fix asymmetrical mutex lock/unlock logicSergey Sharybin
Started to happen after recent fix for T72632. Was caused by runtime fields backup doing an early exit in the case the given ID was never expanded by the Copy-on-Write mechanism, but it was not done int the backup restore function (since it was not possible to know "locally"). Now both init() and restore() will do an early exit when the ID had nothing to be backed up.
2020-03-23Fix T72632: Blender crashes using Jack with AV Sync enabled (repeatable)Jörg Müller
2020-03-19Cleanup/refactor: remove BKE_idcode, in favour of BKE_idtype.Bastien Montagne
Mpving utils from idcode to idtype proved to be somewhat painful for some reasons, but now all looks good. Had to add a fake/empty shell for the special snowflake too, `ID_LINK_PLACEHOLDER/INDEX_ID_NULL`...
2020-03-19Fix T70126: Can't snap between objects with Rigid BodyGermano Cavalcante
`DEG_FOREACH_COMPONENT_IGNORE_TRANSFORM_SOLVERS` was `0`
2020-03-19Fix T74701: Text on Curve Scaling IssuePhilipp Oeser
Both scaling the text itself, as well as scaling the curve wasnt updating, now added relations for this. Maniphest Tasks: T74701 Differential Revision: https://developer.blender.org/D7140
2020-03-19Cleanup: `make format` after SortedIncludes changeDalai Felinto
2020-03-18Objects: add Volume object type, and prototypes for Hair and PointCloudBrecht Van Lommel
Only the volume object is exposed in the user interface. It is based on OpenVDB internally. Drawing and rendering code will follow in another commit. https://wiki.blender.org/wiki/Source/Objects/Volume https://wiki.blender.org/wiki/Reference/Release_Notes/2.83/Volumes Hair and PointCloud object types are hidden behind a WITH_NEW_OBJECT_TYPES build option. These are unfinished, and included only to make it easier to cooperate on development in the future and avoid tricky merges. https://wiki.blender.org/wiki/Source/Objects/New_Object_Types Ref T73201, T68981 Differential Revision: https://developer.blender.org/D6945
2020-03-17GPencil: Fix Parent layer not workingAntonio Vazquez
The parenting was using the old logic, but with new engine the draw is done using eval data. Fixed the depsgraph relationship missing with bones to get an update when the bone is transformed. Also fixed Snap cursor to Selected
2020-03-17Add accumulated recalc flags to IDs.Bastien Montagne
Those accumulated flags get cleared every time an undo step is written to memfile. Preliminary work for undo-speedup. Part of T60695/D6580.
2020-03-17Depsgraph: Adds helpers to extract/restore despgraphs in a given Main.Bastien Montagne
Extract will steal all depsgraphs currently stored in given bmain, and restore will put them back in place, using scene and viewlayers as keys. Preliminary work for undo-speedup. Part of T60695/D6580.
2020-03-14Cleanup: spellingCampbell Barton
2020-03-11Depsgraph: Fix crash deleting Viewer image from OutlinerSergey Sharybin
Was happening when having compositor open with Viewer node attached directly to Render Layers output. There were two things involved here: 1. The code which was storing CoW-ed versions of IDs was checking all IDs for whether they are expanded or not. This was causing access of freed memory for deleted IDs which do not need CoW (such as IM). Simple fix: store ID type as a scalar and use early check before doing more elaborate check based on accessing fields of id_cow. 2. The code which was ensuring view layer pointer is doing CoW for scene. This isn't an issue on its own, but scene might have an embedded ID such as compositor which was actually traversed by the ID remap routines. This was causing remapping procedure to go into non-updated copy of compositor, accessing freed Viewer image ID. Solved by not recursing into embedded IDs for datablocks as those are supposed to have own copy-on-write operations which takes care of re-mapping. Reported my Bastien, and also pair-coded with him.
2020-03-11EEVEE: Replace octahedron reflection probe by cubemap arrayClément Foucault
We implement cubemap array support for EEVEE's lightcache reflection probes. This removes stretched texels and bottom hemisphere seams artifacts caused by the octahedral projection previously used. This introduce versioning code for the lightcache which will discard any lightcache version that is not compatible. Differential Revision: https://developer.blender.org/D7066
2020-03-09GPencil: Refactor of Draw Engine, Vertex Paint and all internal functionsAntonio Vazquez
This commit is a full refactor of the grease pencil modules including Draw Engine, Modifiers, VFX, depsgraph update, improvements in operators and conversion of Sculpt and Weight paint tools to real brushes. Also, a huge code cleanup has been done at all levels. Thanks to @fclem for his work and yo @pepeland and @mendio for the testing and help in the development. Differential Revision: https://developer.blender.org/D6293
2020-03-09Depsgraph: fix crash caused by removing too many NO-OP nodesSybren A. Stüvel
Unused no-op operation nodes are not bound to a callback function, and have no outgoing relations. Incoming relations of such nodes are removed since ff60dd8b18ed00902e5bdfd36882072db7af8735. However, this was done too broadly, causing too many relations to be lost and indirectly linked objects to be unevaluated. This commit introduces a `DEPSOP_FLAG_FAKE_USER` flag for operation nodes, which indicates they are not to be removed, even when they appear to be unused. Reviewed By: sergey Differential Revision: https://developer.blender.org/D7074
2020-03-06Depsgraph: remove unused no-op nodes after buildingSybren A. Stüvel
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
2020-03-06Fix T73254: Drivers with the object.dimension variable are not updatedSybren A. Stüvel
This fixes an issue where drivers using `object.dimension` only add a dependency on `GEOMETRY` to the depsgraph, whereas they should also depend on `TRANSFORM`. This patch adds a new no-op operation that depends on the geometry and transform components to the Parameters component. An alternative implementation would be to have `RNANodeQuery::construct_node_identifier` return multiple node identifiers. However, this would spread throughout the depsgraph code and unnecessarily force many other functions to either return or handle multiple nodes where in 99.999% of the time a single node would suffice. The new `DIMENSIONS` node is added for each object. An upcoming patch will go over all no-op operation nodes and remove them from the depsgraph. Since this is a more dangerous operation, it'll be reviewed separately. Differential Revision: https://developer.blender.org/D7031