blender.git
4 months agoMerge branch 'blender-v2.93-release'
Falk David [Wed, 26 May 2021 14:34:03 +0000 (16:34 +0200)]
Merge branch 'blender-v2.93-release'

4 months agoFix: GPencil mask shows in view layer render
Falk David [Wed, 26 May 2021 14:07:03 +0000 (16:07 +0200)]
Fix: GPencil mask shows in view layer render

Currently when rendering the view layer of a grease pencil layer that has
a mask layer attached, the mask layer would show in the rendered image.
This is inconsistent with the default behaviour with no mask on the
grease pencil layer, because it would only render what's on that
particular layer and not anything from any other layer.

This patch makes the masks invisible in the render.

Note: This might seem like not the best solution, but because masks are
just regular grease pencil layers, it's tricky to pass this edge-case to the
drawing code. The way it is handled right now is the best I could come
up with, without making changes that could affect something else.

Reviewed By: antoniov

Maniphest Tasks: T88202

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

4 months agoMerge branch 'blender-v2.93-release'
Jacques Lucke [Wed, 26 May 2021 14:20:24 +0000 (16:20 +0200)]
Merge branch 'blender-v2.93-release'

4 months agoFix T88250: crash when instancing object in disabled collection
Jacques Lucke [Wed, 26 May 2021 14:06:01 +0000 (16:06 +0200)]
Fix T88250: crash when instancing object in disabled collection

This issue was that `BKE_object_eval_uber_data` was not called for
the text object, because its geometry was not dependent upon
and its `is_directly_visible` tag was `false`. The crash happens in
rendering code, because the evaluated data is missing.

This not only affects text objects, but all object types that have a
geometry component that geometry nodes does not support yet.

The solution is to just add the missing dependencies.

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

4 months agoGPencil: Bake GPencil object transforms into a new GPencil object
Antonio Vazquez [Wed, 26 May 2021 13:41:38 +0000 (15:41 +0200)]
GPencil: Bake GPencil object transforms into a new GPencil object

This operator is a common request of animators to convert the transformation (inluding modifiers) of one grease pencil object, into a new object, generating strokes.

Reviewed By: pepeland

Maniphest Tasks: T87424

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

4 months agoNodes: fix threading issues with node ui storage
Jacques Lucke [Wed, 26 May 2021 12:19:01 +0000 (14:19 +0200)]
Nodes: fix threading issues with node ui storage

Calling BKE_nodetree_attribute_hint_add from multiple threads still
was not safe before..
One issue was that context_map embedded its values directly. So
when context_map grows, all NodeUIStorage would move as well.
I could patch around that by using std::unique_ptr in a few places,
but that just becomes too complex for now.
Instead I simplified the locking a bit by adding just locking a mutex
in NodeTreeUIStorage all the time while an attribute hint is added.

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

4 months agoFix T88588: crash when muting node with multi input socket
Jacques Lucke [Wed, 26 May 2021 10:24:56 +0000 (12:24 +0200)]
Fix T88588: crash when muting node with multi input socket

The bug existed before the new evaluator already, but the new evaluator
is more sensitive to this kind of error.

4 months agoCycles: optimize attributes device updates
Kévin Dietrich [Tue, 18 May 2021 11:09:29 +0000 (13:09 +0200)]
Cycles: optimize attributes device updates

When an `AttributeSet` is tagged as modified, which happens after the addition or
removal of an `Attribute` from the set, during the following GeometryManager device
update, we update and repack the kernel data for all attribute types. However, if we
only add or remove a `float` attribute, `float2` or `float3` attributes should not
be repacked for efficiency.

This patch adds some mechanisms to detect which attribute types are modified from
the AttributeSet.

Firstly, this adds an `AttrKernelDataType` to map the data type of the Attribute to
the one used in the kernel as there is no one to one match between the two since e.g.
`Transform` or `float4` data are stored as `float3s` in the kernel.

Then, this replaces the `AttributeSet.modified` boolean with a set of flags to detect
which types have been modified. There is no specific flag type (e.g.
`enum ModifiedType`), rather the flags used derive simply from the
`AttrKernelDataType` enumeration, to keep things synchronized.

The logic to remove an `Attribute` from the `AttributeSet` and tag the latter as modified
is centralized in a new `AttributeSet.remove` method taking an iterator as input.

Lastly, as some attributes like standard normals are not stored in the various
kernel attribute arrays (`DeviceScene::attribute_*`), the modified flags are only
set if the associated standard corresponds to an attribute which will be stored
in the kernel's attribute arrays. This makes it so adding or removing such attributes
does not trigger an unnecessary update of other type-related attributes.

Reviewed By: brecht

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

4 months agoFix particlesystem not duplicating their pointcache in NO_MAIN case.
Bastien Montagne [Tue, 25 May 2021 17:10:34 +0000 (19:10 +0200)]
Fix particlesystem not duplicating their pointcache in NO_MAIN case.

Sharing data between duplicated IDs should be restricted to depsgraph
(CoW) cases, not all NO_MAIN ones...

While this was probably not an issue currently, we aim at using more and
more out-of-main IDs for temp data processing.

NOTE: Somewhat related to T88555, and similar issue as the one fixed in
rBdfb963c70df5.

4 months agoFix T88552: Cycles changing Render Passes in viewport does not work
Sergey Sharybin [Wed, 26 May 2021 09:16:47 +0000 (11:16 +0200)]
Fix T88552: Cycles changing Render Passes in viewport does not work

4 months agoCleanup: Simplify Cycles viewport parameters
Sergey Sharybin [Wed, 26 May 2021 09:07:05 +0000 (11:07 +0200)]
Cleanup: Simplify Cycles viewport parameters

Use early output and access shading RNA object only once.

4 months agoCompositor: Use BLI_color in convert alpha node.
Jeroen Bakker [Wed, 26 May 2021 07:28:01 +0000 (09:28 +0200)]
Compositor: Use BLI_color in convert alpha node.

Recently the CPP colors module landed in master. This patch will use the
new module in the convert alpha node.

4 months agoCleanup: Remove unused argument in Cycles sync
Sergey Sharybin [Wed, 26 May 2021 08:45:27 +0000 (10:45 +0200)]
Cleanup: Remove unused argument in Cycles sync

Makes it easier to see where exactly the viewport is used.

4 months agoFix T88534: Unable to add a Geometry Node Tree on Volume object
Philipp Oeser [Tue, 25 May 2021 10:02:57 +0000 (12:02 +0200)]
Fix T88534: Unable to add a Geometry Node Tree on Volume object

Volumes are supported, poll corrected.

Maniphest Tasks: T88534

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

4 months agoFix T88531: Mantaflow problem with geometry nodes
Philipp Oeser [Tue, 25 May 2021 14:34:10 +0000 (16:34 +0200)]
Fix T88531: Mantaflow problem with geometry nodes

Objects modified by geometry nodes modifiers were not caught as being
"dynamic".

Now add this modifier type to the list of modifiers making them "dynamic"
in the eyes of mantaflow.

(noticed by @sebbas in chat)

Maniphest Tasks: T88531

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

4 months agoFix T88566: Mantaflow inflow with shapekeys is not working anymore
Philipp Oeser [Tue, 25 May 2021 14:27:34 +0000 (16:27 +0200)]
Fix T88566: Mantaflow inflow with shapekeys is not working anymore
(regression)

Code was actually checking for shapekeys, but these were not detected
properly (some effects like shape keys are added as virtual modifiers
before the user created modifiers)

Now go over virtual modifiers as well.

Maniphest Tasks: T88566

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

4 months agoMerge branch 'blender-v2.93-release'
Philipp Oeser [Wed, 26 May 2021 07:55:47 +0000 (09:55 +0200)]
Merge branch 'blender-v2.93-release'

4 months agoFix T88251: "Operator Cheat Sheet" Crash
Philipp Oeser [Tue, 25 May 2021 15:46:17 +0000 (17:46 +0200)]
Fix T88251: "Operator Cheat Sheet" Crash

Caused by {rB919558854d62}.

Same fix as in {rBdc8a43c8755a} -- let RNA enum item callbacks check
for NULL context.

The NULL context is used to extract items for document generation.

Maniphest Tasks: T88251

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

4 months agoCleanup: Fix short comparison with bool warning
Hans Goudey [Tue, 25 May 2021 18:37:58 +0000 (14:37 -0400)]
Cleanup: Fix short comparison with bool warning

For some reason the hide status is stored in a short and a char
(we cannot have bools in DNA).

4 months agoBump FFmpeg version from 4.2.3 to 4.4
Sybren A. Stüvel [Tue, 25 May 2021 16:58:28 +0000 (18:58 +0200)]
Bump FFmpeg version from 4.2.3 to 4.4

Bump FFmpeg version to 4.4 to fix a problem where it would write the
wrong frame rate. Their old API was deprecated and Blender moved to the
new one in rB8d6264ea12bfac0912c7249f00af2ac8e3409ed1. The new one
produced files with the wrong frame rate, which was fixed in FFmpeg 4.4.

Manifest Task: T88568

Reviewed By: LazyDodo, zeddb

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

4 months agodeps: Fix broken boost link
Ray Molenkamp [Tue, 25 May 2021 16:27:48 +0000 (10:27 -0600)]
deps: Fix broken boost link

4 months agoGPencil: Add a use_light option when creating object.
YimingWu [Tue, 25 May 2021 15:45:47 +0000 (23:45 +0800)]
GPencil: Add a use_light option when creating object.

This option is default off when creating line art objects
because line art seldom use lighting and the normal data
would be all over the place anyway.

Reviewed By: Antonio Vazquez (antoniov)

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

4 months agoCleanup: Use ListBase in various places in line art.
YimingWu [Tue, 25 May 2021 15:32:04 +0000 (23:32 +0800)]
Cleanup: Use ListBase in various places in line art.

This clarifies the data structures for storing edges
for different calculation stages.

Reviewed By: Sebastian Parborg (zeddb)

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

4 months agoBlenlib: Explicit Colors.
Jeroen Bakker [Tue, 25 May 2021 15:16:35 +0000 (17:16 +0200)]
Blenlib: Explicit Colors.

Colors are often thought of as being 4 values that make up that can make any color.
But that is of course too limited. In C we didn’t spend time to annotate what we meant
when using colors.

Recently `BLI_color.hh` was made to facilitate color structures in CPP. CPP has possibilities to
enforce annotating structures during compilation and can adds conversions between them using
function overloading and explicit constructors.

The storage structs can hold 4 channels (r, g, b and a).

Usage:

Convert a theme byte color to a linearrgb premultiplied.
```
ColorTheme4b theme_color;
ColorSceneLinear4f<eAlpha::Premultiplied> linearrgb_color =
    BLI_color_convert_to_scene_linear(theme_color).premultiply_alpha();
```

The API is structured to make most use of inlining. Most notable are space
conversions done via `BLI_color_convert_to*` functions.

- Conversions between spaces (theme <=> scene linear) should always be done by
  invoking the `BLI_color_convert_to*` methods.
- Encoding colors (compressing to store colors inside a less precision storage)
  should be done by invoking the `encode` and `decode` methods.
- Changing alpha association should be done by invoking `premultiply_alpha` or
  `unpremultiply_alpha` methods.

# Encoding.

Color encoding is used to store colors with less precision as in using `uint8_t` in
stead of `float`. This encoding is supported for `eSpace::SceneLinear`.
To make this clear to the developer the `eSpace::SceneLinearByteEncoded`
space is added.

# Precision

Colors can be stored using `uint8_t` or `float` colors. The conversion
between the two precisions are available as methods. (`to_4b` and
`to_4f`).

# Alpha conversion

Alpha conversion is only supported in SceneLinear space.

Extending:
- This file can be extended with `ColorHex/Hsl/Hsv` for different representations
  of rgb based colors. `ColorHsl4f<eSpace::SceneLinear, eAlpha::Premultiplied>`
- Add non RGB spaces/storages ColorXyz.

Reviewed By: JacquesLucke, brecht

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

4 months agoRevert "Blenlib: Explicit Colors."
Jeroen Bakker [Tue, 25 May 2021 15:03:54 +0000 (17:03 +0200)]
Revert "Blenlib: Explicit Colors."

This reverts commit fd94e033446c72fb92048a9864c1d539fccde59a.
does not compile against latest master.

4 months agoBlenlib: Explicit Colors.
Jeroen Bakker [Tue, 25 May 2021 15:00:14 +0000 (17:00 +0200)]
Blenlib: Explicit Colors.

Colors are often thought of as being 4 values that make up that can make any color.
But that is of course too limited. In C we didn’t spend time to annotate what we meant
when using colors.

Recently `BLI_color.hh` was made to facilitate color structures in CPP. CPP has possibilities to
enforce annotating structures during compilation and can adds conversions between them using
function overloading and explicit constructors.

The storage structs can hold 4 channels (r, g, b and a).

Usage:

Convert a theme byte color to a linearrgb premultiplied.
```
ColorTheme4b theme_color;
ColorSceneLinear4f<eAlpha::Premultiplied> linearrgb_color =
    BLI_color_convert_to_scene_linear(theme_color).premultiply_alpha();
```

The API is structured to make most use of inlining. Most notable are space
conversions done via `BLI_color_convert_to*` functions.

- Conversions between spaces (theme <=> scene linear) should always be done by
  invoking the `BLI_color_convert_to*` methods.
- Encoding colors (compressing to store colors inside a less precision storage)
  should be done by invoking the `encode` and `decode` methods.
- Changing alpha association should be done by invoking `premultiply_alpha` or
  `unpremultiply_alpha` methods.

# Encoding.

Color encoding is used to store colors with less precision as in using `uint8_t` in
stead of `float`. This encoding is supported for `eSpace::SceneLinear`.
To make this clear to the developer the `eSpace::SceneLinearByteEncoded`
space is added.

# Precision

Colors can be stored using `uint8_t` or `float` colors. The conversion
between the two precisions are available as methods. (`to_4b` and
`to_4f`).

# Alpha conversion

Alpha conversion is only supported in SceneLinear space.

Extending:
- This file can be extended with `ColorHex/Hsl/Hsv` for different representations
  of rgb based colors. `ColorHsl4f<eSpace::SceneLinear, eAlpha::Premultiplied>`
- Add non RGB spaces/storages ColorXyz.

Reviewed By: JacquesLucke, brecht

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

4 months agoFix T88096: Baking with OptiX and displacement fails
Patrick Mours [Tue, 25 May 2021 14:56:16 +0000 (16:56 +0200)]
Fix T88096: Baking with OptiX and displacement fails

Using displacement runs the shader eval kernel, but since OptiX modules are not loaded when
baking is active, those were not available and therefore failed to launch. This fixes that by falling
back to the CUDA kernels.

4 months agoGeometry Nodes: Add Shader Curve Nodes
Charlie Jolly [Mon, 24 May 2021 11:14:06 +0000 (12:14 +0100)]
Geometry Nodes: Add Shader Curve Nodes

Convert curve vec and curve rgb shader nodes to geometry nodes, based on node_shader_valToRgb.cc implementation.

4 months agoCleanup: Line art naming changes.
YimingWu [Tue, 25 May 2021 14:11:06 +0000 (22:11 +0800)]
Cleanup: Line art naming changes.

Make variable naming consistent with struct names.

Reviewed By: Sebastian Parborg (zeddb)

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

4 months agoCleanup: Convert to static type directly from CPPType
Hans Goudey [Tue, 25 May 2021 13:52:08 +0000 (09:52 -0400)]
Cleanup: Convert to static type directly from CPPType

4 months agoFix T86956: VSE shading mode ignores Grease Pencil Vertex colors.
Jeroen Bakker [Tue, 25 May 2021 13:10:46 +0000 (15:10 +0200)]
Fix T86956: VSE shading mode ignores Grease Pencil Vertex colors.

Issue is that due to the strange definition of render in grease pencil
(meaning should be rendered similar to rendering). This included normal
viewport rendering in OB_RENDER and OpenGL render in OB_RENDER.

For other rendering modes the overlay vertex opacity would be used. This
patch sets this value to 1 when rendering via a scene strip override.

NOTE: that this isn't a good solution as I expect that users want to use
the opacity of the Grease pencil object. Perhaps the GPencil team has a
better solution for it.

4 months agoUnreported fix: vertex colors overlay not set for new 3d views.
Jeroen Bakker [Tue, 25 May 2021 13:09:38 +0000 (15:09 +0200)]
Unreported fix: vertex colors overlay not set for new 3d views.

Found during researching {T86956}.

4 months agoMerge branch 'blender-v2.93-release'
Richard Antalik [Tue, 25 May 2021 13:09:54 +0000 (15:09 +0200)]
Merge branch 'blender-v2.93-release'

4 months agoFix T88551: Crash accessing uninitialized tool settings
Richard Antalik [Tue, 25 May 2021 13:02:31 +0000 (15:02 +0200)]
Fix T88551: Crash accessing uninitialized tool settings

Tool settings for sequencer were not initialized, which caused crash
when adding strips.

There was fix for same issue in versioning rB0f81dafe6cec, but
subversion was not bumped, so files with uninitialized tool settings
may still exist.

Add `SEQ_tool_settings_get()` accessor function that will initialize
tool settings if they are missing. Change operator code to use
`SEQ_tool_settings_fit_method_get()` function instead of accessing
tool settings directly

Reviewed By: campbellbarton

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

4 months agoCleanup: use nullptr
Jacques Lucke [Tue, 25 May 2021 11:37:50 +0000 (13:37 +0200)]
Cleanup: use nullptr

4 months agoCleanup: remove unused function
Jacques Lucke [Tue, 25 May 2021 11:12:54 +0000 (13:12 +0200)]
Cleanup: remove unused function

4 months agoCleanup: remove unnecessary lambda capture
Jacques Lucke [Tue, 25 May 2021 11:10:30 +0000 (13:10 +0200)]
Cleanup: remove unnecessary lambda capture

4 months agoFix T88549: ID sorting tests.
Bastien Montagne [Tue, 25 May 2021 10:14:43 +0000 (12:14 +0200)]
Fix T88549: ID sorting tests.

Forgot to initialize the ID types array...

Weird though that this only failed on Windows!

Thanks a lot to @deadpin for helping investigating this.

4 months agoFix T88464: Incorrect baking with camera markers.
YimingWu [Sat, 22 May 2021 12:33:27 +0000 (20:33 +0800)]
Fix T88464: Incorrect baking with camera markers.

This will update active camera based on the maker for each frame.

Reviewed By: Sebastian Parborg (zeddb), Antonio Vazquez (antoniov)

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

4 months agoFix/Refactor RNA ID preview getter creating preview data.
Bastien Montagne [Tue, 25 May 2021 08:38:23 +0000 (10:38 +0200)]
Fix/Refactor RNA ID preview getter creating preview data.

Same as with forcefields, accessors should never generate data.

4 months agoCleanup: spelling
Campbell Barton [Tue, 25 May 2021 08:25:55 +0000 (18:25 +1000)]
Cleanup: spelling

4 months agoCleanup: clang-format
Campbell Barton [Tue, 25 May 2021 08:25:44 +0000 (18:25 +1000)]
Cleanup: clang-format

4 months agoFix T88500: Constrain window top position (Win32)
Pratik Borhade [Mon, 24 May 2021 18:42:30 +0000 (11:42 -0700)]
Fix T88500: Constrain window top position (Win32)

Do not allow a window to be created that has a top position that
can obscure all or part of title bar. Right and Left edges can
still be specified slightly outside of monitor bounds, but top
edge must be clamped to monitor top.

see D11371 for more details.

https://developer.blender.org/D11371

Reviewed by Ray Molenkamp

4 months agoMerge branch 'blender-v2.93-release'
Germano Cavalcante [Mon, 24 May 2021 15:30:24 +0000 (12:30 -0300)]
Merge branch 'blender-v2.93-release'

4 months agoFix T88478: Fallback to dolly not working when moving the camera in camera view
Germano Cavalcante [Mon, 24 May 2021 15:05:59 +0000 (12:05 -0300)]
Fix T88478: Fallback to dolly not working when moving the camera in camera view

This fallback is an old hack.

It is difficult to have an orientation convention when several random
factors determine which one should be used.

In this case, to "fix" the problem, a new behavior had to be implemented.
Now the redo when moving the camera in `Camera View` has the default
orientation as `View`.

4 months agoFix (unreported): Automatic transform contraint not being disabled
Germano Cavalcante [Mon, 24 May 2021 14:30:44 +0000 (11:30 -0300)]
Fix (unreported): Automatic transform contraint not being disabled

It does not make sense to maintain automatic constraint selection when
you manually set the constraint.

4 months agoCleanup: Rename transform enum items
Germano Cavalcante [Mon, 24 May 2021 14:35:33 +0000 (11:35 -0300)]
Cleanup: Rename transform enum items

Make them more descriptive.

4 months agoCleanup: Refactor PlaneTrack and PlaneDistort operations
Manuel Castilla [Mon, 24 May 2021 12:31:17 +0000 (14:31 +0200)]
Cleanup: Refactor PlaneTrack and PlaneDistort operations

Deduplicates code by introducing a PlaneDirtortBaseOperation for common logic.

Reviewed By: #compositing, jbakker

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

4 months agoNodes: move shader curves node to C++
Charlie Jolly [Mon, 24 May 2021 11:02:45 +0000 (12:02 +0100)]
Nodes: move shader curves node to C++

Prepare node for conversion to Geometry Nodes.

There should be no functional changes.

Reviewed By: JacquesLucke, LazyDodo

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

4 months agoFix T88524: GPencil PDF does not take into account the marker camera
Antonio Vazquez [Mon, 24 May 2021 10:36:13 +0000 (12:36 +0200)]
Fix T88524: GPencil PDF does not take into account the marker camera

The camera was not checked before doing the export.

4 months agoFix T88466: Sound strips prevent strip rendering
Richard Antalik [Mon, 24 May 2021 03:37:46 +0000 (05:37 +0200)]
Fix T88466: Sound strips prevent strip rendering

When sound strip is above another strip such as movie strip, it prevents
from rendering movie strip.

This bug was introduced in 0b7744f4da66. Function `must_render_strip()`
checks if there is any strip with `SEQ_BLEND_REPLACE` blending and
considers this strip as lowest strip in stack. Sound strips do have this
blend mode set, which caused the bug.

Remove all sound strips and muted strips from stack collection before
checking with `must_render_strip()` function

4 months agoUI: Use title case for labels
Aaron Carlisle [Sun, 23 May 2021 19:31:54 +0000 (15:31 -0400)]
UI: Use title case for labels

4 months agoDocs: Add readme for mikktspace
Aaron Carlisle [Sun, 23 May 2021 17:56:49 +0000 (13:56 -0400)]
Docs: Add readme for mikktspace

4 months agoCleanup: remove redundant property for transfer_mode key-map item
Campbell Barton [Sat, 22 May 2021 04:52:13 +0000 (14:52 +1000)]
Cleanup: remove redundant property for transfer_mode key-map item

As the property isn't saved and defaults to disabled,
there is no need to set it.

4 months agoCleanup: tweaks for Object Non-modal keymap
Campbell Barton [Sat, 22 May 2021 03:14:28 +0000 (13:14 +1000)]
Cleanup: tweaks for Object Non-modal keymap

Simplify adding non-legacy keymap items.

4 months agoCleanup: Move curve draw cache implementation to C++
Hans Goudey [Fri, 21 May 2021 21:28:19 +0000 (17:28 -0400)]
Cleanup: Move curve draw cache implementation to C++

I'd like to use this file to draw curves from geometry nodes, which
would otherwise require implementing a C API. The changes in this
commit are minimal, mostly just casts and changing to nullptr.

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

4 months agoMerge branch 'blender-v2.93-release'
Hans Goudey [Fri, 21 May 2021 18:44:17 +0000 (14:44 -0400)]
Merge branch 'blender-v2.93-release'

4 months agoFix T87357: Missing update after removing socket
Jacques Lucke [Fri, 21 May 2021 18:43:26 +0000 (14:43 -0400)]
Fix T87357: Missing update after removing socket

The CoW copy of the node group was not updated correctly after it
changed. Arguably, tagging the node tree could also be part of
`ntreeUpdateTree` (which needs to be called after changes to the
node tree anyway). However, there are many instances where the
depsgraph is tagged explicitly after `ntreeUpdateTree` is called,
so it should be fine here as well. This is similar to what is done
in `snode_dag_update`.

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

4 months agoFix T88375: Bone Size Small After V3D.View_All
Wayde Moss [Fri, 21 May 2021 17:22:28 +0000 (13:22 -0400)]
Fix T88375: Bone Size Small After V3D.View_All

The wrong matrix function was used and overwrote the custom bone shape
scale instead of reading from it.

Reviewed By: sybren

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

4 months agoFix T88384: Improved Win32 Window Sizing and Positioning
Harley Acheson [Fri, 21 May 2021 16:34:58 +0000 (09:34 -0700)]
Fix T88384: Improved Win32 Window Sizing and Positioning

When creating Win32 windows, the sizes and placements can be out by a
small amount, mostly noticeable near monitor edges. This is because
Windows 10 includes a thin invisible border (typically 7 pixels) when
determining position. Therefore the correct values can sometimes be
just outside the monitor bounds, but we clamp them at those bounds.

This patch fixes this by first clamping the requested values to monitor
bounds, adjusting for window chrome with AdjustWindowRectEx(), and then
using those adjusted values in CreateWindowExW().

see D11314 for more details.

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

Reviewed by Ray Molenkamp

4 months agoFix some RNA physics accessors creating data.
Bastien Montagne [Fri, 21 May 2021 12:57:29 +0000 (14:57 +0200)]
Fix some RNA physics accessors creating data.

Accessing data through RNA should never implicitely create it. Objects'
and particles' forcefields and collision settings were doing this.

Note that UI code also had to be tweaked to properly handle `None`
(NULL) cases.

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

4 months agoFix particle ID init not creating particle deflect data.
Bastien Montagne [Fri, 21 May 2021 12:55:21 +0000 (14:55 +0200)]
Fix particle ID init not creating particle deflect data.

This data (the force fields) are expected to always be there, but they
are currently created on the fly by RNA accessors (typically from UI
draw code), which is extremely wrong way to do it.

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

4 months agoGPencil: Speed up Occlude Eraser
Antonio Vazquez [Fri, 21 May 2021 14:54:58 +0000 (16:54 +0200)]
GPencil: Speed up Occlude Eraser

This is an initial change to speed up the calculation of the Occlude eraser. In the future, we can add more optimizations, but at least this increase speed.

Intead to check always the 3 points, the check is skipped if it's not required.

Base in a solution by Philipp Oeser.

This is related to T88412

4 months agoCleanup: use nullptr
Jacques Lucke [Fri, 21 May 2021 13:09:22 +0000 (15:09 +0200)]
Cleanup: use nullptr

4 months agoCleanup: spelling
Leon Zandman [Fri, 21 May 2021 12:19:46 +0000 (22:19 +1000)]
Cleanup: spelling

Includes fixes to misspelled function names.

Ref D11280

4 months agoFix T85752: Collection Instance Crash when instancing collections with disabled subco...
Bastien Montagne [Fri, 21 May 2021 08:14:58 +0000 (10:14 +0200)]
Fix T85752: Collection Instance Crash when instancing collections with disabled subcollections

Root of the issue was actually hidden deep in depsgraph itself: it would
not properly update all of its COW IDs using a datablock when depsgraph
decides to evaluate or un-evaluate it.

This would lead to evaluated IDs pointing to either:
 - orig IDs when there was an evaluated version of those (annoying bug,
   but not a crashing one).
 - old address of previously evaluated IDs that no longer exists in the
   depsgraph (causing the crash from the report e.g.).

This commit adds an extra step at the end of nodes building, that goes
over all of already existing IDs in the depsgraph to check whether they
do one of the two things above, and tag them for COW update if so.

NOTE: This only affects depsgraph (re-)building, not its evaluation.
This remains consistent with the fact that operations that may change
the depsgraph content (like Collection exclusion etc.) need to trigger a
rebuild.

NOTE: Performances: Worst case scenarii, like (un-)excluding a whole
character collection in a production file, lead to 5% to 10% extra
processing time in depsgraph building. Most of it comming from extra COW
processing (in depsgraph's update in `build_step_finalize`), the detection
loop itself only accounts for 1% to 2% of the whole building time.

Maniphest Tasks: T85752

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

4 months agoCleanup: Use named unused arguments in Cycles Device
Sergey Sharybin [Fri, 21 May 2021 09:19:33 +0000 (11:19 +0200)]
Cleanup: Use named unused arguments in Cycles Device

4 months agoGeometry Nodes: new Material Replace node
Jacques Lucke [Fri, 21 May 2021 07:43:55 +0000 (09:43 +0200)]
Geometry Nodes: new Material Replace node

This node can change all faces that use a specific material to use a
different material. Using this node is significantly more efficient
than creating a selection from all faces with a specific material
index and then using the Material Assign node.

Ref T88055.

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

4 months agoDepsgraph: remove mesh edit-mode pointer duplication
Campbell Barton [Fri, 21 May 2021 06:02:05 +0000 (16:02 +1000)]
Depsgraph: remove mesh edit-mode pointer duplication

Share the pointer with the original mesh instead, this matches behavior
of all other objects edit-mode data.

Duplicating the edit-mesh pointer makes updates to edit-mesh require
a COPY_ON_WRITE update, which is currently an expensive operation
(copying the entire mesh).

Notes:

- This change is from 802027f3f8f9a83a77134a2b104a25ff3a4ac013
  so the edit-meshes object pointer `BMEditMesh.ob` referenced the COW
  version of the object. This pointer has since been removed, so the
  copy is no longer needed.

- Having a separate edit-mesh pointer could be used so linked duplicates
  could have their own generated meshes. For this to be supported,
  many other changes would be needed: see D10920.

4 months agoFix T88227: Eevee not working on AMD 535 cards.
Jeroen Bakker [Fri, 21 May 2021 05:44:25 +0000 (07:44 +0200)]
Fix T88227: Eevee not working on AMD 535 cards.

Enabled HQ normals workaround for this specific configuration.

4 months agoTransform: use ID_RECALC_GEOMETRY flag when updating object data
Campbell Barton [Fri, 21 May 2021 05:45:25 +0000 (15:45 +1000)]
Transform: use ID_RECALC_GEOMETRY flag when updating object data

While this doesn't provide any noticeable benefits at the moment,
it allows for geometry updates skipping copy-on-write in edit-mode
in the future.

4 months agoCleanup: quiet -Warray-parameter warnings from GCC11
Campbell Barton [Fri, 21 May 2021 05:45:25 +0000 (15:45 +1000)]
Cleanup: quiet -Warray-parameter warnings from GCC11

Some warnings remain that require larger changes.

4 months agoCleanup: conversion warning
Campbell Barton [Fri, 21 May 2021 05:45:23 +0000 (15:45 +1000)]
Cleanup: conversion warning

4 months agoFix T88227: Eevee not working on AMD 535 cards.
Jeroen Bakker [Fri, 21 May 2021 05:44:25 +0000 (07:44 +0200)]
Fix T88227: Eevee not working on AMD 535 cards.

Enabled HQ normals workaround for this specific configuration.

4 months agoEevee Wavelength Node Support
Iyad Ahmed [Fri, 21 May 2021 04:55:47 +0000 (10:25 +0530)]
Eevee Wavelength Node Support

This patch adds wavelength node support to Eevee, similar to how
Eevee Blackbody node works, thus it is a little off from Cycles.

Reviewed By: #eevee_viewport, fclem, brecht
Differential Revision: https://developer.blender.org/D11326

4 months agoTransform: remove ID_RECALC_SELECT for edit-mode armatures
Campbell Barton [Thu, 20 May 2021 06:34:28 +0000 (16:34 +1000)]
Transform: remove ID_RECALC_SELECT for edit-mode armatures

This was added in 9516921c05bd9fee5c94942eb8e38f47ba7e4351
so overlays would redraw, as far as I can see it's no longer needed.

Reviewed By: fclem

Ref D11322

4 months agoCleanup: spelling
Richard Antalik [Thu, 20 May 2021 23:05:46 +0000 (01:05 +0200)]
Cleanup: spelling

4 months agoMerge branch 'blender-v2.93-release'
Sebastian Parborg [Thu, 20 May 2021 18:48:44 +0000 (20:48 +0200)]
Merge branch 'blender-v2.93-release'

4 months agoFix T87854: Add clamp option to Path Animation
Sebastian Parborg [Thu, 20 May 2021 18:41:10 +0000 (20:41 +0200)]
Fix T87854: Add clamp option to Path Animation

Previously, the "follow path constraint" and "follow parented curve"
were clamped.  This restriction was lifted in rBcf2baa585cc8

Add back an option to get the old behavior in the "Path animation" settings.

Reviewed By: Sybren

Differential Revision: http://developer.blender.org/D11263

4 months agoFix petty comment.
Ray Molenkamp [Thu, 20 May 2021 18:38:01 +0000 (12:38 -0600)]
Fix petty comment.

I'm embarrassed this was in our codebase for 18 years

4 months agoGPencil: Fix missing annotations in VSE strip
Antonio Vazquez [Thu, 20 May 2021 17:36:53 +0000 (19:36 +0200)]
GPencil: Fix missing annotations in VSE strip

Since version 2.80, the annotations of the Scene strip were not displayed in VSE. Also, the UI panel was`Grease Pencil` and must be `Annotation`

The problem was the offscreen render hasn't evil_CTX and the section of the annotation was never called.

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

4 months agoMerge branch 'blender-v2.93-release' into master
Ankit Meel [Thu, 20 May 2021 16:28:34 +0000 (21:58 +0530)]
Merge branch 'blender-v2.93-release' into master

4 months agomacOS build: set minimum deployment target correctly
Ankit Meel [Thu, 20 May 2021 16:25:58 +0000 (21:55 +0530)]
macOS build: set minimum deployment target correctly

Make `CMAKE_OSX_DEPLOYMENT_TARGET` independent of buildbot settings and
always set to `OSX_MIN_DEPLOYMENT_TARGET`. That fixes the launch error
on OS older than buildbot's.
Remove unused `MACOSX_DEPLOYMENT_TARGET`.

Fix T88419
Diff D11323

4 months agoMerge branch 'blender-v2.93-release'
Hans Goudey [Thu, 20 May 2021 16:20:05 +0000 (12:20 -0400)]
Merge branch 'blender-v2.93-release'

4 months agoFix T87316: No undo push for clicking on attribute name
Hans Goudey [Thu, 20 May 2021 16:17:54 +0000 (12:17 -0400)]
Fix T87316: No undo push for clicking on attribute name

Since there is a special callback for assigning the name from the
search box, and the callback doesn't call an operator or something
else that would do an undo push, I think the solution is to do it
manually here.

Another option would be adding the button flag "UI_BUT_UNDO", which
isn't set by default for search buttons, but that gives us ugly names for
the undo steps, so an explicit push is better in this case.

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

4 months agoGPencil: Adding length modifier.
YimingWu [Thu, 20 May 2021 15:35:53 +0000 (23:35 +0800)]
GPencil: Adding length modifier.

Reviewed By: Antonio Vazquez (antoniov)

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

4 months agoFix T87947: Trasnform: Keyboard input uses view orientation
Germano Cavalcante [Wed, 12 May 2021 02:40:06 +0000 (23:40 -0300)]
Fix T87947: Trasnform: Keyboard input uses view orientation

When activated in modal, `translate`, `resize`, `rotate`, `shear` and
`edge_rotate_normal` use a different orientation than the set in scene.

This orientation needed to match since some of these modes can be switched
during operation.

The default orientation for these modes was `V3D_ORIENT_VIEW`.

And this changed when finishing the `translate` and `resize` to
`V3D_ORIENT_GLOBAL`.

But this could cause inconsistencies when inputting values from the
keyboard.

The solution now is to change the orientation when you change the mode.

---
Note: Although the user can expect the value entered to reflect the
orientation set in the scene, it would require a lot of changes and would
not be really useful.

4 months agoCleanup: Use enum to indicate the current orientation
Germano Cavalcante [Wed, 12 May 2021 01:40:56 +0000 (22:40 -0300)]
Cleanup: Use enum to indicate the current orientation

Improves readability.

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 agoFix T88365: GPUTexture.read returning a buffer with wrong size
Germano Cavalcante [Tue, 18 May 2021 13:01:29 +0000 (10:01 -0300)]
Fix T88365: GPUTexture.read returning a buffer with wrong size

The pixel components were not being considered.

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 agoCleanup: rename incorrectly named experimental feature flag
Jacques Lucke [Thu, 20 May 2021 12:39:30 +0000 (14:39 +0200)]
Cleanup: rename incorrectly named experimental feature flag

The `WITH_GEOMETRY_NODES` flag does not make sense anymore,
it is just protecting the `Simulation` data block that is not used
currently.

4 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'

4 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: https://developer.blender.org/D11282

4 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: https://developer.blender.org/D11305

4 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: https://developer.blender.org/D11155

4 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: https://developer.blender.org/D11303

4 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.

4 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: https://developer.blender.org/D11191

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