Commit graph

145376 commits

Author SHA1 Message Date
Julian Eisel
c07b253265 Fix: Assets: Asset library not loaded after creating brush asset (asserts)
The steps in #132900 would lead to a failed assert and some warning prints:
"Warning: Asset loading is unfinished". This is because asset libraries get
cleared more strictly and correctly since a859ed1130, but only once the menu
was shown it would get reloaded.

Instead make sure the asset library loading gets triggered whenever a button to
popup a brush asset shelf is present. This makes sense because in this context
you typically want an asset library available.
2025-01-15 19:08:08 +01:00
Bastien Montagne
7fb3179c1f Add tests for bpy.data.user_map.
These are based on data generated for liblink tests, so part of this
code is also refactored to move data generation into `bl_blendfile_utils.py`.

NOTE: Work done also to add tests to upcoming filepath mapping utils
(see !127252).

Pull Request: https://projects.blender.org/blender/blender/pulls/133110
2025-01-15 18:13:32 +01:00
Miguel Pozo
51770cd698 Fix #133106: Overlay-Next: Solid selection doesn't work in XRay mode
Regression from 2abc3ad801
2025-01-15 18:10:26 +01:00
Miguel Pozo
dd20922167 Cleanup: Overlay-Next: Remove unrequired casting 2025-01-15 17:39:59 +01:00
Miguel Pozo
4be177a12d Fix #133084: Overlay-Next: Viewport Z-Axis
ba074d1670 created subpasses based on flags that were not yet set up.
2025-01-15 17:38:43 +01:00
Laurynas Duburas
8e0c050fa1 Cleanup: Curves: Correct incorrect function name 2025-01-15 11:37:07 -05:00
Richard Antalik
4a7209f7ed Fix #133108: Slip strip not accepting numpad enter
Add `EVT_PADENTER` as valid event type.

Pull Request: https://projects.blender.org/blender/blender/pulls/133109
2025-01-15 17:24:38 +01:00
Brecht Van Lommel
7c2ace05ab Cleanup: Correct logic for static Embree library SIMD libs
We are only using a dynamic library so this doesn't matter in practice,
just better to avoid having wrong examples in the code.

Pull Request: https://projects.blender.org/blender/blender/pulls/133105
2025-01-15 16:52:30 +01:00
Brecht Van Lommel
599fa13ac0 Cleanup: Correct logic and comments about Imath includes in imbuf
There is nothing happening upstream in OpenImageIO to remove this
requirement, as the comments imply.
2025-01-15 16:52:29 +01:00
Iliya Katueshenock
57e72618cb Cleanup: Geometry Nodes: Unused namespace
Pull Request: https://projects.blender.org/blender/blender/pulls/118093
2025-01-15 16:28:37 +01:00
Pablo Vazquez
ef2bff2004 UI: Always display mesh indices overlay setting
Show the Indices overlay setting regardless of Developer Extras being
turned on or not.

With the introduction of Geometry Nodes, having access to the indices
is handy outside of development environments (as well as in game
development or to debug i/o issues).

Pull Request: https://projects.blender.org/blender/blender/pulls/133095
2025-01-15 16:05:44 +01:00
Philipp Oeser
08539618cd Fix #133097: GP Vertex Weight Proximity wrong with influence VG
The modifier would write to all weights, not respecting if a vertex was
not part of the influence vertex group.
If the vertex is not part of the influence vertex group (its weight is
0.0), dont touch the existing weights (just continue happily).

Pull Request: https://projects.blender.org/blender/blender/pulls/133098
2025-01-15 15:55:49 +01:00
Philipp Oeser
e700e1f71c Fix #115843: Expose curves sculpt collision distance
The hardcoded value doesn't work well with real scale human heads for
example (was already adjusted once in a76b5d3a07).
The result for too high values is a complete "freeze" of the whole curve
(since  the solution from e7606139ba has the problem that it keeps
running into max iterations of the collision solver).

As long as no better solver is implemented, it is better to have an
adjustable value (to work on differently sizes objects) to not run into
the above issue (same as the old particle hair system had) and show it
in sculptmode next to the button which enables collision.

This is done per `Curves` (same as the flag
`CV_SCULPT_COLLISION_ENABLED`), similar to symmetry settings
[alternatively, it could be part of `BrushCurvesSculptSettings` but I
think it makes more sense in Curves] and then passed on to the
`CurvesConstraintSolver`.

Includes versioning code (to set the default for old files).

Pull Request: https://projects.blender.org/blender/blender/pulls/132997
2025-01-15 15:54:43 +01:00
Hans Goudey
d9d7d3b354 Cleanup: Use existing utility functions in mesh split edges file
Pull Request: https://projects.blender.org/blender/blender/pulls/133081
2025-01-15 15:30:14 +01:00
Omar Emara
e545b6e764 Cleanup: Pass interpolation directly to transform algorithm
The transform algorithm currently takes realization options, but it only
uses the interpolation from it. So pass interpolation directly for
clarity.
2025-01-15 15:45:51 +02:00
Omar Emara
7e5af160bd Cleanup: Rename wrap to repeat in realization options
The wrap member in realization options is no longer used to indicate
wrapping since 8f8ae302ba. So rename it to repeat since the only user is
now repeating in the realization algorithm.
2025-01-15 15:22:36 +02:00
Bastien Montagne
484fa519fb Fix some issues with bpy.data.user_map implementation.
* In case a subset of IDs is given, it was not checked that all items
  are ID data.
* In case of error while processing the subset, there could be some
  python data 'leak' (the `user_map` would not be unreferenced).
* Improve performances in case there are many duplicates in given subset
  iterable of IDs, by not processing the duplicates.

Discovered in !127252 review.
2025-01-15 11:35:11 +01:00
Brecht Van Lommel
381e125153 Fix: Invalid character in bpy package description on pypi
Unclear why this started happening since the 4.3.0 package, maybe an update
to Python on the build machine.
2025-01-15 09:42:05 +01:00
Alaska
f09fd9bdef Fix #132935: Add sample subset feature to Cycles
Cycles has a sample offset feature allowing users to render X samples
in a single frame on one device, then the remaining Y samples later or
on a different device and combine them back together at the end.

However in most situations the result from using this method was
different, and usually lower quality than rendering all the samples in
one go.

This was because Cycles tunes it's random number sequence for the
number of samples being rendered. And the random number sequence was
being tuned for the wrong number of samples in the case that a user
was using the sample offset.

This commit fixes this issue by adding a "sample subset" feature.
The user specifies the total sample count being rendered across all
devices in the existing `Max Samples` parameter, then specifies per
device which subset of samples will be rendered (E.g. Render samples
0-1024 out of a 0-2048 range).

This commit also contains some additional clean up work
inside Cycles related to the area being changed.

Co-authored-by: Brecht Van Lommel <brecht@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/132961
2025-01-15 07:41:16 +01:00
Campbell Barton
a29fe64e53 Cleanup: quiet compiler warning 2025-01-15 17:29:31 +11:00
Aras Pranckevicius
1ad083dabf Tests: Add FBX import tests, switch OBJ/PLY/STL import tests to the same machinery
"Expected textual data output" comparison based tests for FBX,
OBJ, PLY, STL import.

- There's a tests/python/modules/io_report.py that can produce
  a "fairly short text description of the scene" (meshes, objects,
  curves, cameras, lights, materials, armatures, actions, images).
  About each object, it lists some basic information (e.g. number
  of vertices in the mesh), plus a small slice of "data" (e.g.
  first few values of each mesh attribute).
    - Custom import parameters, if needed, can be provided by
      having a sidecar .json file next to imported file (same
      basename, json extension), that would have a single json
      object with custom arguments.
- Add FBX test coverage, with 46 fairly small files (total size 3.8MB)
  covering various possible cases (meshes, animations, materials,
  hierarchies, cameras, etc. etc.).
- Switch OBJ/PLY/STL import tests to the above machinery, remove C++
  testing code.

Pull Request: https://projects.blender.org/blender/blender/pulls/132624
2025-01-15 05:52:15 +01:00
Hans Goudey
98060efcf1 Fix #132537: Assert when baking with string attribute
Propagating string attributes isn't supported in many places currently,
the split edges node is not an exception, so skip those attributes as
necessary.
2025-01-14 22:29:03 -05:00
T0MIS0N
ac64ada636 Texture: Add an option for scaling all UDIM tiles when resizing images
This addresses the 'Resize UDIM sequences' feature from issue #109820

If the user needs to resize all UDIMs in an image, they currently need
to go through a tedious process of switching through all the UDIMs and
resizing them individually.

Now, when the user resizes an image, they can choose to apply the
operation to all UDIM tiles in the image.

Co-authored-by: T0MIS0N <50230774+T0MIS0N@users.noreply.github.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/132524
2025-01-15 03:30:29 +01:00
Hans Goudey
5e3951541e Cleanup: A few clang tidy fixes for geometry module
Mostly removing unused includes.

Pull Request: https://projects.blender.org/blender/blender/pulls/133078
2025-01-15 02:56:59 +01:00
Nika Kutsniashvili
89f829f736 Nodes: Node Wrangler: Remove "Frame Selected" operator
This operator was duplicating feature that already exists in core
Blender (`node.join`), and was not working great as well. So there is
no need to maintain this python operator, but to keep consistency for
users I kept the keymap and UI entry but assigned it to `node.join`
operator instead, so that users don't notice change.

I assigned keymap inside add-on and not in Blender core because people
who didn't use Node Wrangler have that key free, or have something else
assigned (and `node.join` is already mapped to Ctrl+J), so only Node
Wrangler users should have this keymap. We can change it and rename
built-in operator to Parent, instead of Join, and remap it to Shift+P,
but that's separate discussion.

Resolves #129404.

Pull Request: https://projects.blender.org/blender/blender/pulls/132758
2025-01-15 02:19:33 +01:00
Ray Molenkamp
716fda7df1 Deps: Windows: Add back nuke convenience script
To easily force a rebuild of a dependency the nuke script will remove all build
artifacts for a specific dependency from the dependency build folder. This includes

- The Debug and Release build folder of the dependency
- The Debug and Release staging output folder of the dependency
- The harvest output folder of the dependency

For dependencies that have a long dependency chain like embree, shaderc and
python extra convenience scripts are added that nuke the additional deps that
need to be removed to obtain a fully clean build.
2025-01-14 18:12:02 -07:00
Hans Goudey
a904b4f0fd Cleanup: Resolve printf signed/unsigned warning 2025-01-14 20:02:04 -05:00
Harley Acheson
67e7cb6b8a UI: Remove RNA Defaults from Negative Boolean Properties
Until the refactor of 255f031e3e, Negative Boolean Properties would
restore the opposite value for "Reset to Defaults".  Now that this
works, this PR removes the RNA property defaults that are no longer
needed.

Pull Request: https://projects.blender.org/blender/blender/pulls/133076
2025-01-15 01:21:57 +01:00
Sean Kim
5659be7a7d Fix: Update DEG_debug_graph_relations_validate commented line
Changed in d325e6f0e8

Pull Request: https://projects.blender.org/blender/blender/pulls/133071
2025-01-15 00:53:22 +01:00
Harley Acheson
26c15292a7 Fix #99187: Increased Contrast of Transform Cursors
When transforming Objects, like scaling and rotating we see a custom
drawn cursor at the mouse position. In the default theme this is
entirely black, doesn't change with background color, and can be very
hard to see in some circumstances. This PR uses the same colors as the
text overlays and adds a contrasting shadow to help add some contrast.

Pull Request: https://projects.blender.org/blender/blender/pulls/132671
2025-01-14 23:01:11 +01:00
Hans Goudey
78090a0ce5 Fix #132946: Incorrect handle types after subdividing curves
Followup to 80f5b3ad21 which was just
plain wrong. Somehow I missed the whole point and set auto handle types
instead of aligned. In a more thorough dive into this area, there was
some weird structural decisions making things harder than they should be.
This commit slightly simplifies the way the first and last handle of a
segment are set, moving it all to happen in one place and making the
processing of the last cyclic segment a bit simpler. The resulting
handles are aligned if possible.

Pull Request: https://projects.blender.org/blender/blender/pulls/133070
2025-01-14 21:52:32 +01:00
Brecht Van Lommel
2cc72f5fb0 Tools: Update company credits 2025-01-14 21:26:48 +01:00
Brecht Van Lommel
46f4810d38 Cleanup: Compiler warnings 2025-01-14 21:26:48 +01:00
jlalleve
2feadc623b Core: Environment variables for deployment
* BLENDER_SYSTEM_SCRIPTS support for multiple script paths, separated by
  ; on Windows and : on other platforms.
* New BLENDER_CUSTOM_SPLASH to replace the splash screen image.
* New BLENDER_CUSTOM_SPLASH_BANNER to overlay an image on the splash.

Contributed by Sony Interactive Entertainment: https://github.com/PlayStation-OpenSource
2025-01-14 20:57:31 +01:00
Harley Acheson
6922418a95 Fix #79388: Increase User Scale Hard Min to 0.5
Increase the hard minimum for Resolution Scale from 0.25 to 0.5. 0.5 is
also the current soft limit (the least you can get by just dragging on
the widget). But, as illustrated by the bug report, accidentally typing
in a value below 0.5 is difficult to recover from since the text is too
small to see. It is a useful minimum though in that this value is good
for tests and captures on High DPI system to simulate low dpi.

Pull Request: https://projects.blender.org/blender/blender/pulls/131688
2025-01-14 20:54:16 +01:00
Harley Acheson
1c64f8cbb5 Fix #127231: More Space for Frame Column in Shape Key List
As the complaint shows, using default layout the column for absolute
keys in the Shape Keys list gets cut off. This PR increases this space
by changes to alignment and column split factor.

Pull Request: https://projects.blender.org/blender/blender/pulls/131887
2025-01-14 20:43:33 +01:00
Hans Goudey
9dd3c64c36 Cleanup: Remove unused includes in some blenkernel files
Pull Request: https://projects.blender.org/blender/blender/pulls/133067
2025-01-14 19:55:11 +01:00
Harley Acheson
de95daaadf Fix #130171: Stop Panel Animation When Removing Regions
When removing areas ensure that none of its panels are currently
running open/close animations. If so turn them off.

Pull Request: https://projects.blender.org/blender/blender/pulls/131998
2025-01-14 19:43:42 +01:00
Falk David
6b63ec95d0 Fix: Update type name in sphinx_doc_gen.py
The `Sequence` RNA type has been renamed to `Strip`
in 655a17a6ab.
2025-01-14 19:13:13 +01:00
Ray Molenkamp
9d69327418 Deps: Windows: x64: Update dependency build scripts
These scripts have not been updated in years, and locally i had better
versions of them. This commit updates them to the latest i had locally
this should hopefully lower the barrier to building the dependencies by
other developers as all that is needed is a fresh VM with a clean
windows install.

Removed:

buildall.cmd - not useful, we no longer build for 2 vs versions
and 2 architectures , removed

nuke.cmd - same, may come back in the future in some form

New:

vmprep.cmd.txt - This preps a clean windows vm with the correct
versions of visual studio/cuda/git/hip/meson to build all dependencies.

this should only and ever be run on a clean install of windows, do not
under any circumstances run this on a developer workstation.

to prevent people from doing this anyhow this script has a .txt
extension so it cannot be accidentally executed, instructions on how to
run this script are this file.

vmbuild.cmd.txt - Helper build script, vmprep will provision the build
machine with this script.

vsconfig_2019 - installer script for visual studio 2019 to select the
workloads we require.
2025-01-14 10:52:44 -07:00
Bastien Montagne
255f031e3e Refactor: RNA definition of Boolean bitset/bitflags properties.
Existing code had several issues:
* The 'DNA bitset as RNA array' behavior was totally undocumented,
  virtually impossible to discover, very confusing, and without any
  checks that given parameters (like the array length) were valid.
* The DNA defaults handling was fully broken for 'negative' boolean
  properties.

This commit:
* Factorizes all rna define code for boolean properties storing a `booleanbit`
  value into a new static util (this revealed and fixed the 'negative defaults'
  issue).
* Forbids calling `RNA_def_property_array` on a Boolean property with a
  non-null `booleanbit` value.
* Introduces a new `RNA_def_property_boolean_bitset_array_sdna`,
  strictly to define 'DNA bitsets as RNA array' properties.
* Adds several validation checks, in particular regarding the bitset
  case: it takes into account the fact that bitshift operations on
  negative numbers are typically
  [arithmetic ones](https://en.cppreference.com/w/cpp/language/operator_arithmetic),
  which means that they preserve the sign of the value, and that the
  left-most bit should never be used with signed integers for bitsets.

-------------------

The fix to DNA defaults handling on 'negative' properties revealed
several RNA errors, listed below. Fixing them is not necessarily trivial
(as some seem to contradict the DNA default values, e.g. the
`View3DShading.use_studiolight_view_rotation` one), so it is kept
outside of this refactor. Conflicting cases should likely be handled by
the relevant modules (to decide whether the DNA, or the RNA default
should be kept).

-------------------

Also realized that many DNA types are ignored when trying to find DNA
default values. This will also be tackled separately, as fixing it is
fairly straightforward.

Pull Request: https://projects.blender.org/blender/blender/pulls/132917
2025-01-14 18:19:27 +01:00
Jeroen Bakker
264681344f Vulkan: Provide more control on memory allocation
This change give access to preferred and required allocation flags
allowing better control over where memory is allocated.

Pull Request: https://projects.blender.org/blender/blender/pulls/133059
2025-01-14 17:41:35 +01:00
Hans Goudey
bbc8216951 Cleanup: Formatting 2025-01-14 11:41:03 -05:00
Neko-Asakura
60a3f886c6 macOS: Use NSColorSampler for picking colors outside of the Blender window
#115187 introduced the eyedropper tool for use outside blender on macOS,
but the following issues remain:

1. Users must grant screen capture permission to blender.
2. No visual cue. (cursor icon cannot display as an eyedropper outside
   blender)
3. Users must press `Enter` to activate the picker.
4. `CGWindowListCreateImage` function has been deprecated as of macOS
   14.0

The proposed fix is to use `NSColorSampler` class to select colours
directly from onscreen content. It offers:
1. Permission free (no screen capture permission required).
2. A clear visual cue when selecting colours.

Known issue:
1. Still need press `Enter` to activate the picker.

Pull Request: https://projects.blender.org/blender/blender/pulls/131593
2025-01-14 17:20:41 +01:00
Nathan Vegdahl
1cb25d6245 Anim: declutter Action Editor header
The Action Editor was already getting crowded, but has become even
moreso with the addition of the new Slot selector. Part of this clutter
is due to the NLA-related buttons:

- The up/down track switching buttons.
- The Push Down button.
- The Stash button.

The latter two are currently still useful, but don't need to be directly
on the header itself. This PR moves them to the header's Action menu.

The up/down buttons have several issues:

- They are conceptually confusing: you cannot visually see what's
  happening or which track you're on without an NLA editor open anyway,
  so somewhere in the NLA Editor would be a better place for them.
- Their functionality is broken, and it seems has been for a long time:
  you can go down in the track stack, but often can't go back up,
  despite the existence of the up button. It doesn't appear that anyone
  has reported this cripplingly broken behavior, which strongly suggests
  that very few people (if anyone) is using or relying on these buttons.
- They don't make any sense when you have more than one strip on a track
  anyway (which strip do you go into tweak mode on?).

For all these reasons, this PR simply removes the up/down buttons.
2025-01-14 17:15:45 +01:00
Sybren A. Stüvel
e57172a2ee Refactor: Anim, simplify the function to flip bone names when pasting keys
Replace pointer magic with `std::string` and `blender::StringRef`.

The old code modified the RNA path of F-Curves to extract & flip the
bone name. The new code is not modifying any data, at the expense of a
few more copies. Since these strings are not long, and the call to
`BLI_string_flip_side_name()` also makes quite a few copies, the
performance impact should be negligible.

No functional changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/133005
2025-01-14 17:12:09 +01:00
Sybren A. Stüvel
9a7f057dde Refactor: Anim, in keyframe pasting code, change to_simple to to_single
The variable/parameter indicates that the user is pasting to a single
F-Curve. It now mirrors `from_single`.

No functional changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/133005
2025-01-14 17:12:09 +01:00
Sybren A. Stüvel
894e242cfa Refactor: Anim, make pastebuf_match_path_property() easier to read
Simplify `pastebuf_match_path_property()` by reducing cognitive complexity
and using `StringRef::endswith()` instead of pointer arithmetic.

I've also added a few unit test cases that cover some unwanted behavior:
the property name check only checks suffixes, and so copying "….location"
will also paste it to a "….not_actually_location" F-Curve.

No functional changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/133005
2025-01-14 17:12:09 +01:00
Sybren A. Stüvel
44b37ee8ed Refactor: Anim, simplify pastebuf_match_path_full()
Simplify `pastebuf_match_path_full()` by reducing cognitive complexity.

Pull Request: https://projects.blender.org/blender/blender/pulls/133005
2025-01-14 17:12:09 +01:00
Sybren A. Stüvel
ae84e23110 Refactor: Anim, keyframe paste: add unittest for bone name flipping func
Add a unit test for the bone name flipping function of the keyframe
paste functionality.

The function itself has been changed a little bit, so that it returns a
`std::string` instead of using a `char **` return parameter that needs
explicit freeing at the call site. This made the tests considerably
simpler to write. This change does cause an extra copy of the RNA path,
but that should be refactored away soon.

No functional changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/133005
2025-01-14 17:12:09 +01:00