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
2019-05-16Refactor: Simplify ID Property freeingJacques Lucke
This also makes `IDP_CopyProperty` the "opposite" of `IDP_FreeProperty`, which is what I'd expect. Two refactoring steps: * rename IDP_FreeProperty to IDP_FreePropertyContent * new IDP_FreeProperty function that actually frees the property Reviewers: brecht Differential Revision: https://developer.blender.org/D4872
2019-05-16Depsgraph: Add queries whether ID is original/evaluatedSergey Sharybin
2019-05-15Outliner Restriction: Naming sanitization and iconDalai Felinto
No major API change here, only in the outliner restriction column variables (e.g., show_restrict_column_selectable > show_restrict_column_select). * Get rid of _INSTANCE (introduced on b1af68200159). * Differentiate (everywhere but the API) between HIDE (temporary) and VIEWPORT (global). * Use the expected icon for restrict viewport (same as objects and modifiers). * selectable > select
2019-05-14Depsgraph: dependency on B-Bone start handle end roll when inheriting it.Alexander Gavrilov
Specifically the dependency is on any drivers that may be affecting the RNA property of the handle bone, which currently link to segments.
2019-05-14Cleanup: sort struct declarationsCampbell Barton
2019-05-14Depsgraph: detect bbone_segments drivers from Object animation data.Alexander Gavrilov
2019-05-13Fix T63325: Drivers freezing input valueSergey Sharybin
Not sure why driver would be affecting on the behavior, the actual issue was caused by lack of proper relations built for lamps and cameras.
2019-05-13Fix T64387: Crash with driver copy/pasteSergey Sharybin
Was missing copy-on-write tag since lamp itself has no geometry or transform. Now tagging for animation, and taking care of special case in the dependency graph.
2019-05-11Outliner Visibility UpdateDalai Felinto
See T61578 for discussions and mockups. Visibility Options ================== We are adding more granular control over restriction columns in the outliner, exposing "indirect only" and "holdout" as options, and change the way users enable/disable collections in a viewlayer. We also rename the object viewport restriction to hide instance. So the options we have are: Collection ---------- * Render Visibility * Instance Visibility * Selectable (View) Layer Collection ----------------------- * Enable * Holdout * Indirect Only * Viewport Shortcuts ========= Isolate Collection ------------------ * Ctr + click isolates the collection. It turns all its parents and children "visible", and all the other collections "invisible". If ALL the collections were already properly set, we re-set the collections to their default value. Set Collection Inside Collections and Objects --------------------------------------------- * Shift + click: Set/unset inside collections and objects. We only set objects values as well when we are in View Layer mode and (obviously) when the objects have a matching property. Icons ===== Little reminder that we will need better icons for holdout, indirect only, and probably instanced (nothing wrong with the current, but it differs from the proposal when it is turned off). Also, we need to decide where do we want the modifier/bones/... icons to be (in which column) and ideally make sure their icons match the ones we use for collections/objects. At the moment those are using the screen icon, which is not being used by collections. Reviewers: brecht, billrey Subscribers: pablovazquez Differential Revision: https://developer.blender.org/D4823
2019-05-10Fix T64284 Mirrored Instances have flipped normals/face orientationClément Foucault
It was a missing invert matrix update and also setting the OB_NEG_SCALE. This defeats the purpose of not computing it in the draw manager but this is more local and is have not a dramatic impact on performance.
2019-05-09DepsGraph: Multi ViewLayer SelectionJeroen Bakker
When using multiple viewlayers and switching between them the selection gets buggy. The reason for this is that the select_id is updated based on the index in the viewlayer. This makes the select_id not unique as objects might be shared or not shared at all. This fix will update the select_id on all objects in main. This will be triggered in all the selection operators. Reviewed By: sergey, brecht Maniphest Tasks: T55617 Differential Revision: https://developer.blender.org/D4824
2019-05-07Depsgraph: provide more granularity to PoseBone property links.Alexander Gavrilov
Most properties aren't altered by the evaluation of the bone, and can be read immediately from its input operation. B-Bone properties can be evaluated at the last possible moment. This provides more freedom in using drivers to connect bone properties: for example, it is now possible to read raw local transform values via drivers from a bone that depends on the reader bone via constraints.
2019-05-07Sound: Revert all the recent changes to soundSergey Sharybin
This happened to be a bigger rabbit hole to hell than it originally seemed, and there are higher priority design tasks to be handled (at this point high priority design task is more important than high priority bug fix). After talking to Brecht the decision was made to revert to the known isolated issue, which will allow everyone in the studio work same as prior to last Friday. The remaining bits will be worked on after all the design tasks are out of the way. This commit reverts: 4cdb4b9532c Fix T64161: Crashing using undo and multiple windows 064273a4ae7 Sound: Port more cases to be a part of dependency graph 2e582f8ab53 Sound: Fix access wrong dependency graph 5fc49d9c915 Sound: add stubs to build without audaspace c68c81a870b Sound: Make sure spin lock is initialized for new sound datablocks c02534469ac Sound: Delay creating sound scene handle for until is needed 9f681bea68f Fix T64144: Crash when displaying audio waveforms in VSE 2f79286453e Cleanup: unused vars bed8ad6f95a Fix crash in background rendering after recent sound changes 773691310f9 Fix T64143: Crash when scrubbing in the graph editor 888852055c1 Sound: Fix for being unable to jump to a frame during playback with A/V sync 6ab7b384645 Sound: More fixes for access of original scene 35db1195455 Sound: Fix access original scene during playback 211c4fd2e9a Depsgraph: Make comment about evaluation more obvious c5fe16e121e Sound: Make sound handles only be in evaluated datablocks b4e1e0946bf Depsgraph: Preserve sound and audio pointers through copy-on-write 4eedf784b04 Depsgraph: Store original sequencer strip pointer 6990ef151c1 Sound: Move evaluation to dependency graph d02da8de23b Sound: Delay opening handlers for until really needed 3369b828916 Depsgraph: Add scene audio component e8f10d64757 Depsgraph: Tag sequencer for update on changes 6e4b7a6e4d9 Depsgraph: Initial work to cover sequencer 17447ac5a6b Depsgraph: Make sound ID part of the graph
2019-05-06Fix T64111: add a NULL check to avoid crash with bad constraint subtarget.Alexander Gavrilov
2019-05-06Fix T64161: Crashing using undo and multiple windowsSergey Sharybin
It is possible that dependency graph was not yet initialized, so need to do NULL pointer check.
2019-05-06Sound: Port more cases to be a part of dependency graphSergey Sharybin
Mainly covers RNA callbacks which were still doing direct scene update, which was causing crashes. Now corresponding ID_RECALC flags are used, so all scenes can update accordingly. Also tested animated volume/pitch on strips, which now works as well. Fixes T64133: Assert after changing FPS Fixes T64154: Immediate crash when changing the current frame on the timeline Fixes T64185: Client Crashes when the frame position value is changed Fixes T64190: Blender Crash using Timeline Editor Fixes T64128: Click to close bug type on timeline Fixes T64147: Crash when setting current frame from Python Fixes T64152: Blender Auto-Close on timeline change
2019-05-06Depsgraph: Fix wrong commentSergey Sharybin
2019-05-05Depsgraph: fix Bone property drivers stored in Object animdata.Alexander Gavrilov
This can easily happen if adding drivers through Python via pose.bones[...].bone.driver_add(), e.g. in Rigify code: the bone field doesn't change id_data, so the driver is associated with the object ID. To handle this it's necessary to skip from Object to data in RNA_Bone-specific code both for generic RNA and in the custom code for drivers. The latter also had to be changed to use the proper parsed RNA pointer instead of string matching on paths.
2019-05-03Cleanup: Selling in commentSergey Sharybin
2019-05-03Sound: Make sound handles only be in evaluated datablocksSergey Sharybin
Quite straightforward change, which makes it so audio handles are only created inside of evaluated datablocks. Exception is adding sound strip to the sequencer, which needs an audio handle to query length and number of channels. This is done by temporarily loading sound file into an original datablock, and then tossing it away. There is an assert in sound.c which verifies that audio system is used from an evaluated domain, which should help porting all the cases which are likely missed by this commit. Some annoying parts: - `BKE_sound_update_scene()` is iterating over all bases, and does special ID tags to see whether sound has been handled or not already. This can not be done the old fashion now. Ideally, this will be done as a speaker datablock evaluation, but seems that would require a lock since audio API is not safe for threading. So this is not a desired way i'd say. Possible solution here would be to iterate over ID datablocks using dependency graph query API. - Frame jump needs to call `BKE_sound_seek_scene()` directly because there might be some flags assigned to the scene which could be clear after operator execution is over. Need to verify if that's the case though. This is a bit hairy code, so sticking to a safest and known to work approach for now. - Removed check for format when opening new sound file. Maybe we can have some utility function which queries channel and duration information, leaving the caller's code clean and tidy. Tested following cases: - Adding/removing/moving sequencer's sound strips. - Adding/moving speakers in viewport. - Rendering audio. Reviewers: brecht Differential Revision: https://developer.blender.org/D4779
2019-05-03Depsgraph: Preserve sound and audio pointers through copy-on-writeSergey Sharybin
This allows to have scene and speaker copy-on-write executed without interrupting the playing sound.
2019-05-03Depsgraph: Store original sequencer strip pointerSergey Sharybin
Allows to identify where the strip came from.
2019-05-03Sound: Move evaluation to dependency graphSergey Sharybin
The sound handles are still in the original datablocks, so it's easier to test since there should be no functional changes.
2019-05-03Depsgraph: Add scene audio componentSergey Sharybin
The idea is to make that responsible for dealing with things like audio update on frame jump and such.
2019-05-03Depsgraph: Tag sequencer for update on changesSergey Sharybin
Currently only adding, removing and transforming strips. Most likely more tags is needed.
2019-05-03Depsgraph: Initial work to cover sequencerSergey Sharybin
Just adds sequencer operation and links possible sound ID to it. No functional changes, just moving towards sound system integration into the dependency graph.
2019-05-03Depsgraph: Make sound ID part of the graphSergey Sharybin
Currently those IDs are not covered by copy-on-write mechanism since that ruins the current design of BKE_sound, But this change allows to move towards system where sound handlers are only valid for an evaluated ID datablocks.
2019-05-03Depsgraph: Remove filtering APISergey Sharybin
This was an attempt to speed up motion path calculation, which didn't really work in real world animation files, where animators already hide and disable all the heavy collections. Filtering approach also doesn't allow to have multiple frames evaluated in multiple threads easily. Filtering also adds extra complexity on keeping the graph in a correct and consistent state. Fixes T64057: Blender crash when use motion paths
2019-05-03Cleanup: warningsCampbell Barton
Quiet extra-semi-stmt & missing-variable-declarations
2019-05-01Alembic: integrate cache file into the dependency graphBrecht Van Lommel
* The cache file datablock is now evaluated as part of the dependency graph, creating/freeing the Alembic file handle matching the current frame. Modifiers and constraints depend on this evaluation. * Cache file handles and readers now only exist on COW datablocks, never the original ones. * Object data paths are flushed back to the original for the user interface. * The cache file keeps a list of all readers associated with its handle, and automatically frees them when the handle is freed. This kind of sharing of data across datablocks is weak but we have no better mechanism for it. Fix T62720: Alembic sequences not working and crashing Differential Revision: https://developer.blender.org/D4774
2019-05-01ClangFormat: run with ReflowComments on source/Campbell Barton
Prepare for enabling ReflowComments.
2019-04-30Depsgraph: Store pointer to original NLA stripSergey Sharybin
Similar to modifier data and particle systems.
2019-04-30Depsgraph: build bbone operation if bone segments has animationSergey Sharybin
This is a part of T61296: Crash with animated b-bone segments. Consider animated/driven bendy bones segments as something what requires special bendy-bones operation and relation in the dependency graph. This is because it is more beneficial from a performance point of view to not build operations if they are not needed. But if the property is animated it is not possible to make any reliable decision based on just a property value. Differential Revision: https://developer.blender.org/D4739
2019-04-30Depsgraph: Use new animation cache for visibility checkSergey Sharybin
Should be no functional changes, just switching code to use more generic checks now. One thing which goes a bit deeper than that is check for whether base is a part of dependency graph. This is now done by explicitly tagging corresponding ID node (of an object) rather than doing animation check again.
2019-04-30Depsgraph: Add generic animated properties cacheSergey Sharybin
Allows to speed up lookups like "is property FOO of data BAR animated". Can be used to optimize object's visibility check, but also allows to check animation on bones without too much of time penalty. The cache is shared between both nodes and relations builder. Currently is not used, just a boilerplate for an upcoming changes in an actual logic.
2019-04-30Depsgraph: Expose set type availableSergey Sharybin
Is way easier to use than a GSet and less proone for errors. If we really want GSet to always be used, should make some C++ wrapper.
2019-04-29Depsgraph: fix dependencies for drivers and animation on Bone properties.Sergey Sharybin
The driver code was almost there, but didn't work because ID nodes have no outlinks - and using links won't be safe anyway because of ordering issues. Instead, just loop over all IDNodes. Animation is fixed simply by referring to ARMATURE_EVAL instead of BONE in construct_node_identifier - the bArmature ID doesn't have BONE components in any case, so the old identifier can't work.
2019-04-29Depsgraph: fix handling of driver variable dependencies with proxies.Alexander Gavrilov
During driver var evaluation, the code directly skips to the proxy object if present, so the dependencies should reflect that, instead of inventing extra relations to pretend as if the values were first copied from the proxy - they actually aren't. The invented dependencies can't work without cycles in complex but meaningful cases, e.g. drivers on armature data that depend on pose. This alters the changes from 72cbf966fb91 to be more correct.
2019-04-24Fix T55326: Massive slowdown when animating material in a highpoly meshSergey Sharybin
This is a dependency graph part, which is the last required bit to get the issue solved after all the rest of the work done by Clement.
2019-04-23Depsgraph: make the dependency cycle report more readable.Alexander Gavrilov
Since it is a continuous cycle, there's no need to repeat the name of the previous bone. Also, dot is a common symbol in object and bone names, so use '/' instead for node nesting.
2019-04-23Depsgraph: fix standard IK target dependencies.Alexander Gavrilov
Targeting a different object always requires its transform, and normally dependencies should go to the solver node. ITASC is quite broken so special case it until fixed.
2019-04-22Cleanup: style, use bracesCampbell Barton
Add braces for modules already using braces almost everywhere.
2019-04-20Cleanup: add missing macros to clang-formatCampbell Barton
2019-04-20Cleanup: quiet extra-semicolon warningCampbell Barton
2019-04-18Fix T63332: backup and restore bPoseChannel_Runtime data during COW.Alexander Gavrilov
2019-04-18Cleanup: comment blocksCampbell Barton
2019-04-17ClangFormat: apply to source, most of internCampbell Barton
Apply clang format as proposed in T53211. For details on usage and instructions for migrating branches without conflicts, see: https://wiki.blender.org/wiki/Tools/ClangFormat
2019-04-15Fix T63574: missing implicit parent bone dependency in proxies.Alexander Gavrilov
Although technically evaluating the proxy copy nodes doesn't require the parent bone to be copied, other nodes that depend on the bones sometimes expect the parent to be ready. To meet this expectation it's necessary to add the dependency to the graph.
2019-04-14Depsgraph: fix hard CTD on dependency cycles through POSE_INIT.Alexander Gavrilov
As reported in T63582, it can cause chan_array to be not ready. To reliably avoid crashing, the only easy way seems to be to create the index during COW -- maybe @sergey has a better idea.
2019-04-14Fix T59622: dependency problems with Spline IK.Alexander Gavrilov
The bug is caused by problems in the dependency graph. Unfortunately, fixing is not just a matter of fixing the graph, because correct dependencies would cause a cycle here and in other reasonable use cases. The real fix thus requires refactoring Spline IK to require curve data only in the actual evaluation phase, and not in POSE_INIT_IK. In addition, this separates the normal bone evaluation loop from Spline IK computations for two reasons: - That still needs to be done even if spline IK can't evaluate due to missing curve data. - It should reduce issues with induced shearing, as Spline IK now controls how parent-child relations are handled in the chain, and can take care to only carry over rotation and location.