blender.git
4 years agoMerge branch 'master' into blender2.8
Campbell Barton [Mon, 4 Dec 2017 05:51:07 +0000 (16:51 +1100)]
Merge branch 'master' into blender2.8

4 years agoCleanup: wrap long function args in seqeffects
Campbell Barton [Mon, 4 Dec 2017 05:49:30 +0000 (16:49 +1100)]
Cleanup: wrap long function args in seqeffects

4 years agoCleanup: style
Campbell Barton [Mon, 4 Dec 2017 05:37:31 +0000 (16:37 +1100)]
Cleanup: style

4 years agoFix crash w/ template search & invalid property
Campbell Barton [Mon, 4 Dec 2017 05:17:54 +0000 (16:17 +1100)]
Fix crash w/ template search & invalid property

4 years agoFix MSVC compilation, there is no 'Designated initializers' in C++!
Bastien Montagne [Sat, 2 Dec 2017 17:25:09 +0000 (18:25 +0100)]
Fix MSVC compilation, there is no 'Designated initializers' in C++!

Looks like gcc is at the very least missing a warning here!

4 years agoBLI_ghash: Description of GHash, GSet
Campbell Barton [Sat, 2 Dec 2017 16:35:45 +0000 (03:35 +1100)]
BLI_ghash: Description of GHash, GSet

Also some re-indenting.

4 years agoCleanup: minor change to API use
Campbell Barton [Sat, 2 Dec 2017 11:41:53 +0000 (22:41 +1100)]
Cleanup: minor change to API use

4 years agoCleanup: indentation
Campbell Barton [Sat, 2 Dec 2017 11:35:09 +0000 (22:35 +1100)]
Cleanup: indentation

4 years agoFix Cycles standalone crash when saving output, after recent refactoring.
Brecht Van Lommel [Sat, 2 Dec 2017 04:44:32 +0000 (05:44 +0100)]
Fix Cycles standalone crash when saving output, after recent refactoring.

4 years agoDraw Maganer: Cleanup: Remove unnecessary lines of code in draw_cache_impl_metaball.c
Germano [Fri, 1 Dec 2017 20:25:46 +0000 (18:25 -0200)]
Draw Maganer: Cleanup: Remove unnecessary lines of code in draw_cache_impl_metaball.c

4 years agounittests: Update (fix) unittests after workspace API change
Dalai Felinto [Fri, 1 Dec 2017 18:08:45 +0000 (16:08 -0200)]
unittests: Update (fix) unittests after workspace API change

Tests were broken since e8c15e0ed15f8369d.

We now get view_layer from window, not workspace, since the same workspace can
have a different view_layer depending on the window scene.

4 years agoFixup for workspace view_layer fix
Dalai Felinto [Fri, 1 Dec 2017 17:26:46 +0000 (15:26 -0200)]
Fixup for workspace view_layer fix

We do not assume subversion bump until we actually change the subversion.

For example, a branch may have bumped its subversion to 3, yet still require
the new doversion code introduced on 108c4bd5026.

4 years agoFix crash reading 2.8 files with workspace.view_layer set
Julian Eisel [Fri, 1 Dec 2017 17:06:06 +0000 (18:06 +0100)]
Fix crash reading 2.8 files with workspace.view_layer set

Stupid error from e8c15e0ed15f8369d.

Also removed WorkSpace.view_layer usage and marked as deprecated.

4 years agoDepsgraph: Call editors update after everything was flushed
Sergey Sharybin [Fri, 1 Dec 2017 16:56:52 +0000 (17:56 +0100)]
Depsgraph: Call editors update after everything was flushed

This way we can inform editors about all edits at once. Currently this is not
used, but in the next commits we will inform editors about what exactly has
changed.

4 years agoCleanup: Proper silencing of unused vars( for now).
Bastien Montagne [Fri, 1 Dec 2017 16:58:15 +0000 (17:58 +0100)]
Cleanup: Proper silencing of unused vars( for now).

4 years agoFix warnings in release builds.
Bastien Montagne [Fri, 1 Dec 2017 16:41:54 +0000 (17:41 +0100)]
Fix warnings in release builds.

4 years agoCleanup: forgot to rename RNA prop flag to override_static...
Bastien Montagne [Fri, 1 Dec 2017 16:33:56 +0000 (17:33 +0100)]
Cleanup: forgot to rename RNA prop flag to override_static...

4 years agoDepsgraph: Separate loop for ID node flags clear
Sergey Sharybin [Fri, 1 Dec 2017 16:30:36 +0000 (17:30 +0100)]
Depsgraph: Separate loop for ID node flags clear

This ends up in less number of memory writes, which should have positive effect
on performance.

4 years agoFix update of non-scene owned layer collections
Dalai Felinto [Fri, 1 Dec 2017 13:24:06 +0000 (11:24 -0200)]
Fix update of non-scene owned layer collections

We are using NC_SCENE | ND_LAYER_CONTENT for the shader, however this does not work for groups
unless we manually handle the notifiers.

Otherwise the group id is passed, and the listener never gets the notification since a scene id
is expected, or no id at all.

4 years agoGroups and collection: editing group collections
Dalai Felinto [Thu, 30 Nov 2017 20:38:07 +0000 (18:38 -0200)]
Groups and collection: editing group collections

Allow users to edit either the object group active collection or view layer one

We can't support users selecting the group collections from the outliner group
because that would be imply having an active group for the scene or workspace.

But the way it is now allows to see and edit the collection values after the
group is instanced.

4 years agoGroups and collection: create group from collection
Dalai Felinto [Fri, 1 Dec 2017 14:23:05 +0000 (12:23 -0200)]
Groups and collection: create group from collection

You could still create groups as before, with Ctl + G. This will create a group
with a single visible collection.

However you can also create a group from an existing collection. Just go to
the menu you get in the outliner when clicking in a collection and pick
"Create Group".

Remember to instance the group afterwards, or link it into a new scene or file.

The group and the collection are not kept in sync afterwards. You need to manually
edit the group for further changes.

4 years agoGroups and collection: initial integration
Dalai Felinto [Fri, 1 Dec 2017 13:24:21 +0000 (11:24 -0200)]
Groups and collection: initial integration

Since we are ditching layers from Blender (2.8) we need a replacement to
control groups visibility. This commit introduces collections as the building
blocks for groups, allowing users to control visibility as well as overrides
for groups.

Features
========

* Groups now have collections
    This way you can change the visibility of a collection inside a group, and add
    overrides which are part of the group and are prioritized over other overrides.

* Outliner
    Groups can inspect their collections, change visibility, and add/remove members.

    To change an override of a group collection, you need to select an instance of
    the group, and then you can choose "group" in the collection properties editor
    to edit this group active collection instead of the view layer one.

* Dupli groups overrides
    We can now have multiple instances of the same group with an original "override"
    and different overrides depending on the collection the instanced object is part
    of.

Technical
=========

* Layers
    We use the same api for groups and scene as much as possible.

Reviewers: sergey (depsgraph), mont29 (read/write and user count)
Differential Revision: https://developer.blender.org/D2892

4 years agoWorkspaces: Store an active view-layer per scene
Julian Eisel [Fri, 1 Dec 2017 14:47:24 +0000 (15:47 +0100)]
Workspaces: Store an active view-layer per scene

Instead of storing a single active view-layer in the workspace, one is
stored for each scene the workspace showed before.
With this, some things become possible:
* Multiple windows in the same workspace but showing different scenes.
* Toggling back and forth scene keeps same active view-layer for each scene.
* Activating workspace which didn't show current scene before, the current view-layer is kept.

A necessary evil for this is that accessing view-layer and object mode
from .py can't be done via workspace directly anymore. It has to be done
through the window, so RNA can use the correct scene.
So instead of `workspace.view_layer`, it's `window.view_layer` now (same
with mode) even though it's still workspace data.

Fixes T53432.

4 years agoDepsgraph: Cleanup, simplify evaluation flush function
Sergey Sharybin [Fri, 1 Dec 2017 15:02:10 +0000 (16:02 +0100)]
Depsgraph: Cleanup, simplify evaluation flush function

Also avoid once queue push for cases when current operation has multiple
outgoing relations.

4 years agoSilence warning from object_relations.c
Dalai Felinto [Fri, 1 Dec 2017 14:39:20 +0000 (12:39 -0200)]
Silence warning from object_relations.c

4 years agoDepsgraph: Remove legacy recalc flag from DNA
Sergey Sharybin [Fri, 1 Dec 2017 11:26:32 +0000 (12:26 +0100)]
Depsgraph: Remove legacy recalc flag from DNA

4 years agoDepsgraph: Remove clear of legacy unused flag
Sergey Sharybin [Fri, 1 Dec 2017 11:18:19 +0000 (12:18 +0100)]
Depsgraph: Remove clear of legacy unused flag

4 years agoDepsgraph: Move away from setting old deprecated object recalc flags
Sergey Sharybin [Fri, 1 Dec 2017 11:14:55 +0000 (12:14 +0100)]
Depsgraph: Move away from setting old deprecated object recalc flags

Those shouldn't be used anywhere for real now.

4 years agoDepsgraph: Don't use legacy flags in versioning code
Sergey Sharybin [Fri, 1 Dec 2017 11:16:29 +0000 (12:16 +0100)]
Depsgraph: Don't use legacy flags in versioning code

Wondering whether files from 2.37 are still working fine.
Don't have that version of Blender running here, so can't test :(

4 years agoDepsgraph: Use per-ID flags to see whether update is needed
Sergey Sharybin [Fri, 1 Dec 2017 11:11:38 +0000 (12:11 +0100)]
Depsgraph: Use per-ID flags to see whether update is needed

This is actually functions which needs bigger reconsideration, but for now let's
try to keep them working as much as possible.

4 years agoDepsgraph: Use new per-ID tags to see whether object in a group needs an update
Sergey Sharybin [Fri, 1 Dec 2017 11:09:26 +0000 (12:09 +0100)]
Depsgraph: Use new per-ID tags to see whether object in a group needs an update

This wouldn't be less precise than object level flag in theory, and we need to
move away from such a duplicating flags.

4 years agoTransform: Avoid attempt to bypass dependency graph update
Sergey Sharybin [Fri, 1 Dec 2017 11:07:41 +0000 (12:07 +0100)]
Transform: Avoid attempt to bypass dependency graph update

It's not possible to bypass new depsgraph, but also flush to other CoW copies
might be needed here.

4 years agoTransform: Use new DEG query API to see what's being affected by a changing object
Sergey Sharybin [Fri, 1 Dec 2017 10:39:42 +0000 (11:39 +0100)]
Transform: Use new DEG query API to see what's being affected by a changing object

This avoids us from directly calling object update, and doing other type of
update flushing.

Prepares us to get rid of Object->recalc flags.

4 years agoDepsgraph: Add query API to traverse all dependent IDs of the given ID
Sergey Sharybin [Fri, 1 Dec 2017 10:35:36 +0000 (11:35 +0100)]
Depsgraph: Add query API to traverse all dependent IDs of the given ID

4 years agoDepsgraph: Move iterator to own implementation file
Sergey Sharybin [Thu, 30 Nov 2017 15:49:32 +0000 (16:49 +0100)]
Depsgraph: Move iterator to own implementation file

4 years agoDepsgraph: Cleanup, use enum value rather than a define
Sergey Sharybin [Thu, 30 Nov 2017 15:46:33 +0000 (16:46 +0100)]
Depsgraph: Cleanup, use enum value rather than a define

4 years agoDepsgraph: Cleanup, naming
Sergey Sharybin [Thu, 30 Nov 2017 15:44:35 +0000 (16:44 +0100)]
Depsgraph: Cleanup, naming

It makes more sense to stick to DEG_iterator_object order in name, since we can
have functions to iterate over different entities and we want all of them to
have common prefix.

4 years ago_gawain python module: Add methods "program_use_begin" and "program_use_end"
Germano [Fri, 1 Dec 2017 06:25:47 +0000 (04:25 -0200)]
_gawain python module: Add methods "program_use_begin" and "program_use_end"

Required to updade uniforms

4 years agoRNA: Fix unreported: Some callbacks called when updating properties were incorrect
Germano [Thu, 30 Nov 2017 18:53:15 +0000 (16:53 -0200)]
RNA: Fix unreported: Some callbacks called when updating properties were incorrect

4 years agoRemoving OMP: legacy ccgsubsurf.
Bastien Montagne [Thu, 30 Nov 2017 14:55:15 +0000 (15:55 +0100)]
Removing OMP: legacy ccgsubsurf.

Performances gain is rather low this time, about 5% on average (in whole
affected functions).

4 years agoDepsgraph: Add assert to make sure the view layer is part of the scene
Dalai Felinto [Thu, 30 Nov 2017 15:44:09 +0000 (13:44 -0200)]
Depsgraph: Add assert to make sure the view layer is part of the scene

Which is not in some cases since workspace is still partly implemented.

4 years agoTransform: Fix recent merge conflict resolution fiasco
Sergey Sharybin [Thu, 30 Nov 2017 15:36:24 +0000 (16:36 +0100)]
Transform: Fix recent merge conflict resolution fiasco

Why is it called legacy when this is a legit flags which are still to be checked
at a runtime???

4 years agoMerge branch 'master' into blender2.8
Sergey Sharybin [Thu, 30 Nov 2017 14:11:06 +0000 (15:11 +0100)]
Merge branch 'master' into blender2.8

4 years agoTransform: Use single flag with more meaningful name to prevent snapping to a depende...
Sergey Sharybin [Thu, 30 Nov 2017 14:03:48 +0000 (15:03 +0100)]
Transform: Use single flag with more meaningful name to prevent snapping to a dependent object

The idea of this flag was to prevent snapping onto an object which depends on
currently modifying ones. Using single flag makes more sense here, and also
makes it possible to replace some ob->recalc based magic with depsgraph query
to set those flags.

4 years agoTransform: Remove some legacy code about snapping in particle edit mode
Sergey Sharybin [Thu, 30 Nov 2017 13:52:34 +0000 (14:52 +0100)]
Transform: Remove some legacy code about snapping in particle edit mode

It looks stupid to first force some flag being set and then have workaround
to ignore that flag in snapping code. Let's just not set the flag in the first
place.

The only useful situation where such snapping was usable is to move roots of
disconnected hair, which still works just fine. However, there might be some
other hidden corner case where this workaround was needed.

4 years agoFix memory leak when single_obdata_users() fails to copy datablock
Dalai Felinto [Thu, 30 Nov 2017 12:37:54 +0000 (10:37 -0200)]
Fix memory leak when single_obdata_users() fails to copy datablock

4 years agoFix lightprobe single user not working
Dalai Felinto [Thu, 30 Nov 2017 12:57:48 +0000 (10:57 -0200)]
Fix lightprobe single user not working

4 years agoDepsgraph: Fix crash on playback of animated objects when CoW is enabled
Sergey Sharybin [Thu, 30 Nov 2017 12:42:56 +0000 (13:42 +0100)]
Depsgraph: Fix crash on playback of animated objects when CoW is enabled

We should keep base_flags after CoW object datablock was updated. Not entirely
happy with current solution, but it fixes crash and allows us to run tests
again.

More proper solution would be to make CoW operation a per-component thingie,
which will only update corresponding parts.

4 years agoLayer: Copy layer collection properties when doing a full copy of scene
Dalai Felinto [Thu, 30 Nov 2017 12:01:15 +0000 (10:01 -0200)]
Layer: Copy layer collection properties when doing a full copy of scene

4 years agoDepsgraph: Fix wrong remapping of compositor node tree when CoW is enabled
Sergey Sharybin [Thu, 30 Nov 2017 11:35:51 +0000 (12:35 +0100)]
Depsgraph: Fix wrong remapping of compositor node tree when CoW is enabled

4 years agoDepsgraph: Fix missing objects in viewport when CoW is enabled
Sergey Sharybin [Thu, 30 Nov 2017 11:29:53 +0000 (12:29 +0100)]
Depsgraph: Fix missing objects in viewport when CoW is enabled

Remapping of pointers did not work properly, since it had no pointers yet to
remap base->object to a CoW object.

4 years agoDepsgraph: Make sure we pass proper base to object builder
Sergey Sharybin [Thu, 30 Nov 2017 11:27:54 +0000 (12:27 +0100)]
Depsgraph: Make sure we pass proper base to object builder

4 years agoDepsgraph: Make a note about why is it OK to pass original base in relations builder
Sergey Sharybin [Thu, 30 Nov 2017 11:24:57 +0000 (12:24 +0100)]
Depsgraph: Make a note about why is it OK to pass original base in relations builder

4 years agoDepsgraph: Properly pass flags when COW is not used
Sergey Sharybin [Thu, 30 Nov 2017 11:23:04 +0000 (12:23 +0100)]
Depsgraph: Properly pass flags when COW is not used

4 years agoDepsgraph: Cleanup spelling
Sergey Sharybin [Thu, 30 Nov 2017 11:08:10 +0000 (12:08 +0100)]
Depsgraph: Cleanup spelling

4 years agoDepsgraph: Tag all id_types on_visible_update
Dalai Felinto [Thu, 30 Nov 2017 11:14:43 +0000 (09:14 -0200)]
Depsgraph: Tag all id_types on_visible_update

We need all id nodes to be evaluated at least once when opening a file.
This is particuarly required for the upcoming group collection patch.

4 years agoMerge branch 'master' into blender2.8
Sergey Sharybin [Thu, 30 Nov 2017 10:59:28 +0000 (11:59 +0100)]
Merge branch 'master' into blender2.8

4 years agoDepsgraph: More full explanation for previous commit
Sergey Sharybin [Thu, 30 Nov 2017 10:57:21 +0000 (11:57 +0100)]
Depsgraph: More full explanation for previous commit

4 years agoDepsgraph: Fix DEG_id_type_tag comment
Dalai Felinto [Thu, 30 Nov 2017 10:53:11 +0000 (08:53 -0200)]
Depsgraph: Fix DEG_id_type_tag comment

4 years agoMerge branch 'master' into blender2.8
Campbell Barton [Thu, 30 Nov 2017 07:30:41 +0000 (18:30 +1100)]
Merge branch 'master' into blender2.8

4 years agoHaiku OS Support
Campbell Barton [Thu, 30 Nov 2017 06:56:01 +0000 (17:56 +1100)]
Haiku OS Support

D2860 by @miqlas

Even though Haiku is a niche OS, only minor changes are needed.

4 years agoCycles: Improve denoising speed on GPUs with small tile sizes
Lukas Stockner [Fri, 10 Nov 2017 03:34:14 +0000 (04:34 +0100)]
Cycles: Improve denoising speed on GPUs with small tile sizes

Previously, the NLM kernels would be launched once per offset with one thread per pixel.
However, with the smaller tile sizes that are now feasible, there wasn't enough work to fully occupy GPUs which results in a significant slowdown.

Therefore, the kernels are now launched in a single call that handles all offsets at once.
This has two downsides: Memory accesses to accumulating buffers are now atomic, and more importantly, the temporary memory now has to be allocated for every shift at once, increasing the required memory.
On the other hand, of course, the smaller tiles significantly reduce the size of the memory.

The main bottleneck right now is the construction of the transformation - there is nothing to be parallelized there, one thread per pixel is the maximum.
I tried to parallelize the SVD implementation by storing the matrix in shared memory and launching one block per pixel, but that wasn't really going anywhere.

To make the new code somewhat readable, the handling of rectangular regions was cleaned up a bit and commented, it should be easier to understand what's going on now.
Also, some variables have been renamed to make the difference between buffer width and stride more apparent, in addition to some general style cleanup.

4 years agoFix T53410: 3D Text always recalculated
Campbell Barton [Thu, 30 Nov 2017 06:08:37 +0000 (17:08 +1100)]
Fix T53410: 3D Text always recalculated

4 years agoSelect similar for bones by group index
Campbell Barton [Thu, 30 Nov 2017 03:33:58 +0000 (14:33 +1100)]
Select similar for bones by group index

D2931 by @col-one

4 years agoFix T53420: Vertex Groups: The "-" button gets a hidden function
Bastien Montagne [Wed, 29 Nov 2017 19:19:07 +0000 (20:19 +0100)]
Fix T53420: Vertex Groups: The "-" button gets a hidden function

Guess 'remove all unlocked' is new-ish feature...

To be backported to 2.79a (I think).

4 years agoFix T53116: default texture coordinates for volume materials are blank.
José Luis Oliveira Cunha [Wed, 29 Nov 2017 18:18:04 +0000 (19:18 +0100)]
Fix T53116: default texture coordinates for volume materials are blank.

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

4 years agoMerge branch 'master' into blender2.8
Brecht Van Lommel [Wed, 29 Nov 2017 17:13:06 +0000 (18:13 +0100)]
Merge branch 'master' into blender2.8

4 years agoCycles: add object level holdout property.
Brecht Van Lommel [Sat, 18 Nov 2017 05:06:27 +0000 (06:06 +0100)]
Cycles: add object level holdout property.

This works the same as the holdout shader and Z mask layer. Combined with
overrides in 2.8 this is intended to replace the Z mask layer bits.

4 years agoCycles: improve triangle intersection performance.
Maxym Dmytrychenko [Wed, 29 Nov 2017 01:02:17 +0000 (02:02 +0100)]
Cycles: improve triangle intersection performance.

Reduces render time by about 1-2% in benchmark scenes.

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

4 years agoSequencer: add many more color blend modes, and a new color mix strip.
Maikon Araujo [Mon, 27 Nov 2017 22:33:08 +0000 (23:33 +0100)]
Sequencer: add many more color blend modes, and a new color mix strip.

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

4 years agoFix paint float color blending bugs with alpha 1.0 and vivid light.
Brecht Van Lommel [Wed, 29 Nov 2017 01:13:37 +0000 (02:13 +0100)]
Fix paint float color blending bugs with alpha 1.0 and vivid light.

For some blend modes there would be no effect with factor 1.0, even if factor
0.999 would give a very different image. Now the result should have no
discontinuity.

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

4 years agoMerge branch 'master' into blender2.8
Sergey Sharybin [Wed, 29 Nov 2017 16:59:04 +0000 (17:59 +0100)]
Merge branch 'master' into blender2.8

4 years agoDepsgraph: Cleanup, use explicit NULL pointer checks
Sergey Sharybin [Wed, 29 Nov 2017 16:55:28 +0000 (17:55 +0100)]
Depsgraph: Cleanup, use explicit NULL pointer checks

4 years agoID static override: add basic support for overriding animation.
Bastien Montagne [Wed, 29 Nov 2017 16:20:00 +0000 (17:20 +0100)]
ID static override: add basic support for overriding animation.

This is very bold right now - you simply can replace (or add) an action
to an override data-block. Actions themselves are not 'customizable'
through override at all currently (we may at least add
'add/remove/replace fcurves' feature in future), and nothing else in
animdata is overridable currently.

4 years agoMake basic object & bones transformations overridable.
Bastien Montagne [Wed, 29 Nov 2017 16:14:27 +0000 (17:14 +0100)]
Make basic object & bones transformations overridable.

You can now override loc/rot/scale of objects and posebones.

Also added a basic operator to make an override of active linked object,
but this is very limited/wip/testing feature (you have to manually override
object and its armature, and relink to proper local overrides
yourself...). Final 'make proxy killer' will be much more automated of
course.

4 years agoID static override: Make most Image properties overridable.
Bastien Montagne [Wed, 29 Nov 2017 16:10:24 +0000 (17:10 +0100)]
ID static override: Make most Image properties overridable.

First real 'usable' commit, will be needed by the 'virtual data-block'
asset feature (i.e. to be able to link a mere image file as if it was a
linked datablock, and generate automatically an override of it to make
it editable).

4 years agoID static override: automatically detect new overrides as part of undo step.
Bastien Montagne [Wed, 29 Nov 2017 16:06:28 +0000 (17:06 +0100)]
ID static override: automatically detect new overrides as part of undo step.

We could do that in several different way, e.g. adding some tag during
DEG evaluation, etc. But this is not a critical process (it's main
purpose is user feedback), so current solution seems to work well enough
- and it's dead simple! ;)

4 years agoID Static Override: add basic generic UI tools to control override of properties.
Bastien Montagne [Wed, 29 Nov 2017 16:03:52 +0000 (17:03 +0100)]
ID Static Override: add basic generic UI tools to control override of properties.

4 years agoID Static Override: add basic UI feedback.
Bastien Montagne [Wed, 29 Nov 2017 14:47:37 +0000 (15:47 +0100)]
ID Static Override: add basic UI feedback.

For now, using a new color for overridden properties (similar to
animated/driven status), UI team will need to work on a better solution
maybe...

4 years agoID Static Override, part II: RNA changes.
Bastien Montagne [Wed, 29 Nov 2017 14:31:31 +0000 (15:31 +0100)]
ID Static Override, part II: RNA changes.

This is essentially a huge refactor/extension of our existing RNA
compare & copy code, since static override needs more advanced handling here.

Note that not all new features are implemented yet, advanced things like
collections insertion/deletion are still TODO (medium priority).

This completes the ground work for overrides, remaining commits will be
about UI and some basic/testing activation of overrides for a limited
set of data-blocks & properties.

For details see https://developer.blender.org/D2417

4 years agoDefine RNA_STACK_ARRAY (usable everywhere in RNA), and make PYRNA_STACK_ARRAY use it.
Bastien Montagne [Wed, 29 Nov 2017 14:16:12 +0000 (15:16 +0100)]
Define RNA_STACK_ARRAY (usable everywhere in RNA), and make PYRNA_STACK_ARRAY use it.

4 years agoMerge ID static override, part I: core changes in DNA, BKE and .blend read/write.
Bastien Montagne [Wed, 29 Nov 2017 14:05:03 +0000 (15:05 +0100)]
Merge ID static override, part I: core changes in DNA, BKE and .blend read/write.

See https://developer.blender.org/D2417 for details.

Note that since static overrides rely heavily on RNA, this commit is
essentially invisible from user PoV, more in next commits.

4 years agoPreparing merge of id_override_static: add BKE_id_swap().
Bastien Montagne [Wed, 29 Nov 2017 12:13:16 +0000 (13:13 +0100)]
Preparing merge of id_override_static: add BKE_id_swap().

This function swaps the memory content of two data-blocks (of same type
obviously), while preserving most of the ID 'header' itself.

It is intended to be used to quickly and easily replace the data of an
existing ID by another one, presumably a temporary 'working' one,
without having to suffer from things like name changes,
registering/removing from Main database, etc.

4 years agoMerge branch 'master' into blender2.8
Sergey Sharybin [Wed, 29 Nov 2017 15:32:50 +0000 (16:32 +0100)]
Merge branch 'master' into blender2.8

4 years agoCleanup: De-duplicate code in object update routines
Sergey Sharybin [Wed, 29 Nov 2017 15:26:16 +0000 (16:26 +0100)]
Cleanup: De-duplicate code in object update routines

4 years agoCleanup: Split depsgraph uber transform function callback
Sergey Sharybin [Wed, 29 Nov 2017 15:22:59 +0000 (16:22 +0100)]
Cleanup: Split depsgraph uber transform function callback

4 years agoCleanup: Remove unused argument
Sergey Sharybin [Wed, 29 Nov 2017 15:14:39 +0000 (16:14 +0100)]
Cleanup: Remove unused argument

4 years agoCleanup: Make object_handle_update easier to follow
Sergey Sharybin [Wed, 29 Nov 2017 15:12:39 +0000 (16:12 +0100)]
Cleanup: Make object_handle_update easier to follow

4 years agoMerge branch 'master' into blender2.8
Sergey Sharybin [Wed, 29 Nov 2017 15:00:50 +0000 (16:00 +0100)]
Merge branch 'master' into blender2.8

4 years agoCleanup: Remove unused function
Sergey Sharybin [Wed, 29 Nov 2017 14:59:51 +0000 (15:59 +0100)]
Cleanup: Remove unused function

4 years agoMerge branch 'master' into blender2.8
Sergey Sharybin [Wed, 29 Nov 2017 14:47:00 +0000 (15:47 +0100)]
Merge branch 'master' into blender2.8

4 years agoEevee: Fix default shader.
Clément Foucault [Wed, 29 Nov 2017 15:02:35 +0000 (16:02 +0100)]
Eevee: Fix default shader.

4 years agoTransform: Avoid use of ob->recalc in snapping code
Sergey Sharybin [Wed, 29 Nov 2017 14:29:39 +0000 (15:29 +0100)]
Transform: Avoid use of ob->recalc in snapping code

Do a direct update of object transform instead, without involving
manual trickery of recalc flag.

Shouldn't be functional changes as far as artists are concerned,
but will allow us to get rid of recalc flags in 2.8.

Thanks Bastien for review!

4 years agoMerge branch 'master' into blender2.8
Sergey Sharybin [Wed, 29 Nov 2017 13:59:48 +0000 (14:59 +0100)]
Merge branch 'master' into blender2.8

4 years agoDepsgraph: Fix assert failure
Sergey Sharybin [Wed, 29 Nov 2017 13:58:37 +0000 (14:58 +0100)]
Depsgraph: Fix assert failure

4 years agoDraw manager: Cleanup, use lower case prefix for private functions
Sergey Sharybin [Wed, 29 Nov 2017 11:49:15 +0000 (12:49 +0100)]
Draw manager: Cleanup, use lower case prefix for private functions

4 years agoExternal engine: Cleanup, use lower case prefix for private functions
Sergey Sharybin [Wed, 29 Nov 2017 11:30:55 +0000 (12:30 +0100)]
External engine: Cleanup, use lower case prefix for private functions

4 years agoEevee engine: Cleanup, use lower case prefix for private functions
Sergey Sharybin [Wed, 29 Nov 2017 11:28:40 +0000 (12:28 +0100)]
Eevee engine: Cleanup, use lower case prefix for private functions

4 years agoClay engine: Cleanup, use lower case prefix for private functions
Sergey Sharybin [Wed, 29 Nov 2017 11:26:59 +0000 (12:26 +0100)]
Clay engine: Cleanup, use lower case prefix for private functions

4 years agoBasic engine: Cleanup, use lower case prefix for private functions
Sergey Sharybin [Wed, 29 Nov 2017 11:24:36 +0000 (12:24 +0100)]
Basic engine: Cleanup, use lower case prefix for private functions