Commit Graph

128187 Commits

Author SHA1 Message Date
b48031df8e Anim: armature edit mode, make Shift+M consistent with pose mode
Replace the 'armature layers' operator (which would toggle visibility of
armature layers) with the 'bone collections' menu (which allows assigning
to and unassigning from bone collections). The functionality of these
operators is quite different, but it unifies the behaviour between
armature pose and edit modes.

Selecting which bone collections are visible in the 3D Viewport may be
reintroduced after nestable bone collections are implemented. Otherwise
the list of bone collections will likely become unwieldy.
2023-09-19 17:43:26 +02:00
Julian Eisel
aaefb0249c Fix documentation build (validation?) error
Necessary after 974d70918b and ca58f97cda.
2023-09-19 17:14:31 +02:00
Jason Fielder
70e99ee8b6 Fix #112258: Resolve broken volumetric world materials in Metal
Ensures correct BuiltinBits Layer flag was specified for materials
using volumetrics.

Authored by Apple: Michael Parkin-White

Pull Request: https://projects.blender.org/blender/blender/pulls/112577
2023-09-19 16:49:00 +02:00
Julian Eisel
974d70918b RNA/BPY: Replace asset_library_ref with asset_library_reference
This is a compatibility breaking change to rename all usages of the name
`asset_library_ref` with `asset_library_reference`. Brecht recently
suggested that such abbreviations should be avoided in public API names.
2023-09-19 16:27:07 +02:00
Julian Eisel
ca58f97cda Refactor: Use asset representation for asset browser context query
There's no need to use the asset handle type here anymore, it can just
use the asset representation type that is supposed to replace it.

Part of #102877 and #108806.
2023-09-19 15:56:11 +02:00
Julian Eisel
f73adee453 Cleanup: Remove unnecessary forward declaration
Missed this in e6f4e62ea0.
2023-09-19 15:55:31 +02:00
Julian Eisel
e6f4e62ea0 Cleanup: Remove unnecessary asset temporary ID consumer override
The override from 733e4d827a makes this one unnecessary.
2023-09-19 15:46:42 +02:00
Julian Eisel
733e4d827a Refactor: Use asset representation from context instead of asset handle
f6a6b27ac1 made the asset representation type available through context
wherever asset handle was previously. This moves us closer to replacing
the asset handle type.

Part of #102877 and #108806.
2023-09-19 15:43:56 +02:00
ChengduLittleA
954ae19b2b Fix #100596: Use sequencer override camera for line art in render
Line art doesn't take sequencer scene override camera into account when
computing line results, now it will try to get override camera info from
render and use that camera if line art override camera itself isn't set.

This will however not fix VSE preview line art result, since the preview
render doesn't give actual camera object, but rather uses a set of clip
planes and matrix info, thus it's probably not possible to do preview
camera override under current architecture.

Pull Request: https://projects.blender.org/blender/blender/pulls/110287
2023-09-19 15:27:47 +02:00
Julian Eisel
dd23e957ea Assets/BPY: Remove unnecessary asset file handle context member
See d973cc7992.
2023-09-19 15:23:45 +02:00
Julian Eisel
d973cc7992 Assets/BPY: Remove unnecessary asset handle related RNA members
The asset handle type is supposed to be replaced by the asset
representation type. It is designed for the asset system as opposed to
the file browser backend. With d421ebac5e, d04cd3f3e6 and f6a6b27ac1, it
can now do everything that is needed in Python to be a replacement.
591a1ae323 removed all usages of these members in the asset handle and
the file entry wrapped by the asset handle. All this should now be
accessed via the `bpy.types.AssetRepresentation` type instead, which is
available everywhere the `AssetHandle` type was available before.

Part of #102877 and #108806.
2023-09-19 15:16:23 +02:00
Weizhen Huang
cae90106ac Fix: Cycles: assert error in microfacet BSDF
due to assigning values to `*eval` and `*pdf` when the label is `LABEL_NONE`.
2023-09-19 15:02:47 +02:00
Julian Eisel
591a1ae323 Assets: Remove (almost) all usages of asset handle in Python scripts
The asset handle type is supposed to be replaced by the asset
representation type. It is designed for the asset system as opposed to
the file browser backend. With d421ebac5e, d04cd3f3e6 and f6a6b27ac1, it
can now do everything that is needed in Python to be a replacement.

With this commit the asset handle type and the file handle type it uses
is almost entirely replaced in Python files (only for the asset view
template we require a collection property taking asset handles still,
for internal reasons.)

Part of #102877 and #108806.
2023-09-19 14:41:34 +02:00
Julian Eisel
f6a6b27ac1 Assets: Expose asset representation in context RNA/BPY
Makes the asset representation type available in RNA/BPY context
whenever the asset handle type is, so that it can be used instead. See
d04cd3f3e6. With this change we can now replace virtually all usages of
the asset handle type in Python with the asset representation. (Only for
the asset view template we require a collection property taking asset
handles still, for internal reasons.)

Idea is now to first get rid of all usages of asset handle in Python,
so that there's almost no need for further compatibility breaking
changes (unsure if the asset view template can be removed for 4.0
already though). Internal hacks related to it can be removed at any time
still.

Part of #102877 and #108806.
2023-09-19 14:40:01 +02:00
Jeroen Bakker
3a4c238d50 Command Line: Remove Disabling SSBO
Blender has the option to disable SSBO support. This was accessible
as a command line option `--debug-gpu-disable-ssbo`.

Blender 4.0 has a hard requirement for OpenGL 4.3 which includes
SSBO support by default.

This PR removes the command line option as it makes no sense to
have it anymore.

Related to #112224

Pull Request: https://projects.blender.org/blender/blender/pulls/112571
2023-09-19 14:22:32 +02:00
Campbell Barton
5815a00acf Fix duplicate items in edit-mesh select similar enum
The enum contained two instances of NORMAL & FACE,
prefix with VERT/EDGE/FACE for clarity.
2023-09-19 21:26:57 +10:00
Campbell Barton
82be70a95f Fix crashes for some operators poll functions in background mode 2023-09-19 21:19:20 +10:00
Campbell Barton
221182c204 Fix assert accessing bone collection enum
Enum functions shouldn't return null,
use rna_enum_dummy_NULL_items instead.
2023-09-19 21:09:27 +10:00
Julian Eisel
d04cd3f3e6 Assets: Expose more data in the asset representation RNA/BPY
The asset handle type is supposed to be replaced by the asset
representation type. It is designed for the asset system as opposed to
the file browser backend. This commit adds more members to its RNA type
to query data, so more usages of the asset handle type in Python can be
converted.

Part of #102877 and #108806.
2023-09-19 12:24:34 +02:00
Jeroen Bakker
39e6776689 Fix: GPU Incorrect Padding For Globals
A float array use different alignment and reservation rules on
GPU versus CPU. Before this change the _pad1 was aligned to 16 bytes as
it was defined as an array, but on CPU this alignment doesn't
happen.

This is fixed by using 3 floats in stead of a float array for padding.

Pull Request: https://projects.blender.org/blender/blender/pulls/112565
2023-09-19 12:10:31 +02:00
Jeroen Bakker
2d70f46265 Fix: Vulkan Grid Overlay
In Vulkan the grid overlay wasn't rendering correctly. The reason was
a mis alignment in the std430 layout. This PR fixes the std430 layout
so the grid overlay (and perhaps also other sections) would work.

Root cause is that the reserve size if an nVec3 is different when used
as an array versus a single attribute. This was not taken into account
where the overlay flag was read from uninitialized memory.

Pull Request: https://projects.blender.org/blender/blender/pulls/112564
2023-09-19 11:52:59 +02:00
Campbell Barton
a288ab45b7 Fix Python exceptions from RNA methods showed twice
When RNA classes called into their Python methods,
exceptions would display twice once when reported and again from
PyErr_Print. This could happen when a Python defined poll method raised
an exception.

It also wasn't possible to suppress by redirecting `sys.stderr` for
example, because reporting printed directly to the stdout.

Resolve these issues by suppressing the reports output,
leaving PyErr_Print to output errors to sys.stderr.
2023-09-19 19:47:40 +10:00
62639080bc Anim: armature edit mode, replace 'bone layers' operator with collections
In armature edit mode, replace the 'bone layers' operator with the 'move
to bone collection' operator. This operator now works in both pose mode
and edit mode, and is available with the 'M' hotkey in either mode.
2023-09-19 11:45:40 +02:00
Lukas Tönne
78315faf8f Fix #112490: Always draw socket icons in "hidden" nodes
In #112326 the socket visibility functions were updated to take the
open/closed state of panels into account for visibility of the socket
icon. However, in "hidden" (collapsed) nodes the panels should be
ignored entirely, drawing all sockets on the root level. This requires
looking at the node flags to determine socket icon visibility, so a
simple method of `bNodeSocket` is not sufficient.

This patch moves the more complex visibility queries for sockets into
`bNode`, where both node and socket flags can be accessed. These should
be used for actual visibility rather than the plain flag accessors on
`bNodeSocket`.

Renamed `is_visible_or_panel_closed` back to just `is_visible`, the
other `is_visible` variant is now integrated in `bNode::is_socket_drawn`.

Pull Request: https://projects.blender.org/blender/blender/pulls/112520
2023-09-19 10:47:21 +02:00
Campbell Barton
75748f9d7a Fix error displaying exceptions in some cases
Replacing PyErr_Print with PyErr_Display in [0] caused string errors
not to display because PyErr_Display doesn't normalize the exception.

Normalizing before displaying the error resolves this.

[0]: 6a0f98aeefcba807918c9518c73f8362c406d315
2023-09-19 18:25:28 +10:00
Campbell Barton
097b97518c Fix crash running "Operator Cheat Sheet" 2023-09-19 17:27:42 +10:00
Campbell Barton
9f06aec32f Cleanup: de-duplicate sequencer modifier enum items 2023-09-19 17:22:49 +10:00
Campbell Barton
6b1b41bbd6 Fix #112541: Tooltip for "Set Tool by Name" crashes in operator search 2023-09-19 16:16:17 +10:00
Campbell Barton
d8b8089630 Cleanup: spelling & typo in last commit 2023-09-19 15:53:51 +10:00
Campbell Barton
e8df5cec83 PyAPI: free internal Python data using sys.exit(..)
Previously BPY_python_end wasn't called when scripts called sys.exit()
because BPY_python_end exited the Python interpreter.

Change this behavior to call BPY_python_end without exiting the Python
interpreter while freeing Blender/Python data.

While leaks in the context of sys.exit aren't especially important
it's generally preferable for sys.exit() to match Blender's code-paths
for exiting to avoid unexpected behavior.
2023-09-19 15:50:41 +10:00
Campbell Barton
a8b6c4c826 Docs: update code-comments for sys.exit() & handling SystemExit
Some of the comments for exiting were outdated & vague.
Add additional comments to clarify out SystemExit, sys.exit() & atexit
are used to handle exit requests from Python within Blender.
2023-09-19 15:01:08 +10:00
Campbell Barton
393c365daf Cleanup: code-comment formatting, remove commented prints 2023-09-19 15:00:21 +10:00
Campbell Barton
085b094f18 Cleanup: use const arguments & variables 2023-09-19 11:09:20 +10:00
Weizhen Huang
05c053cd25 Cycles: make transmission color in Pricipled BSDF match the base color
since the color is applied both at entry and exit, using the square root
of the color would make the perceived color closer to the desired one.
This also makes the transition smoother when changing the `Transmission`
value in the UI, and matches the behaviour of EEVEE.
2023-09-18 18:18:49 +02:00
Lukas Tönne
742f3b233f Nodes: Rename ui_items property to items_tree
DNA names are unchanged, just affects the RNA API.

Resolves #112523

Pull Request: https://projects.blender.org/blender/blender/pulls/112527
2023-09-18 18:07:26 +02:00
e59944dba4 Anim: armature edit mode 'select by bone color' operator
In the armature edit mode 'select similar' operator, replace the 'select
by same bone group' operator with 'select by same bone color'.
2023-09-18 18:06:06 +02:00
d5329eeea2 Anim: armature edit mode 'select by bone collection' operator
In the armature edit mode 'select similar' operator, replace 'select by
layer' with 'select by bone collection.
2023-09-18 18:06:06 +02:00
c230c52626 Anim: implement 'Select Grouped' by bone color
The pose mode 'Select Grouped' operator can now select by bone color.
This compares either the theme palette index, or the full custom color.
In other words, if custom colors are visually very similar but binary
not equal, they will be treated as different.

The last bytes of the custom colors (so `solid[3]`, `active[3]`, and
`selected[3]`) aren't used for these comparisons, as the values are
inconsistently either 0 or 255 depending on how the color was set. There
is no way to influence this with the color picker in the GUI, and AFAIK
the alpha channel isn't used for drawing either.
2023-09-18 18:06:06 +02:00
e41fbfd6e9 Anim: add 'select grouped: bone collection' pose mode operator
Add 'Bone Collection' to the 'Select Grouped' operator in pose mode.
This removes the 'Same Layer' option, and replaces it with 'Same Bone
Collection'. It selects all the bones that are in the same collections
as the active bone.

When there are multiple armatures in pose mode, the bone collections are
matched by name.
2023-09-18 18:06:06 +02:00
Weizhen Huang
1cb7e29123 Fix: EEVEE: implicit cast from float to bool in Multiscatter GGX 2023-09-18 17:29:10 +02:00
Hans Goudey
1cfed92c84 Fix: Exception creating geometry node group or node group socket
c951464b8aacf16f30ce didn't update the uses of the API.
2023-09-18 11:01:05 -04:00
Weizhen Huang
e894e6a411 Fix: Cycles: wrong refractive index in path guiding
should be the relative IOR of the outgoing media to the incoming media,
depending on `bsdf->ior` and whether the interaction is refraction.
Reference paper: [Robust Fitting of Parallax-Aware Mixtures for Path Guiding](https://uni-tuebingen.de/fakultaeten/mathematisch-naturwissenschaftliche-fakultaet/fachbereiche/informatik/lehrstuehle/computergrafik/lehrstuhl/veroeffentlichungen/robust-fitting-of-parallax-aware-mixtures-for-path-guiding/) Eq (35)

Pull Request: https://projects.blender.org/blender/blender/pulls/112157
2023-09-18 16:20:48 +02:00
Lukas Tönne
c951464b8a Fix #112521: Socket in_out type specified as a simple enum
This was still using an enum_flag which allows setting multiple items.
The items are already fixed bit combinations, this should be a simple
enum.

Pull Request: https://projects.blender.org/blender/blender/pulls/112525
2023-09-18 15:53:31 +02:00
ChengduLittleA
34877ec38b Fix #112083: Loop cut requires GL only in interactive mode
Loop cut operator should only require OpenGL in interactive mode, this
makes it possible to run background python script calling the operator.

Thanks for the help from Campbell Barton (@ideasman42)

Pull Request: https://projects.blender.org/blender/blender/pulls/112121
2023-09-18 15:45:16 +02:00
Weizhen Huang
57990ec3fc Refactor: Cycles: adjust microfacet lobe selection pdf by tint
Now that there are different Fresnel types and the reflectance can be tinted,
it is better to sample based on the actually used Fresnel type, instead of
the original Fresnel. This also avoids computing Fresnel multiple times.

Pull Request: https://projects.blender.org/blender/blender/pulls/112158
2023-09-18 15:32:46 +02:00
Hans Goudey
9184ea415b Fix #112500: Crash setting mesh line vertices to 0
Caused by missing null check in 7344c7875a85d4e42590
2023-09-18 08:53:26 -04:00
7be628b396 Anim: bone collections: make the "(de)select bones" work on linked arms
The "(de)select bones in collection" operators only change the selection
state on the pose (when in pose mode), and thus should be able to work
even when the armature (which contains the bone collections) is read-only.
2023-09-18 14:48:34 +02:00
38871b9728 Anim: (de)select bones in collection, remove 'name' operator property
Simplify the "(de)select bones in collection" operators by removing their
'name' property. They now only operate on the active bone collection. This
means the poll function can be more specific, making the enabled/disabled
state of the buttons more sensible.
2023-09-18 14:48:34 +02:00
8337a19f97 Anim: make it possible to select bone collections on linked armature
Make it possible to select bone collections in the UI, even when the
Armature is linked & not overridden. This opens up the possibility of
(de)selecting bones via read-only bone collections.
2023-09-18 14:48:34 +02:00
02659c0d01 Anim: merge bone collection assignment menus
Remove the Ctrl+G shortcut (remnant of the bone group assignment operator),
and change the 'Pose / Bone Collections' menu so that it handles linked
and overridden data properly. Shift+M now shows that menu too.
2023-09-18 14:48:34 +02:00