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-07-09Fix T66610: Planar Track extremely laggy when 3D View is openSergey Sharybin
The issue was caused by modifications to planar track tagging clip for copy-on-write, which was invalidating its cache and forcing current frame in 3D viewport to be re-load. Ideal solution would be to share movie cache across original and evaluated movie clips which will reduce memory usage. However, doing such ownership changes so close to the code freeze is not something comfortable to do.
2019-07-04Fix T63788: Crash if particle system is turned off in particle editing modeSergey Sharybin
Make sure particle system edit never points to a modifier or particle system which becomes inactive. This is needed because copy-on-write will change pointers of them and those pointers are supposed to be restored from particle system evaluation. But since the particle system is disabled it never updates pointers. Reviewers: brecht Reviewed By: brecht Differential Revision: https://developer.blender.org/D5180
2019-06-12Fix T64710: Rigid body stops simulating when an object is selectedSergey Sharybin
Need to preserve last evaluated time through copy-on-write process.
2019-06-12Cleanup: spelling in commentsCampbell Barton
2019-06-05Sound: Port to a copy-on-write conceptSergey Sharybin
This change makes it so sound handles are created for evaluated scene, sequencer and speakers. This allows to have properly evaluated animation on them. For the viewport playback sound uses regular dependency graph. For the final render sound uses dependency graph created for render pipeline, which now also contains sequencer and sound datablocks. All the direct sound update calls are replaced with corresponding dependency graph recalc tag.
2019-05-24Fix T65062: Compositor doesn't work when using different sceneSergey Sharybin
Need to preserve all view layers, even for indirectly linked scenes since they might be used by render layer nodes.
2019-05-24Depsgraph: Fix render pipeline depsgraph pointing to freed dataSergey Sharybin
2019-05-23Depsgraph: Don't tag original IDs for recalcSergey Sharybin
Tagging original ID introduces a conflict of interest when a separate graph is created and is tagging objects to be re-evaluated with its context. This is part of the problem in T63111: tags within a temporary dependency graph affects viewport and vice versa, which makes logic to wrongly consider that something did change in the scene and that baking is to be redone. This effectively reverts db3bfd0, but this time everything seems to be updating fine in the viewport.
2019-05-23Render: Use dependency graph for compositor/sequencerSergey Sharybin
This change makes it so a minimal dependency graph which only includes compositor and sequencer is built for the render pipeline purposes. Tricky part here is that it's only compositor itself and sequencer who to use this dependency graph and IDs from it. Render engines are still to be provided original IDs because: - They will create dependency graph for the given scene, and currently it is not possible to create dependency graph from CoW scene. - IDs from the compositor/sequencer dependency graph are "stripped", as in, they wouldn't have all view layers, collections or objects required for proper final render. This creates annoying mess of mixing evaluated and original scene access in various parts of the pipeline. Fixes T63927: Compositing nodes - drivers don't really work Reviewers: brecht Maniphest Tasks: T63927 Differential Revision: https://developer.blender.org/D4911
2019-05-23Depsgraph: Allow building scene propertiesSergey Sharybin
This is used by driers and this is a first step towards support of scenes used for only compositor or sequencer. Fixes T61014: Assert adding a driver that uses a single property of a scene ID
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-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-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-04-30Depsgraph: Store pointer to original NLA stripSergey Sharybin
Similar to modifier data and particle systems.
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-20Cleanup: add missing macros to clang-formatCampbell Barton
2019-04-18Fix T63332: backup and restore bPoseChannel_Runtime data during COW.Alexander Gavrilov
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-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-03-29Cleanup: Spelling in commentSergey Sharybin
2019-03-25Cleanup: styleCampbell Barton
2019-03-20Cleanup: styleCampbell Barton
2019-03-18Subdiv: Enable topology cache in edit modeSergey Sharybin
The general idea of this change is to have a runtime data pointer in the ModifierData, so it can be preserved through copy-on-write updates by the dependency graph. This is where subdivision surface modifier can store its topology cache, so it is not getting trashed on every copy-on-write which is happening when moving a vertex. Similar mechanism should be used by multiresolution, dynamic paint and some other modifiers which cache evaluated data. This fixes T61746. Thing to keep in mind, that there are more reports about slow subdivision surface in the tracker, but that boils down to the fact that those have a lot of extraordinary vertices, and hence a lot slower to evaluated topology. Other thing is, this speeds up oeprations which doesn't change topology (i.e. moving vertices). Reviewers: brecht Reviewed By: brecht Maniphest Tasks: T61746 Differential Revision: https://developer.blender.org/D4541
2019-03-18Depsgraph: Store original modifier pointerSergey Sharybin
Currently not needed that much, but will ease some further development which is related on preserving runtime modifier data.
2019-03-18Cleanup: CommentsSergey Sharybin
2019-03-18Cleanup: C++ style of structure definitionSergey Sharybin
2019-03-16Cleanup: fix compiler warnings.Brecht Van Lommel
2019-03-08Fix T60900, T61111, T61963: node values stuck after clearing keyframes.Brecht Van Lommel
This removes special dependency graph code that was intended to avoid GPU shader recompiles by preserving the node tree and GPU material in specific cases. This is no longer needed now that we have a general shader pass cache that compares the generated shader code. The GPU material is already being freed in material and world eval as well, so there's no point. Note also that GPU materials are now safe to free from threads, actual OpenGL buffer freeing happens delayed.
2019-03-05Fix T61763: Crash on selecting "Background Scene"Sergey Sharybin
Memory optimization in dependency graph was using wrong view layer for the scene which came via set.
2019-03-01Use original base to see whether it can be ignored from evaluationSergey Sharybin
Object of evaluated base is not yet copied, so we can not know whether it has animation on visibility or not. This issue was reported in T56635#630383.
2019-02-28Depsgraph: Fix wrong disabled bases deletionSergey Sharybin
Original optimization idea was wrong: it is possible that some other ID would reference an object which is also used by a base. Rolled back to a bit more fragile solution. In the future would be nice to make it somewhat less duplicated with the builder itself. Fixes assert failure (and possibly crashes) when adding grease pencil object and switching to a draw mode.
2019-02-28Depsgraph: Change the logic about keeping bases in the graphSergey Sharybin
The idea is to keep bases which are known for sure to be in the dependency graph. Previously, this code was duplicating logic around checking restriction flags, which becomes more hard to maintain once we are moving towards to more comprehensive checks about whether base is a part of evaluated scene or not.
2019-02-27Move base flags evaluation to its own functionSergey Sharybin
No need to have iterator loop in the view layer evaluation, this only makes it more difficult to have base flags covered by the dependency graph. Other good thing is that we don't need to worry about whether base has been removed from the evaluated view layer or not. Reviewers: brecht Reviewed By: brecht Differential Revision: https://developer.blender.org/D4414
2019-02-27Cleanup: file rename lamp -> lightCampbell Barton
2019-02-27DNA: rename Lamp -> LightCampbell Barton
- BKE_lamp -> BKE_light - Main.lamp -> light
2019-02-19Cleanup: remove needless comment ;)Bastien Montagne
2019-02-18Fix (unreported) broken-by-design code in depsgraph's ↵Bastien Montagne
`deg_backup_object_runtime()` Committing this since it does fix broken logic (previously in that condition obdata would always be set to NULL, since `BKE_object_runtime_reset()` is called before). However, this has presumably been broken that way since 05/2018, so maybe that whole condition is not needed anymore? Or NULL pointer was working as well here? @sergey eyes are required here I guess ;)
2019-02-18Fix Object bbox memleak in depsgraph code.Bastien Montagne
Caused by rBae2b677dcb5a70f5, Object.runtime has lot of weird specific handlings in depsgraph... For now modified `deg_backup_object_runtime()` and `deg_restore_object_runtime()` to mimic previous behavior regarding Object bbox (i.e. pass it around, instead of wiping it clean). Reported in T61660.
2019-02-18doxygen: add newline after \fileCampbell Barton
While \file doesn't need an argument, it can't have another doxy command after it.
2019-02-17Cleanup: rename Mesh.edit_btmesh -> edit_meshCampbell Barton
When bmesh was in a branch we had both edit_mesh and edit_btmesh, now there is no reason to use this odd name.
2019-02-17Cleanup: move object bounding-box into runtime structCampbell Barton
2019-02-15Fix T61575: missing Cycles viewport updates when changing settings.Brecht Van Lommel
This reverts "Depsgraph: Don't tag original IDs", commit: 5f814cb3b47df9255724e979458e05a42ed40f9a.
2019-02-15Depsgraph: Don't tag original IDsSergey Sharybin
This is unreliable for cases when multiple dependency graphs are to be updated. The only reason why it was attempted to be made is to deal with cases when ID appears in the dependency graph for the first time. But even then it should be smart enough bring itself to an up-to-date state without any extra tricks.
2019-02-11Fix T61362: Hair particles does not appear when renderingSergey Sharybin
Fix T61406: Particles don't render Consider initial dependency graph evaluation as a file load. Is still resetting too much, but that we can solve later.
2019-02-06Cleanup: remove redundant doxygen \file argumentCampbell Barton
Move \ingroup onto same line to be more compact and make it clear the file is in the group.
2019-02-06Outliner visibility unification: Implement 3 levels of viewport visibilityDalai Felinto
Now collection and objects can be either: * Disabled for all the view layers. * Hidden for a view layer but not necessarily for all others. * Visible for a view layer but not necessarily for all others. Regarding icons: Whatever we decide to use for the "Hidden for all view layers" needs to be a toggle-like icon. Because when viewing "Scenes" instead of "View Layer" in the outliner we should be able to edit the collection "Hidden for all the view layers" as an on/off option. The operators are accessible via a Visibility context menu or shortcuts: * Ctrl + Click: Isolate collection (use shift to extend). * Alt + Click: Disable collection. * Shift + Click: Hide/Show collection and its children (objects and collections) Things yet to be tackled: * Object outliner context menu can also get a Visibility sub-menu. * Get better icons for viewport enable/disable. Note: * When using emulate 3 button mouse alt+click is used for 2d panning. In this case users have to use the operator from the menu. See T57857 for discussion. Patch: https://developer.blender.org/D4011 Reviewers: brecht and sergey Thanks to the reviewers and William Reynish and Julien Kasper in particular for the feedback.
2019-02-05BKE_library: add 'no preview' flag to LIB_ID_COPY_LOCALIZE.Bastien Montagne
No local work copy is expected to need preview data, at least it should not. Part of copy flags cleanup, done in separate commit in case something goes wrong here...
2019-02-05Cleanup: initial regrouping of ID create/copy flags.Bastien Montagne
Those two first sets of flags should represent some common use cases. The goal here is to reduce verbosity of calls to BKE_id_copy_ex, and help make it more obvious the 'common behaviours' of ID copying across codebase.