3 months agoMerge remote-tracking branch 'origin/blender-v2.93-release'
Sybren A. Stüvel [Thu, 20 May 2021 11:00:07 +0000 (13:00 +0200)]
Merge remote-tracking branch 'origin/blender-v2.93-release'

3 months agoFix T86193: Bake Action, wrong rotation order for bones
dreamertooth [Thu, 20 May 2021 10:53:14 +0000 (12:53 +0200)]
Fix T86193: Bake Action, wrong rotation order for bones

Use bone rotation order to compute the baked rotation. This fixes a bug
introduced in rB0e85d701c654, where the object rotation order was
applied to the bone.

Maniphest Tasks: T88359, T86193

Reviewed By: sybren, GuiltyGhost, #animation_rigging

Differential Revision:

3 months agoGeometry Nodes: new Material input node
Jacques Lucke [Thu, 20 May 2021 10:29:06 +0000 (12:29 +0200)]
Geometry Nodes: new Material input node

This node is similar to the Value and Vector node.
It just provides a way to use the same material in multiple nodes
without exposing it outside of a node group.

Differential Revision:

3 months agoGeometry Nodes: new Material Assign node
Jacques Lucke [Thu, 20 May 2021 10:22:13 +0000 (12:22 +0200)]
Geometry Nodes: new Material Assign node

This adds a new Material Assign node. It can be used to change the
material used by an existing mesh or to assign a material to a mesh
that has been generated from scratch.

Differential Revision:

3 months agoMaterials: support materials when applying modifier
Jacques Lucke [Thu, 20 May 2021 10:15:57 +0000 (12:15 +0200)]
Materials: support materials when applying modifier

This fixes the `Apply Modifier` and `Visual Geometry to Mesh` operator
when a modifier changed materials on the evaluated geometry.

This is necessary since rB1a81d268a19f2f1402f408ad1dadf92c7a399607.

Differential Revision:

3 months agoFix: wrong rna pointer for material slot
Jacques Lucke [Thu, 20 May 2021 10:14:31 +0000 (12:14 +0200)]
Fix: wrong rna pointer for material slot

This was missing from rB1a81d268a19f2f1402f408ad1dadf92c7a399607.

3 months agoGeometry Nodes: new geometry nodes evaluator
Jacques Lucke [Thu, 20 May 2021 09:34:47 +0000 (11:34 +0200)]
Geometry Nodes: new geometry nodes evaluator

The old geometry nodes evaluator was quite basic and missed many features.
It was useful to get the geometry nodes project started. However, nowadays
we run into its limitations from time to time.

The new evaluator is more complex, but comes with new capabilities.
The two most important capabilities are that it can now execute nodes in
parallel and it supports lazy evaluation.

The performance improvement by multi-threading depends a lot on the specific
node tree. In our demo files, the speedup is measurable but not huge. This
is mainly because they are bottlenecked by one or two nodes that have to be
executed one after the other (often the Boolean or Attribute Proximity nodes)
or because the bottleneck is multi-threaded already (often openvdb nodes).

Lazy evaluation of inputs is only supported by the Switch node for now.
Previously, geometry nodes would always compute both inputs and then just
discard the one that is not used. Now, only the input that is required
is computed.

For some more details read D11191, T87620 and the in-code documentation.

Differential Revision:

3 months agoCleanup: spelling
Campbell Barton [Thu, 20 May 2021 07:55:35 +0000 (17:55 +1000)]
Cleanup: spelling

3 months agoCleanup: inconsistent parameter names
Jacques Lucke [Thu, 20 May 2021 07:00:42 +0000 (09:00 +0200)]
Cleanup: inconsistent parameter names

3 months agoVSE: Fix select strips at current frame feature
Richard Antalik [Thu, 20 May 2021 03:00:13 +0000 (05:00 +0200)]
VSE: Fix select strips at current frame feature

This feature of `select_side_of_frame` was disabled by removing option
from operator property enum but functional code was never removed.

Add back option to use this feature.

Feature was disabled due to keymap issue. Currently this feature doesn't
have keymap assigned.

3 months agoCleanup: Remove unused define
Richard Antalik [Thu, 20 May 2021 02:25:56 +0000 (04:25 +0200)]
Cleanup: Remove unused define

References to `SEQ_CACHE_COST_MAX` were removed in 38b77ef8b221.

3 months agoVSE: Fix animation duplication in split operator
Richard Antalik [Wed, 19 May 2021 23:19:32 +0000 (01:19 +0200)]
VSE: Fix animation duplication in split operator

Due to misunderstanding of how strip duplication works, animation data
was duplicated on all strips when any strip was split.

`SEQ_sequence_base_dupli_recursive()` duplicated data on strip that was
being split, and `SEQ_ensure_unique_name()` duplicated animation on all

Only duplication should be done with `SEQ_ensure_unique_name()` and only
on right side split strips, because only these strips are duplicated.

3 months agoSplines: Optimize interpolation in special case virtual array
Hans Goudey [Wed, 19 May 2021 21:17:16 +0000 (17:17 -0400)]
Splines: Optimize interpolation in special case virtual array

When the input data is a virtual array for a single value, we don't need
to run any of the interpolation, instead just copy the input data.

3 months agoVSE: Fix rendering inconsistency
Richard Antalik [Wed, 19 May 2021 20:59:33 +0000 (22:59 +0200)]
VSE: Fix rendering inconsistency

Fix issue described in T87678, which was partially a bug and partially
change in intended(at least as far as I can tell) behaior.

Function `evaluate_seq_frame_gen` that was partially responsible for
filtering strips in stack for rendering wasn't working correctly.
Intended functionality seems to be removing all effect inputs from stack
as it is unlikely that user would want these to be blended in. However
there was logic to exclude effects placed into same input, which because
of weak implementation caused, that any effect input, that is effect as
well will be considered to be part of stack to be blended in.
This bug was apparently used to produce effects like glow over original

Even though this is originally unintended, I have kept this logic, but
I have made it explicit.

Another change is request made in T87678 to make it possible to keep
effect inputs as part of stack when they are placed above the effect,
which would imply that blending is intended. This change is again
explicitly defined.

Whole implementation has been refactored, so logic is consolidated
and code should be as explicit as possible and more readable.
`must_render_strip function` may be still quite hard to read, not sure
if I can make it nicer.

Last change is for remove gaps feature code - it used same rendering
code, which may be reason why its logic was split in first place.
Now it uses sequencer iterator, which will definitely be faster than
original code, but I could have used `LISTBASE_FOREACH` in this case.

Reviewed By: sergey

Differential Revision:

3 months agoVSE: Refactor sorting functions
Richard Antalik [Wed, 19 May 2021 20:45:43 +0000 (22:45 +0200)]
VSE: Refactor sorting functions

Recently `SEQ_sort()` function was split so functionality is provided
on per-seqbase basis. After discussion about this split, it turned out,
that per-seqbase operation is only that should be provided, because
RNA API functions need to be able to access arbitrary seqbase

Remove recently introduced function `seq_sort_seqbase` and change
`SEQ_sort` function to operate on seqbase.

Reviewed By: sergey

Differential Revision:

3 months agoCleanup: Use consistent order for functions in node files
Hans Goudey [Wed, 19 May 2021 20:13:05 +0000 (16:13 -0400)]
Cleanup: Use consistent order for functions in node files

After this commit, all geometry node "init" and "update" functions are
at the top of each file, right below the "layout" function. This means
you can always scroll to the bottom of the file to see the entry point,
and the boring boilerplate code is grouped in one section.

3 months agoGeometry Nodes: Execute point rotate node on curve component
Hans Goudey [Wed, 19 May 2021 19:58:34 +0000 (15:58 -0400)]
Geometry Nodes: Execute point rotate node on curve component

When adding attributes on the curve component, I missed calling this
node's execute function on the curve component, like the other nodes.

3 months agoGeometry Nodes: Support for dynamic attributes on curve splines
Hans Goudey [Wed, 19 May 2021 17:22:09 +0000 (13:22 -0400)]
Geometry Nodes: Support for dynamic attributes on curve splines

With this patch you will be able to add and remove attributes from curve
data inside of geometry nodes. The following is currently implemented:
* Adding attributes with any data type to splines or spline points.
* Support for working with multiple splines at the same time.
* Interaction with the three builtin point attributes.
* Resampling attributes in the resample node.

The following is not implemented in this patch:
* Joining attributes when joining splines with the join geometry node.
* Domain interpolation between spline and point domains.
* More efficient ways to call attribute operations once per spline.

Differential Revision:

3 months agoCleanup: Use copy constructor for CurveEval
Hans Goudey [Wed, 19 May 2021 17:02:53 +0000 (13:02 -0400)]
Cleanup: Use copy constructor for CurveEval

There is no need for a special "copy" method with a copy constructor,
which will be necessary to explicitly copy attributes anyway.

3 months agoFix T87793: Cycles OptiX crash hiding objects in viewport render
Brecht Van Lommel [Tue, 18 May 2021 22:55:22 +0000 (00:55 +0200)]
Fix T87793: Cycles OptiX crash hiding objects in viewport render

3 months agoCycles OpenCL: disable AO preview kernels
Brecht Van Lommel [Tue, 18 May 2021 22:14:23 +0000 (00:14 +0200)]
Cycles OpenCL: disable AO preview kernels

These seem to be causing some stability issues, and really are just not that
useful in practice. Compiling them is slow already, so it does not improve
the user experience much to show an AO preview if it's not nearly instant.

3 months agoAssets: Use textures (and shadows) for automatic object previews
Severin [Wed, 19 May 2021 15:51:25 +0000 (17:51 +0200)]
Assets: Use textures (and shadows) for automatic object previews

Textures may be important to be able to identify an object. They are also a way
to make many objects look more like when rendered with an advanced render
engine, without being that expensive.
So this seems like a simple way to increase usefulness of the automatic

3 months agoGPencil: Apply NanoSVG fix
Antonio Vazquez [Wed, 19 May 2021 15:56:12 +0000 (17:56 +0200)]
GPencil: Apply NanoSVG fix

This fix is ported from official NanoSVG git

3 months agoIDManagement: Enable ID sorting test for linked IDs.
Bastien Montagne [Wed, 19 May 2021 15:49:56 +0000 (17:49 +0200)]
IDManagement: Enable ID sorting test for linked IDs.

3 months agoIDManagement: Do not prevent sorting of linked IDs in `BKE_id_new_name_validate`.
Bastien Montagne [Wed, 19 May 2021 15:45:47 +0000 (17:45 +0200)]
IDManagement: Do not prevent sorting of linked IDs in `BKE_id_new_name_validate`.

While this function should (currently) not be called on linked ID, there
is no reason to treat those differently than local IDs, for the part
that they have in common: needs to be properly sorted.

3 months agoIDManagement: Fix ID sorting in case of linked IDs.
Bastien Montagne [Wed, 19 May 2021 15:04:10 +0000 (17:04 +0200)]
IDManagement: Fix ID sorting in case of linked IDs.

`id_sort_by_name` would simply not deal properly with linked IDs, could
lead to mixing IDs from different libraries, and unsorted IDs within the
same library.

3 months agoIDManagement: Add basic test regarding id sorting in their listbase.
Bastien Montagne [Wed, 19 May 2021 14:55:52 +0000 (16:55 +0200)]
IDManagement: Add basic test regarding id sorting in their listbase.

Note that while sorting of local IDs is fine, currently sorting of
linked IDs is a total unpredictable failure.

Next commit will fix this, ensuring that linked IDs are grouped by their
library, and properly name-sorted within this library group.

3 months agoFix T87621: Win32 Do Not Create Preview Thumbnails for Offline Files
Harley Acheson [Wed, 19 May 2021 15:40:00 +0000 (08:40 -0700)]
Fix T87621: Win32 Do Not Create Preview Thumbnails for Offline Files

This patch turns off the creation of file thumbnails for files that are
offline and therefore not fully-present on the file system. These types
of files - typically cloud-based or stored on slower backup media -
only have their contents available when actually accessed, at which
point there will be a short delay. If we allow thumbnail creation in
this state then all offline files in a folder will be downloaded just
to view a listing, which can take a long time.

Files in this state will instead get a more generic thumbnail that
still indicates file type (icon in center) and that shows offline state
will a special icon at the bottom-left.

Although this currently only affects Windows users, most of this patch
is platform-agnostic. So other platforms inherit this behavior if they
only add FILE_ATTR_OFFLINE attribute to files in this state.

See D11101 for more information.

Differential Revision:

Reviewed by Julian Eisel

3 months agoBlender LTS: match download urls with latest changes in buildbot.
Jeroen Bakker [Wed, 19 May 2021 14:39:22 +0000 (16:39 +0200)]
Blender LTS: match download urls with latest changes in buildbot.

3 months agoBlender LTS: match download urls with latest changes in buildbot.
Jeroen Bakker [Wed, 19 May 2021 14:39:22 +0000 (16:39 +0200)]
Blender LTS: match download urls with latest changes in buildbot.

3 months agoMerge branch 'blender-v2.93-release'
Jeroen Bakker [Wed, 19 May 2021 11:58:16 +0000 (13:58 +0200)]
Merge branch 'blender-v2.93-release'

3 months agoFix T88167: Regression: no tooltip for syringe/picker, during picking object
Pratik Borhade [Wed, 19 May 2021 11:46:55 +0000 (13:46 +0200)]
Fix T88167: Regression: no tooltip for syringe/picker, during picking object

Fix T88167.

Caused by {rB97defd9cd79b6e3ed0e52481a7078107dbe0522b}

`(BLI_rcti_isect_pt` used here to confirm if cursor position is in between active region boundary.
Subtracting min region boundary from the mouse position before the check, fails the condition.

`mval[2]` introduced to hold the region relative mouse position.

Reviewed By: Severin

Maniphest Tasks: T88167

Differential Revision:

3 months agoCleanup: use nullptr
Jacques Lucke [Wed, 19 May 2021 11:04:12 +0000 (13:04 +0200)]
Cleanup: use nullptr

3 months agoMerge branch 'blender-v2.93-release'
Clément Foucault [Wed, 19 May 2021 10:32:06 +0000 (12:32 +0200)]
Merge branch 'blender-v2.93-release'

3 months agoEEVEE: Subsurface Node: Fix inverted texture blur input
Clément Foucault [Wed, 19 May 2021 10:27:38 +0000 (12:27 +0200)]
EEVEE: Subsurface Node: Fix inverted texture blur input

Fixes T86097 EEVEE Subsurface Node give blurry edges

3 months agoMerge branch 'blender-v2.93-release'
Clément Foucault [Wed, 19 May 2021 10:17:23 +0000 (12:17 +0200)]
Merge branch 'blender-v2.93-release'

3 months agoEEVEE: Geometry info -> tangent: Make consistent with Cycles for hair
Mikhail Matrosov [Wed, 19 May 2021 10:09:29 +0000 (12:09 +0200)]
EEVEE: Geometry info -> tangent: Make consistent with Cycles for hair

Changes output for geometry info node in Eevee to be consistent with Cycles (w/o osl)

Before this patch Eevee outputs Z-tangent even for hair. This patch changes it to output hair tangent (growth direction). Hair tangent is impossible to derive otherwise from normal or view direction.

Reviewed By: fclem, brecht
Differential Revision:

3 months agoGeometry Nodes: don't show grease pencil materials for now
Jacques Lucke [Wed, 19 May 2021 09:44:10 +0000 (11:44 +0200)]
Geometry Nodes: don't show grease pencil materials for now

Those materials cannot be on geometry handled by geometry nodes yet.
So it makes sense not to show those materials in the material socket.

3 months agoGeometry Nodes: take materials into account when joining geometries
Jacques Lucke [Wed, 19 May 2021 09:02:25 +0000 (11:02 +0200)]
Geometry Nodes: take materials into account when joining geometries

Materials are now kept intact when using the Join Geometry node
or when realizing instaces.

3 months agoFix issue in previous commit
Jacques Lucke [Wed, 19 May 2021 08:51:36 +0000 (10:51 +0200)]
Fix issue in previous commit

When `PointerRNA->data` was null, it was interpreted as being
`None` in Python. This caused the materials slots to not show
correctly in the ui.

3 months agoMaterials: support changing materials during evaluation
Jacques Lucke [Wed, 19 May 2021 08:23:09 +0000 (10:23 +0200)]
Materials: support changing materials during evaluation

This commit allows that the evaluated geometry of an object has
different materials from the original geometry. This is needed
for geometry nodes.

The main thing that changes for render engines and exporters
is that the number of material slots on an object and its geometry
might not match anymore. For original data, the slot counts are
still equal, but not for evaluated data.

Accessing material slots though rna stays the same. The behavior
adapts automatically depending on whether the object is evaluated.

When accessing materials of an object through `BKE_object_material_*`
one has to use a new api for evaluated objects:
`BKE_object_material_get_eval` and `BKE_object_material_count_eval`.
In the future, the different behavior might be hidden behind a more
general C api, but that would require quite a few more changes.

The ground truth for the number of materials is the number of materials
on the geometry now. This is important in the current design, because
Eevee needs to know the number of materials just based on the mesh in
`mesh_render_mat_len_get` and similar places.

In a few places I had to add a special case for mesh edit mode to get it
to work properly. This is unfortunate, but I don't see a way around that
for now.

Differential Revision:

3 months agoFix T88362: Lineart countour rendering error
YimingWu [Wed, 19 May 2021 07:07:19 +0000 (15:07 +0800)]
Fix T88362: Lineart countour rendering error

This is caused by lacking of consideration of
OB_DUPLICOLLECTION in updateDepsgraph() in the

Reviewed by: Antonio Vazquez (antoniov)

3 months agoVSE: Better handling of effect strip splitting
Richard Antalik [Tue, 18 May 2021 21:38:33 +0000 (23:38 +0200)]
VSE: Better handling of effect strip splitting

Splitting of effect strip alone wasn't handled properly. Previously
this resulted in duplicating effect strip, and it was broken at least
from 2.79.

Change in rB8ec6b34b8eb2 was intended to allow splitting strips
individually, so it can be used as RNA API function but also so it
requires as little glue logic as possible.

This is fixed by splitting all dependent strips at once in 2 separate
ListBases for left and right strips. Strips can be finally moved into
original `ListBase`.

With this fix it is still possible to split strips individually with
little glue logic. RNA API function could return list of split strips
as well, currently at least one strip in chain will be provided so
chain can be reconstructed on python side.

Reviewed By: sergey

Differential Revision:

3 months agoVSE: Move whole strip chain to meta
Richard Antalik [Tue, 18 May 2021 21:28:00 +0000 (23:28 +0200)]
VSE: Move whole strip chain to meta

Python API function Sequence.move_to_meta() did delete effect chain
when strip with effects was moved.

Use iterator API to query effect strips and move whole chain to meta.

Reviewed By: sergey

Differential Revision:

4 months agoMerge branch 'blender-v2.93-release'
Sebastián Barschkis [Tue, 18 May 2021 20:37:38 +0000 (22:37 +0200)]
Merge branch 'blender-v2.93-release'

4 months agoFluid: Updated Mantaflow source files
Sebastián Barschkis [Tue, 18 May 2021 20:32:54 +0000 (22:32 +0200)]
Fluid: Updated Mantaflow source files

Includes update for OpenVDB file IO, i.e. fixes an issue with
compression flag combination that resulted in random segfaults.

Other changes: Cleanup and formatting.

4 months agoFix T88313: GPencil reproject operator projecting on the wrong surface
Germano Cavalcante [Tue, 18 May 2021 20:31:10 +0000 (17:31 -0300)]
Fix T88313: GPencil reproject operator projecting on the wrong surface

`ray_start` must start at the position of the gpencil point.

4 months agoAlembic: read/write generated coordinates of meshes
Sybren A. Stüvel [Tue, 18 May 2021 17:01:57 +0000 (19:01 +0200)]
Alembic: read/write generated coordinates of meshes

Read and write generated coordinates (also known as "original
coordinates", "reference coordinates", or "orcos") from and to Alembic.
A custom geometry property named "Pref" is used for (hopefully)
interoperability with Maya and Houdini. For now it's only guaranteed for

Export: writing generated coordinates is optional (on by default).

Import: generated coordinates are always read whenever the reading of
vertex data is enabled.

Manifest Task: T88081

4 months agoFix ID copying outside of Main affecting 'directly linked' status of other IDs.
Bastien Montagne [Tue, 18 May 2021 16:42:29 +0000 (18:42 +0200)]
Fix ID copying outside of Main affecting 'directly linked' status of other IDs.

Copying an ID outside of BMain should not assume that the datablocks it
uses are now directly linked. This would be wrong e.g. in case that new
no-main ID is copied from a linked data-block and is supposed to remain
a linked data.

4 months agoCleanup: typo in comment.
Bastien Montagne [Tue, 18 May 2021 16:37:30 +0000 (18:37 +0200)]
Cleanup: typo in comment.

4 months agoMerge branch 'blender-v2.93-release'
Richard Antalik [Tue, 18 May 2021 14:17:29 +0000 (16:17 +0200)]
Merge branch 'blender-v2.93-release'

4 months agoFix build warning
Richard Antalik [Tue, 18 May 2021 14:15:08 +0000 (16:15 +0200)]
Fix build warning

Value of the size argument in `strncat` is too large, might lead to a
buffer overflow.

Change the argument to be the free space in the destination buffer
minus the terminating null byte.

Introduced in 5368859a669d

Reviewed By: Sergey

Differential Revision:

4 months agoMerge branch 'blender-v2.93-release'
Antonio Vazquez [Tue, 18 May 2021 13:43:06 +0000 (15:43 +0200)]
Merge branch 'blender-v2.93-release'

4 months agoFix T88370: GPencil render crash when use viewlayer and masking
Antonio Vazquez [Tue, 18 May 2021 13:42:26 +0000 (15:42 +0200)]
Fix T88370: GPencil render crash when use viewlayer and masking

When filtering the render using view layer, could be possible the mask is NULL and just need to be ignored.

4 months agoFix T88365: returning a buffer with wrong size
Germano Cavalcante [Tue, 18 May 2021 13:01:29 +0000 (10:01 -0300)]
Fix T88365: returning a buffer with wrong size

The pixel components were not being considered.

4 months agoFix ocean modifier giving different result on Arm than x86
Brecht Van Lommel [Tue, 18 May 2021 12:02:41 +0000 (14:02 +0200)]
Fix ocean modifier giving different result on Arm than x86

And re-enable the test on macOS Arm.

Ref T78710

4 months agoFix T88345: Blender crash on GPUFrameBuffer creation
Germano Cavalcante [Tue, 18 May 2021 12:39:31 +0000 (09:39 -0300)]
Fix T88345: Blender crash on GPUFrameBuffer creation

Misuse of indexes.

`color_attachements` has only color ones while `config` has color and depth.

4 months agoWM: check missing space-data & constraints in poll functions
Campbell Barton [Tue, 18 May 2021 10:00:51 +0000 (20:00 +1000)]
WM: check missing space-data & constraints in poll functions

Without this, menu search prints many errors in some contexts.

4 months agoMerge branch 'blender-v2.93-release'
Sebastián Barschkis [Tue, 18 May 2021 10:52:29 +0000 (12:52 +0200)]
Merge branch 'blender-v2.93-release'

4 months agoTests: Disabled physics ocean test on macOS arm64
Sebastián Barschkis [Tue, 18 May 2021 10:48:35 +0000 (12:48 +0200)]
Tests: Disabled physics ocean test on macOS arm64

Test is failing and needs further investigation.

4 months agoTests: Remove threshold param from physics ocean mesh test
Sebastián Barschkis [Tue, 18 May 2021 10:44:53 +0000 (12:44 +0200)]
Tests: Remove threshold param from physics ocean mesh test

This was not the reason for the test failure on macOS arm64.

4 months agoMerge branch 'blender-v2.93-release'
Campbell Barton [Tue, 18 May 2021 09:59:20 +0000 (19:59 +1000)]
Merge branch 'blender-v2.93-release'

4 months agoFix error calling select-camera without a 3D view
Campbell Barton [Tue, 18 May 2021 09:58:11 +0000 (19:58 +1000)]
Fix error calling select-camera without a 3D view

4 months agoCycles: Avoid unnecessary data updates in viewport
Sergey Sharybin [Mon, 17 May 2021 16:23:44 +0000 (18:23 +0200)]
Cycles: Avoid unnecessary data updates in viewport

The BlenderSync will do quite a bit of work on every sync_data() call
even if there is nothing changed in the scene. There will be early
outputs done deeper in the call graph, but this is not really enough to
ensure best performance during viewport navigation.

This change makes it so sync_data() is only used when dependency graph
has any update tags: if something changed in the scene the dependency
graph will know it. If nothing changed there will be no IDs tagged for an
update in the dependency graph.

There are two weak parts in the current change:

- With the persistent data there is a special call to ignore the check
  of the dependency graph tags. This is more of a safety, because it is
  not immediately clear what the correct state of recalc flags is.

- Deletion of objects is detected indirectly, via tags of scene and

It might not be bad for the first version of the change.

The test file used: {F10117322}

Simply open the file, start viewport render, and navigate the viewport.
On my computer this avoids 0.2sec spend on data_sync() on every
up[date of viewport navigation.

We can do way more granular updates in the future: for example, avoid
heavy objects sync when it is only camera object which changed. This
will need an extended support from the dependency graph API. Doing
nothing if nothing is changed is something we would want to do anyway.

Differential Revision:

4 months agoMerge branch 'blender-v2.93-release'
Campbell Barton [Tue, 18 May 2021 07:48:14 +0000 (17:48 +1000)]
Merge branch 'blender-v2.93-release'

4 months agoFix error in grease pencil flip color operator
Campbell Barton [Tue, 18 May 2021 07:38:54 +0000 (17:38 +1000)]
Fix error in grease pencil flip color operator

- Used try/except instead of a poll function.
- The error case referenced a non-existent error handling module.

Prefer poll functions over exception handling where possible,
also having an operators logic in a try block isn't good practice
as it can hide more serious errors in the code.

Note that duplicate pencil settings access should be moved into a
utility function. This can be part of a separate cleanup.

4 months agoCleanup: use const casts in mathutils API
Campbell Barton [Tue, 18 May 2021 04:13:20 +0000 (14:13 +1000)]
Cleanup: use const casts in mathutils API

4 months agoPyAPI: allow any vector sequence for poly_3d_calc(..)
Campbell Barton [Tue, 18 May 2021 04:09:03 +0000 (14:09 +1000)]
PyAPI: allow any vector sequence for poly_3d_calc(..)

Previously only vectors were accepted for the second point argument:

4 months agoCleanup: format
Kévin Dietrich [Tue, 18 May 2021 04:09:28 +0000 (06:09 +0200)]
Cleanup: format

4 months agoMerge branch 'blender-v2.93-release'
Campbell Barton [Tue, 18 May 2021 03:39:39 +0000 (13:39 +1000)]
Merge branch 'blender-v2.93-release'

4 months agoFix T88026: Repeated switch to rendered viewport crashes
Campbell Barton [Tue, 18 May 2021 02:53:28 +0000 (12:53 +1000)]
Fix T88026: Repeated switch to rendered viewport crashes

Resolve ownership ambiguity with shared physics pointers.

Previously, LIB_ID_CREATE_NO_MAIN allowed pointer sharing with
the source ID so physics caches can be shared between original and
evaluated data: (Object.soft.shared & Object.rigidbody_object.shared).

This only worked properly for LIB_TAG_COPIED_ON_WRITE ID's,
as LIB_TAG_NO_MAIN can be used in situations where the original ID's
lifetime limited by it's original data.

This commit adds `LIB_ID_COPY_SET_COPIED_ON_WRITE` so ID's only share
memory with original data for ID's evaluated in the depsgraph.

For all other uses, a full copy of physics data is made.

Ref D11228#287094

4 months agoCleanup: clang-format
Campbell Barton [Tue, 18 May 2021 02:53:27 +0000 (12:53 +1000)]
Cleanup: clang-format

4 months agoAlembic procedural: fix wrong property used as base for attribute
Kévin Dietrich [Mon, 17 May 2021 22:59:29 +0000 (00:59 +0200)]
Alembic procedural: fix wrong property used as base for attribute

We use the schema so that we can access top level attributes as well.
This is already done for polygon meshes and curves, so this only
modifies the behavior for subdivision objects.

4 months agoAlembic procedural: fix crash accessing invalid ICompoundProperties
Kévin Dietrich [Mon, 17 May 2021 22:56:45 +0000 (00:56 +0200)]
Alembic procedural: fix crash accessing invalid ICompoundProperties

Although it is not a pointer, accessing an ICompoundProperty
dereferences a pointer under the hood, so check for validity.

4 months agoAdd comment regarding Fade Inactive Geometry property in overlays popover
Pablo Dobarro [Mon, 17 May 2021 22:51:11 +0000 (00:51 +0200)]
Add comment regarding Fade Inactive Geometry property in overlays popover

Reviewed By: campbellbarton

Differential Revision:

4 months agoMerge branch 'blender-v2.93-release'
Pablo Dobarro [Mon, 17 May 2021 22:32:48 +0000 (00:32 +0200)]
Merge branch 'blender-v2.93-release'

4 months agoFix T88230: Properly handle Face Set visibility in Expand Face Sets editing
Pablo Dobarro [Thu, 13 May 2021 00:40:10 +0000 (02:40 +0200)]
Fix T88230: Properly handle Face Set visibility in Expand Face Sets editing

Expand is not expected to update the visibility state of the PBVH, only
the Face Sets IDs. If visibility updates are made accidentally, PBVH
rendering breaks.

In order for this to work properly, the following fixes are needed:

- Expand should always check for active component before attempting to
 modify a Face Set ID

- Expand should always check the visibility state on original_face_sets, as
it is the array that contains the visiblilty state that corresponds with the
current state used for PBVH rendering. This implies that after any modification
done by Expand, the visibility state of ss->face_sets and
expand_cache->original_face_sets should match (like in any other tool that
does not modify visibility).

- Expand should never modify the Face Set ID of a poly that is hidden in

- When deleting an ID, hidden Face Sets should be skipped when picking IDs for
content filling. This avoids introducing hidden IDs back into the visible
geometry even after updating its visibility state.

Reviewed By: JulienKaspar, JacquesLucke

Maniphest Tasks: T88230

Differential Revision:

4 months agoTests: Increased threshold param for physics_ocean test
Sebastián Barschkis [Mon, 17 May 2021 21:21:16 +0000 (23:21 +0200)]
Tests: Increased threshold param for physics_ocean test

Adjusting threshold to see what the buildbot will make of this.

4 months agoTests: Added threshold to physics ocean mesh test
Sebastián Barschkis [Mon, 17 May 2021 19:13:35 +0000 (21:13 +0200)]
Tests: Added threshold to physics ocean mesh test

The physics_ocean test is currently failing on macOS arm.
This is one attempt to fix this issue.

4 months agoCollada import: use black for Base Color when missing <diffuse>
Gaia Clary [Mon, 17 May 2021 19:05:20 +0000 (21:05 +0200)]
Collada import: use black for Base Color when missing <diffuse>

Treat a missing <diffuse> the same as a black diffuse color.

The easiest way to see this bug is with a Collada shader like

              <color sid="emission">1 0 0 1</color>

The Collada spec says this should be just

color = <emission>

ie. red everywhere. The importer slots the red into the Principled Emission socket, but since it leaves the Base Color as the default off-white, this is added to red, and the material looks white-pink in the light and red only in the shadows.

Putting black in the Base Color makes it look red everywhere.

D10939 will also eliminate the much-less-noticeable specular term for this case.

Reviewed By: gaiaclary

Differential Revision:

4 months agoMerge branch 'blender-v2.93-release'
Brecht Van Lommel [Mon, 17 May 2021 18:18:39 +0000 (20:18 +0200)]
Merge branch 'blender-v2.93-release'

4 months agorefactor: minor changes to previous commit
Gaia Clary [Mon, 17 May 2021 18:04:56 +0000 (20:04 +0200)]
refactor: minor changes to previous commit
- rename boolean is_zero by more descriptive has_specularity
- add some clarifying comments (and TODO)

4 months agoCollada import: respect zero-specularity
Scurest [Mon, 17 May 2021 17:49:15 +0000 (19:49 +0200)]
Collada import: respect zero-specularity

Collada shaders with black <specular> should import with Specular=0.
(A missing <specular> is the same as black.)

The general specular conversion is hard, but this case is common and easy.
Fixes the specular for all <constant>/<lambert> shaders, and <blinn>/<phong>
shaders with black/omitted <specular>. Before this they all looked too "shiny".

Reviewed By: gaiaclary

Differential Revision:

4 months agoFix T86278: vertex color baking not working with modifiers
Brecht Van Lommel [Wed, 12 May 2021 21:14:58 +0000 (23:14 +0200)]
Fix T86278: vertex color baking not working with modifiers

As in the old Blender Internal baking code, this still relies on there being a
good mapping to the original vertices.

4 months agoFix T85892: disable progressive refine when using adaptive sampling
Brecht Van Lommel [Mon, 17 May 2021 17:24:51 +0000 (19:24 +0200)]
Fix T85892: disable progressive refine when using adaptive sampling

This is giving too bright pixel values, as the sample scaling and random number
sample are wrong. The proper fix for this is complicated. It will be solved in
Cycles X, for now we disable this combination.

4 months agoFix T88216: Cycles persistent data fails with animated object transform in instance
Brecht Van Lommel [Mon, 17 May 2021 13:43:42 +0000 (15:43 +0200)]
Fix T88216: Cycles persistent data fails with animated object transform in instance

4 months agoFix T88210: Cycles persistent data failing with image sequences
Brecht Van Lommel [Mon, 17 May 2021 13:36:50 +0000 (15:36 +0200)]
Fix T88210: Cycles persistent data failing with image sequences

4 months agoFix OpenCL group size performance issue on Intel GPUs
Brecht Van Lommel [Mon, 17 May 2021 11:32:50 +0000 (13:32 +0200)]
Fix OpenCL group size performance issue on Intel GPUs

Contributed by Intel. On some scenes like classroom with particular integrated
GPUs this speeds up rendering 1.97x. With other benchmarks and GPUs it's
between 0.99-1.14x.

4 months agoMathutils: add a Matrix.LocRotScale constructor for combining channels.
Alexander Gavrilov [Fri, 14 May 2021 16:46:19 +0000 (19:46 +0300)]
Mathutils: add a Matrix.LocRotScale constructor for combining channels.

Combining location, rotation and scale channels into a matrix is
a standard task, so while it is easily accomplished by constructing
and multiplying 3 matrices, having a standard utility allows for
more clear code.

The new constructor builds a 4x4 matrix from separate location,
rotation and scale values. Rotation can be represented as a 3x3
Matrix, Quaternion or Euler value, while the other two inputs
are vectors. Unneeded inputs can be replaced with None.

Differential Revision:

4 months agoFile List: micro optimization in the icon preview
Germano Cavalcante [Mon, 17 May 2021 12:09:12 +0000 (09:09 -0300)]
File List: micro optimization in the icon preview

No real functional changes.

When `i` is zero, `filelist_cache_previews_push` was called twice with
the same icon.

This caused the preview to be computed twice when only once is needed.

4 months agoCleanup: reduce indentation in filelist_cache_previews_push
Germano Cavalcante [Mon, 17 May 2021 11:54:53 +0000 (08:54 -0300)]
Cleanup: reduce indentation in filelist_cache_previews_push

4 months agoMerge branch 'blender-v2.93-release'
Antonio Vazquez [Mon, 17 May 2021 11:06:59 +0000 (13:06 +0200)]
Merge branch 'blender-v2.93-release'

4 months agoGPencil: Fix unreported error exporting to PDF/SVG with animated camera
Antonio Vazquez [Mon, 17 May 2021 11:04:30 +0000 (13:04 +0200)]
GPencil: Fix unreported error exporting to PDF/SVG  with animated camera

Before, the camera parameters were calculated only for first frame.

If the camera is animated, these values need to be recalculated in order to get the new camera view position and export the strokes as expected.

Also fixed the export of PDF when the view is not in camera view. PDF export, needs to be done in camera view.

4 months agoGeometry Nodes: update callbacks with 2 new socket types
Wannes Malfait [Mon, 17 May 2021 09:11:25 +0000 (11:11 +0200)]
Geometry Nodes: update callbacks with 2 new socket types

4 months agoMerge branch 'blender-v2.93-release'
Campbell Barton [Mon, 17 May 2021 08:04:22 +0000 (18:04 +1000)]
Merge branch 'blender-v2.93-release'

4 months agoFix PyAPI doc generation error in 43369ca80e62aa80b951823d1c78abef58852014
Campbell Barton [Mon, 17 May 2021 07:56:18 +0000 (17:56 +1000)]
Fix PyAPI doc generation error in 43369ca80e62aa80b951823d1c78abef58852014

Files without doc-strings were not included.

4 months agoUI: use non-linear sliders
Henrik Dick [Mon, 17 May 2021 07:33:00 +0000 (17:33 +1000)]
UI: use non-linear sliders

* Boolean Modifier > Fast > Overlap Threshold (Logarithmic).
* Remesh Modifier > Voxel > Voxel Size (Logarithmic).
* Sculpt > Dyntopo > Detail Size (Cubic).

Ref D9074

4 months agoUI: add non-linear slider support
Henrik Dick [Mon, 17 May 2021 07:28:12 +0000 (17:28 +1000)]
UI: add non-linear slider support

This patch introduces non linear sliders. That means, that the movement
of the mouse doesn't map linearly to the value of the slider.

The following changes have been made.

- Free logarithmic sliders with maximum range of (`0 <= x < inf`)
- Logarithmic sliders with correct value indication bar.
- Free cubic sliders with maximum range of (`-inf < x < inf`)
- Cubic sliders with correct value indication bar.

Cubic mapping has been added as well, because it's used for brush sizes
in other applications (Krita for e.g.).

To make a slider have a different scale type use following line in RNA:
 `RNA_def_property_ui_scale_type(prop, PROP_SCALE_LOGARITHMIC);`
 `RNA_def_property_ui_scale_type(prop, PROP_SCALE_CUBIC);`

Test the precision, step size and soft-min if you change the scale type
of a property as it will feel very different and may need tweaking.

Ref D9074

4 months agoCleanup: remove commented code, use function to access header region
Campbell Barton [Mon, 17 May 2021 05:55:00 +0000 (15:55 +1000)]
Cleanup: remove commented code, use function to access header region

4 months agoCleanup: missing declaration warning
Campbell Barton [Mon, 17 May 2021 05:22:19 +0000 (15:22 +1000)]
Cleanup: missing declaration warning