Commit Graph

120055 Commits

Author SHA1 Message Date
Clément Foucault
0bfd5e3536 GPU: Add GLSL preprocessor
This splits the GLSL processing into its own file
as it will grow in complexity.

Removes the complexity from `datatoc` and chain them
during the build process.

Rel #128076

Pull Request: https://projects.blender.org/blender/blender/pulls/128261
2024-10-04 11:33:21 +02:00
Falk David
47300de1eb Merge branch 'blender-v4.3-release' 2024-10-04 10:59:11 +02:00
Falk David
78e4dd14bc Fix: Make grease_pencil_selection_poll non-static 2024-10-04 10:58:04 +02:00
Jeroen Bakker
f5e9283667 Merge branch 'blender-v4.3-release' 2024-10-04 10:54:57 +02:00
Jeroen Bakker
55c180acc4 Fix #128561: EEVEE: Lightlinking crashes on NVIDIA
On NVIDIA drivers it is not allowed to pass buffers directly from the
interface to a function as the qualifiers do not match. This is commonly
fixed by first storing it in a local variable to remove the qualifiers
and then pass it to the function that need the object.

Pull Request: https://projects.blender.org/blender/blender/pulls/128571
2024-10-04 10:52:53 +02:00
Philipp Oeser
e9262f48aa Fix #121075: Outliner Ctrl-clicking to toggle selection has speed limit
There are a couple of keymap entries for `OUTLINER_OT_item_activate` in
our keymap. One of them has Ctrl+dblclick as a binding to trigger
recursion, but that one exits early when not dblclicking on the icon.
(introduced in 796577d76e)

It does not exit in a way that the non-dblclick variant can run, for
that we need to exit with OPERATOR_PASS_THROUGH, so that the "other"
operator can run as well.

Pull Request: https://projects.blender.org/blender/blender/pulls/121130
2024-10-04 10:43:43 +02:00
Philipp Oeser
9664fb0e69 Fix #128482: Motion Tracking: Apply Scale misses update
Missing depsgraph tagging the clip.
(elsewhere this area of the code uses 0 as the flag, but I assume using
a proper flag is preferred? using `ID_RECALC_SYNC_TO_EVAL` in this
PR...)

Pull Request: https://projects.blender.org/blender/blender/pulls/128527
2024-10-04 10:42:46 +02:00
Falk David
62510c57ef Merge branch 'blender-v4.3-release' 2024-10-04 10:40:17 +02:00
Falk David
effa8fbb7a GPv3: Material Isolate Operator
This ports the `gpencil.material_isolate` operator to GPv3.

Pull Request: https://projects.blender.org/blender/blender/pulls/128549
2024-10-04 10:38:04 +02:00
Falk David
b353260b9a Fix: Missing declaration of grease_pencil_selection_poll 2024-10-04 10:31:55 +02:00
Campbell Barton
7fcf043f60 Merge branch 'blender-v4.3-release' 2024-10-04 17:50:29 +10:00
Campbell Barton
4b6ebc9579 Fix error with select non-manifold when a mesh is in face-mode
In multi-edit mode, the select non-manifold function would exit with
an error if any mesh was in face mode.

While in practice the mode is synced between meshes, it's possible for
them to get out of sync with multiple scenes.

Editing in the middle of a loop on all edit-objects would change their
selection based on the internal order, leaving some unhandled,
returning canceled even though changes where made.

Resolve by checking the selection mode in the operators poll function,
then ensure all edit-meshes selection modes match the active object.
2024-10-04 17:42:45 +10:00
Campbell Barton
093a3abbd4 Cleanup: various minor changes to edit-mesh selection
- Track changed state, skip selection updates when unchanged.
- Skip hidden geometry early in iterators,
  using "continue" instead of a code-block since this is such a common
  check, avoid mixing this with other logic.
- Use full sentences in comments, minor corrections/improvements.
2024-10-04 16:49:28 +10:00
Jason C. Wenger
51eb5e2803 Edit Mesh: add an operator to select by pole count
Adds a new "Select by Trait" option to select all 3-poles, 5-poles, etc.
Given the impacts of 3 & 5-poles in topology, operator default is to
select all poles which do not have 4 edges to allow easy inspection.

Select connected vertices/edges/faces based on the mode.

Ref: !128493
2024-10-04 15:47:03 +10:00
Campbell Barton
b83d4558bf Merge branch 'blender-v4.3-release' 2024-10-04 14:49:54 +10:00
Campbell Barton
e03214f424 Cleanup: use doxy code-command
Supports language & is ignored by spell checker.
2024-10-04 14:46:59 +10:00
Campbell Barton
30d81416c0 Merge branch 'blender-v4.3-release' 2024-10-04 12:07:28 +10:00
Campbell Barton
f9fb42f5f9 Merge branch 'blender-v4.3-release' 2024-10-04 12:07:26 +10:00
Campbell Barton
ea49df763a Merge branch 'blender-v4.3-release' 2024-10-04 12:07:23 +10:00
Campbell Barton
2b9d177eb3 Merge branch 'blender-v4.3-release' 2024-10-04 12:07:21 +10:00
Campbell Barton
3c8317e640 Merge branch 'blender-v4.3-release' 2024-10-04 12:07:18 +10:00
Campbell Barton
318125c82b Fix #127692: Artifact in axis aligned portions of mask feather
BLI_scanfill could remove edges later needed for feathering,
although this would only occur in specific cases.

Resolve by storing edges before triangle filling.
2024-10-04 11:46:38 +10:00
Campbell Barton
a2617b0029 Fix mask duplicate failing to set the active point
Duplicate was setting the last-duplicated spline as active,
leaving the active vertex set to the original (non-duplicated) spline.

This caused the active spline/point to get out of sync,
while not an error - it is confusing and should be avoided.

Now the active spline & point are duplicated,
matching active behavior elsewhere (objects for e.g.).
2024-10-04 11:46:36 +10:00
Campbell Barton
18da036ecc Fix crash deleting mask vertices
The active vertex was only cleared when it was part of the active-spline
(which isn't guaranteed).

Duplicating & deleting left the active vertex pointing to freed memory.
2024-10-04 11:46:34 +10:00
Campbell Barton
44bb032590 Fix ARRAY_HAS_ITEM macro on 64bit systems
An unsigned int was used for pointer offset calculation which could wrap
around, for large values or when pointer being checked is from a
different allocation.
2024-10-04 11:46:33 +10:00
Campbell Barton
0b8ce96bc1 Cleanup: quiet warnings, spelling 2024-10-04 11:45:26 +10:00
Jacques Lucke
3f8f5fd998 Cleanup: sort NOD_static_types.hh entries 2024-10-03 23:45:56 +02:00
Jacques Lucke
b0c4054b9c Cleanup: add missing newlines 2024-10-03 23:41:51 +02:00
Jacques Lucke
f18b37f811 Cleanup: Geometry Nodes: reduce boilerplate for blend read/write for socket items 2024-10-03 23:39:00 +02:00
Jacques Lucke
bfc1fb8f83 Cleanup: Geometry Nodes: reduce boilerplate for ui-lists for socket items 2024-10-03 22:53:09 +02:00
Jacques Lucke
e847a7d090 Cleanup: Geometry Nodes: reduce boilerplate of defining socket item operators 2024-10-03 21:59:36 +02:00
Jesse Yurkovich
33d8a6407b Merge branch 'blender-v4.3-release' 2024-10-03 11:17:59 -07:00
Jesse Yurkovich
80cf6b99c3 USD: Provide Import option for Material Purpose
USD has the concept of material "purposes" which allows different
materials to be associated for a prim and gives special meaning to them.
These are somewhat similar to display purposes, which we already allow
to be chosen, but are distinct concepts. This PR adds an option for
Import allowing the user to chose which material purpose to load.

Blender currently attempts to load purposes automatically. It starts
with "allPurpose" and then moves to "preview" and "full" in that order.
This behavior is now changed and the automated search is removed to
instead give the user control which purpose to load. Additionally, USD
already has its own fallback behavior during material resolution[1]:
- When given "full" it will first check "full" and fallback to
  "allPurpose" if not found. An additional, Blender-specific fallback
  to "preview" is also implemented here upon request.
- When given "preview" it will first check "preview" and fallback to
  "allPurpose" if not found
- When given "allPurpose", it will only check "allPurpose"

I have opt'd to keep this behavior directly as-is to not introduce
differences that may surprise those already familiar with USD elsewhere.

Additionally, I've set Blender's default import purpose to "full" to
ensure we're loading in the highest quality assets first. Though this
has the obvious risk that "full" assets tend to be quite heavy. We can
change to "preview" if this proves too problematic later.

This does not change how Blender exports materials. Blender always uses
the "allPurpose" binding when writing its USD files.

--------
[1] USD docs:
https://openusd.org/release/api/class_usd_shade_material_binding_a_p_i.html#details
https://openusd.org/release/api/class_usd_shade_material_binding_a_p_i.html#UsdShadeMaterialBindingAPI_MaterialResolution

Pull Request: https://projects.blender.org/blender/blender/pulls/128206
2024-10-03 20:16:27 +02:00
Julian Eisel
2a31b3ea59 Merge branch 'blender-v4.3-release' 2024-10-03 19:54:14 +02:00
Julian Eisel
46d1d85319 Cleanup: UI: Remove unused asset shelf settings pointers
The asset shelf settings struct wasn't used for listbase storage, so
these listbase pointers were unused. They were added unintentionally.
2024-10-03 19:53:55 +02:00
Julian Eisel
a4d9a38c70 UI: Increase size of previews in asset shelf popups
The asset previews were a little smaller than in comparable popups,
leading to a lot of truncation in the asset names. Increasing the size
mitigates this quite a bit, plus previews get more readable. 3355ca3813
increased the size of the popup so there's more space to put the now
bigger previews in.

Part of the brush assets followups:
ihttps://projects.blender.org/blender/blender/issues/116337
2024-10-03 19:49:36 +02:00
Julian Eisel
3355ca3813 UI: Increase width of asset shelf popup and clamp by window size
Increasing the width of the popup makes it show more assets on the
screen and reduces the need to scroll in bigger asset libraries. Plus,
in a follow-up commit the size of previews will be increased so that
there's more space to display the full name. Makes sense to increase the
popup size together with that, so a similar amount of assets can remain
visible still.

Increasing the size means it's more likely to overflow the window, so
this also makes sure the popup is clamped nicely by the window size.
2024-10-03 19:49:19 +02:00
Habib Gahbiche
0d2f5183d3 Fix CPU compositor crashes when rendering older files
How to reproduce:
1. Save blend file in 4.2 with preview active for composite or viewer node (see attached example file)
2. Load blend file and render
3. Observe crash

Preview for composite and viewer node was removed in https://projects.blender.org/blender/blender/pulls/127044, but versioning was not addressed in that PR.

Pull Request: https://projects.blender.org/blender/blender/pulls/128292
2024-10-03 19:40:11 +02:00
Julian Eisel
167830da20 Fix: Incorrect versioning check for brush asset filter preference
This versioning code was introduced in the 4.3 release branch in
71dee64743, but also needs to run for files saved in the main branch. I
already bumped the subversion in 13ef1256a2, but didn't amend this
necessary change into the commit.
2024-10-03 19:33:25 +02:00
Clément Foucault
f308e42d56 Fix: EEVEE: Volume Lightprobe: Division by zero if no object is visible
If no object with valid bounds can be found,
we simply abort the baking process.

This avoid a division by zero during the view planes
computation.
2024-10-03 19:31:04 +02:00
Julian Eisel
13ef1256a2 Merge branch 'blender-v4.3-release' 2024-10-03 19:19:48 +02:00
Julian Eisel
71dee64743 Sculpt/Paint: Asset shelf option to filter brushes by the active tool
Part of: https://projects.blender.org/blender/blender/issues/128066

Adds a "Filter by Active Tool" option for the brush asset shelves,
enabled by default. If enabled, the asset shelf only shows brushes
matching the brush type of the current tool. If the general "Brush" tool
is active, only brushes that are not covered by another tool are
displayed. The popup brush selector always shows all assets.

The option is stored in the Preferences, toggled in the "Display
Settings" popover of the asset shelf.

Note: This is committed to the 4.3 release branch, which was discussed
in advance.

Pull Request: https://projects.blender.org/blender/blender/pulls/128450
2024-10-03 18:56:40 +02:00
Falk David
3628433e6b GPv3: Python: Add API to move a frame
This adds a function `layer.frames.move(from_frame_number, to_frame_number)`.
The function will move any keyframe starting at `from_frame_number` to
`to_frame_number`. If there already is a frame at `to_frame_number`
the function will fail and return an error.

Pull Request: https://projects.blender.org/blender/blender/pulls/128544
2024-10-03 18:42:35 +02:00
Chris Clyne
5a27280916 EEVEE: Light & Shadow linking
This adds feature parity with Cycles regarding light and shadow liking.

Technically, this extends the GBuffer header to 32 bits, and uses
the top bits to store the object's light set membership index.
The same index is also added to `ObjectInfo` in place of padding bytes.

For shadow linking, the shadow blocker sets bitmask is stored per
tilemap. It is then used during the GPU culling phase to cull objects
that do not belong to the shadow's sets.

Co-authored-by: Clément Foucault <foucault.clem@gmail.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/127514
2024-10-03 18:41:06 +02:00
Miguel Pozo
d1a9b20a15 Merge branch 'blender-v4.3-release' 2024-10-03 18:35:58 +02:00
Miguel Pozo
3af44f9e76 EEVEE: Improve info messages at render time
Print shadow errors at render time.
Ensure all render errors are printed.
Add render error message in the UI.
Don't print the same error twice.

Pull Request: https://projects.blender.org/blender/blender/pulls/128548
2024-10-03 18:34:46 +02:00
Pablo Vazquez
f44ea325f9 Merge branch 'blender-v4.3-release'
# Conflicts:
#	release/datafiles/splash.png
2024-10-03 18:10:28 +02:00
Falk David
6b78894740 Fix: GPv3: Radial controls not working in some modes
The radial controls to set the brush size were not working in sculpt and
vertex paint mode.
This was because of a collision with the  `cyclical_set` operator in edit mode.
The issue was that the poll function for the edit mode keymaps also
passed in sculpt and vertex paint mode.

To solve this, add a keymap for these common selection operators and
separate them from the general edit mode keymap.

Pull Request: https://projects.blender.org/blender/blender/pulls/128542
2024-10-03 17:45:04 +02:00
Falk David
050133078f Merge branch 'blender-v4.3-release' 2024-10-03 17:06:47 +02:00
Falk David
0872e898bc Fix: GPv3: Paint cursor rendering
Fixes to the paint cursor rendering:
* Fill tool no longer draws a huge cursor
* Tint tool now uses the right size
2024-10-03 16:32:08 +02:00