This change uses a symbol map to hide PugiXML symbols from MaterialX libraries
when dependencies are built. This avoids conflict with symbols from pugixml.a
used by Blender for the Grease Pencil SVG exporter.
The root cause of the conflict has been addressed upstream:
https://github.com/AcademySoftwareFoundation/MaterialX/pull/1944
However, the patch does not cleanly apply on 1.38, and it not cleat when the
next 1.39 is released. Additional complication is that reportedly USD does
not yet support MaterialX 1.39.
This fix is only for Linux. Similar thing can be applied on macOS, however so
far I could not reproduce the issue on macOS.
Ref #124173
Pull Request: https://projects.blender.org/blender/blender/pulls/126518
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
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
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
This avoids having INSTALL files with an absolute path that is
different from the "main" install path. In practice this should
solve the problem of WIX failing to package Blender 4.3.
Pull Request: https://projects.blender.org/blender/blender/pulls/128556
Turns out it is possible to have code to pick up wrong class
when defining a friend:
```
intern\cycles\device/memory.h(255): warning C4099: 'GPUDevice': type name first seen using 'struct' now seen using 'class'
source\blender\gpu\GPU_platform.hh(69): note: see declaration of 'GPUDevice'
```
Now made it so the classes have forward declaration in the CCL
namespace, avoiding possible conflict with the classes with the
same name in the global namespace.
Pull Request: https://projects.blender.org/blender/blender/pulls/128485
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.
- 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.
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
Wayland text input could not switch input method.
When using an input method editor (e.g. input Chinese),
switching the input method (e.g. input English -> input Chinese)
during input text was not supported.
Resolve the issue by calling `zwp_text_input_v3_disable` every time
after receiving a `leave` event, and call `zwp_text_input_v3_enable`
every time after receive `enter` event, when text input is enabled.
Ref: !127824
BLI_scanfill could remove edges later needed for feathering,
although this would only occur in specific cases.
Resolve by storing edges before triangle filling.
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.).
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.
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.
Instead of running the ComplianceChecker during just one test, run it
for every export test. A common `export_and_validate` local function is
used in all relevant locations now.
Pull Request: https://projects.blender.org/blender/blender/pulls/128513
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#detailshttps://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
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
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.