Commit Graph

102546 Commits

Author SHA1 Message Date
Harley Acheson
d99af958d7 UI: Show Selected Tool Item
Show Toolbar items with selected highlight and hover highlight.

Pull Request: https://projects.blender.org/blender/blender/pulls/111939
2023-09-06 19:07:28 +02:00
Julian Eisel
1b2e29e692 Cleanup: Clarify path variable name in thumbnail create function
"filepath" was misleading since this path could also point into a .blend
file. Further, the convention was to use "filepath" for such files, and
"file_path" for when only an actual file path was expected. This is
highly confusing and non-obvious. Plus a (newer?) function broke with
the convention.

Just be explicit about the type of path, even if a bit verbose. It's
good to always have the reminder that this may be more than just a file
path when passing it around.
2023-09-06 18:46:29 +02:00
Harley Acheson
63e210895b UI: Proper Selection Highlight for Confirms
Operator Confirms get blue highlights since we use those like dialogs.

Pull Request: https://projects.blender.org/blender/blender/pulls/111949
2023-09-06 18:24:48 +02:00
Bastien Montagne
eadc54bb5d Fix (unreported) crash when deleting ObData while keeping their ShapeKeys.
Batch deletion of IDs could lead to deleting ObData ones while keeping
the related ShapeKeys.

Orphaned shape keys are not allowed anymore in Blender, they are checked
against in both file write and read code.

This would lead to assert (and crash) e.g. in the liboverride code.

This commit forcefully add shapekeys of deleted meshes, curves etc.,
when calling e.g. `BKE_id_multi_tagged_delete`.

Note that deleting the shapekey when deleting the obdata ID was already
implemented in single ID deletion (`BKE_id_delete` & co), in the
underlying private `id_free`. But this is skipped in `no main` case.
which is used by the batch deletion code for performance optimizations.
2023-09-06 18:21:15 +02:00
Bastien Montagne
fc02d5ee11 Fix (unreported) crash in versioning code of the new Bone Collections.
Code would access invalid (null) `pchan->bone` pointers, presumably due
to the (linked) armature data being heavily modified compared to the
local Object's poses? At least that's the idea of what caused this
invalid state of pose data.

Unfortunately the issue was detected in a very complex case.
Essentially, opening an older snapshot (r3034) of a Pets production anim
file with assets from current repository r3055), which have been heavily
cleaned-up.
This triggers massive amount of missing linked data from the older anim
file, and extremely heavy resyncing process of liboverrides.

In any case, calling `BKE_pose_ensure` before accessing object's pose
data should never be a bad thing. ;)
2023-09-06 18:21:15 +02:00
Jacques Lucke
7f9d51853c UI: support searching in menus
The basic idea is very simple. Whenever a supported menu is open, one can just
start typing and this opens a search that contains all the (nested) menu entries.

The main downside is that this collides with accelerator keys. Those are the
underlined characters in each menu. For now, we just enable this new searching
behavior in a few selected menus: Node Add Menu, View3D Add Menu and
Modifier Add Menu.

This new functionality can be enabled for a menu by setting
`bl_options = {'SEARCH_ON_KEY_PRESS'}` to true in the menu type.

The status bar shows `Type to search...` when a menu is opened that supports search.

Pull Request: https://projects.blender.org/blender/blender/pulls/110855
2023-09-06 18:16:45 +02:00
Lukas Tönne
f9c733dbd6 Fix #112014: Crash making node group with multiple input links
e071288ab2 changed the "make node group" operator for new interfaces,
and in the process added incorrect lines removing a link when a group
input exists already. This crashes when there are multiple sockets
in selected nodes linked to the same non-selected output.

The link should not be removed, this is just lazy-initialization of the
group sockets.

Pull Request: https://projects.blender.org/blender/blender/pulls/112027
2023-09-06 18:01:05 +02:00
Julian Eisel
f20853a6c9 Fix possible crash when loading thumbnails from .blend files
When data-block/asset previews were not stored in the thumbnail cache
yet (or were outdated), we'd read them from .blend files. This could
lead to random crashes (but quite reliable with a small number of
previews to be read).

Wasn't clearing runtime memory which could lead to the
`PRV_TAG_DEFFERED` bit being set. This meant we would try to free
deferred preview data since eefee47a8a, which was just garbage memory.
2023-09-06 18:00:20 +02:00
Harley Acheson
d49c3d4d07 UI: Fixes for the highlighting of Selected Enums
Remove need for adding UI_BUT_LIST_ITEM, and replace use
of UI_BUT_ACTIVE_DEFAULT with UI_SELECT_DRAW

Pull Request: https://projects.blender.org/blender/blender/pulls/111938
2023-09-06 17:55:56 +02:00
Pablo Vazquez
9c1d9b6a82 UI: Hide widget emboss if inner color is fully transparent
Allows themes to have fully transparent widgets when the inner and
outline theme colors are set to 0.0f alpha.

Pull Request: https://projects.blender.org/blender/blender/pulls/111980
2023-09-06 17:53:43 +02:00
Harley Acheson
bb31df1054 UI: Allow "New Window" While in Maximized Area
While an editor is in "Maximize Area" mode, allow Window / New Window.

Pull Request: https://projects.blender.org/blender/blender/pulls/111999
2023-09-06 17:50:19 +02:00
Julian Eisel
a24fa35120 Cleanup: Avoid redundant/confusing variable in thubnail create function
This confused me plenty of times. If there are two local variables I
assume they contain different things. In fact these two were equal
throughout the function.
2023-09-06 17:41:44 +02:00
Bastien Montagne
3ce87be27f LibOverride: Expose the 'needs resync' status of libraries to RNA/Py API.
Could be useful for automated update/sanitizer tools in a production
pipeline.

Note that this propoerty is left editable for now, on purpose (external
tools may want to clear the flag).
2023-09-06 17:14:46 +02:00
Bastien Montagne
1a4225d746 Fix (studio-reported) missing clearing of 'need resync' library tag.
The `Library.tag` data is supposed to be runtime only, so needs to be
cleared when reading data from blendfile.

This fixes the 'need resync' status of a library staying around forever
once set, annoying visual warning in the Outliner.
2023-09-06 17:14:46 +02:00
Hans Goudey
4e97def8a3 Geometry Nodes: Expose sharp edge status with builtin nodes
Change the existing "Is Shade Smooth" node to be named "Is Face Smooth"
and add a new "Is Edge Smooth" node. Also give the "Set Shade Smooth"
node the ability to set face or edge smoothness.

The fact that the nodes process "smooth" data reversed from the builtin
"sharp" attributes can be reversed with versioning in a separate commit.

While it's tempting to abstract the sharpness status into a single node,
face and edge smoothness are accessed separately in edit mode, and the
subtlety of interacting with data on different domains would make that
confusing. Instead, a separate "Is Shade Smooth" node group asset will
give all the sharp elements taking into account both builtin attributes.

The fact that sharpness is stored separately on two domains makes the
best design for simple operations non-obvious. For example, you should be
able to remove all sharpness or make everything flat with a single node.
The behavior depends on whether the two attributes exist and the
combination of values between the domains.

---

![image](/attachments/c3f053c4-2b0f-44ac-9227-62071065fe56)

![image](/attachments/fd489fb3-314b-42ff-a5a9-e79578cbdfe7)

Pull Request: https://projects.blender.org/blender/blender/pulls/112029
2023-09-06 17:12:27 +02:00
Julian Eisel
1ee584c137 Cleanup: Add comments to thumbnail creation function
The function is quite confusing, this should clarify things a bit.
2023-09-06 16:58:07 +02:00
Julian Eisel
6659579abc Cleanup: Move variable declarations close to usage in thumbnail function
This function is rather big and it's not clear what state variables are
in without a bunch of scrolling around. Plus, having the declarations
close to the function calls that set them makes it more clear that these
functions use the variables as output parameters. So this change should
help understanding the function flow.
2023-09-06 16:56:30 +02:00
Philipp Oeser
5b6e1c0cf6 Fix #111898: Custom normals data transfer modifier does not work
Mistake/typo in 5e9ea9243b (mixing up very similarly named variables -
leading to heap buffer overflow).

Pull Request: https://projects.blender.org/blender/blender/pulls/112037
2023-09-06 16:54:46 +02:00
Bastien Montagne
00a36cbf24 Fix #111970: Regression: Crash with assertion after delete scene when some 3D Views have Local Collection enabled
This is a nasty gathering of several issues, main one being that 'local
collections' of 3DViews are still updated immediately instead of the
deferred update used for all other viewlayer cases.

The change in a16bcb6576 led to internal references to the Scene's
master collection to become invalid, which is the expected behavior.
But this turns the Scene's view_layers into invalid state too.

Ideally, there should never be resync of viewlayers of a scene being
deleted anyways.

For now, take the (hopefully!) safe approach of explicitely forbidding
any viewlayer update during ID deletion process, and deferring it at the
end of the process.

Note that this change may also give some marginal gerformance
improvements in some rare edge cases (like deleting a very heavy scene
with many collections and 'local collection' 3DViews ?).
2023-09-06 16:21:55 +02:00
Miguel Pozo
e850df06ee Workbench: Remove next postfix
Pull Request: https://projects.blender.org/blender/blender/pulls/111993
2023-09-06 15:54:50 +02:00
Miguel Pozo
2aa7961e6f Workbench: Remove old implementation 2023-09-06 15:54:48 +02:00
Clément Foucault
209bbf8274 GPU: Rename ROG to SubpassInput, add tests and documentation
This is in order to follow the vulkan terminology
like the rest of the module.

Other implementations (GL, VK) are not supposed to work yet.

Pull Request: https://projects.blender.org/blender/blender/pulls/112026
2023-09-06 14:39:38 +02:00
Miguel Pozo
fc08f220bf EEVEE Next: Volumes: Lighting integration improvements
Add the features missing from #107176

* Irradiance integration.
* Self-shadows.
* Receive shadows from shadow maps.

Shadow tagging works by iterating all the froxels in a
compute shader and tagging the exact same position
that will be sampled by the volume scatter shader.
Froxels that are fully transmissive, have no scattering,
or are behind opaque geometry, are skipped.

It also adds a LoD bias parameter for shadow tagging,
driven by the volumetric tile size.
This works for punctual shadows, but directional lights
would need a way to support re-direction between levels
at sampling time, which is out of the scope of this PR.

Pull Request: https://projects.blender.org/blender/blender/pulls/110809
2023-09-06 14:35:57 +02:00
Weizhen Huang
077022e45f Fix #112003: Principled Huang Hair renders black on horizontal particle hair
Curve normal is not available in legacy particle hair system. Construct
a local coordinate system instead of using a fixed normal direction [1,
0, 0] to avoid black appearance.
2023-09-06 14:18:29 +02:00
Clément Foucault
c1e11df732 GPU: Remove uneeded and incorrect os version check
Theses added checks are not working correctly and
are never true even on supported hardware with correct
target version.
2023-09-06 14:14:37 +02:00
Campbell Barton
ddf881ad9b Tools: add addr2line_backtrace to extract back-trace info on Unix/Linux
Since hiding symbols on Linux, in many cases only addresses are printed.
This utility can run run on the back-trace to replace addresses
with line & function information.

See: ./tools/utils/addr2line_backtrace.py --help for usage information.

Note that some examples online run addr2line directly and use the output
in the stack-trace, while convenient and acceptable in some cases, in my
tests addr2line can take over 20 seconds to complete for a single
address. Implement this as a post-process instead. Multi-processing to
prevent this taking too long (around ~23 seconds on my system).

Ref !111416.
2023-09-06 22:07:07 +10:00
Campbell Barton
90864d3fb8 Curve: operate on handles when the knot is selected
Change the behavior of transform and set-handle-type to operate on both
handles when the knot is selected.

This was an oversight in [0] which changed selection to select the knot
without the handles.

This makes curve bezier handles picking & transform match the Graph
Editor & grease pencil bezier curves.

This fixes issues transforming a bezier knot:

- Auto handles would be converted to "Aligned".
- Vector handles would be converted to "Free"
  with the vector handles being left in-place.

Resolves #111840.

Details:

Selecting only the knot vertex was done because the tweak tool no longer
de-selects when picking an already selected vertex to allow tweak to be
used to transform the selection (instead of always de-selecting all
before tweaking). Without this change, dragging a single handle required
manually de-selecting the knot and the opposite handle (3 clicks to
select a handle before dragging). Selecting only the knot solves this
but means transform needs to support tweaking a vertex (& it's handles)
without it's handles selected.

See design #96544.

[0]: 618f39fca2
2023-09-06 22:03:16 +10:00
Campbell Barton
3cfa61291b Fix curve set handle type not respecting hidden handles
The handle selection should be ignored when hidden.
Now set handle type considers all handles selected when handles
are hidden and the knot is selected.
2023-09-06 22:03:16 +10:00
Campbell Barton
8c85fd90cb Fix transforming a gpencil bezier vertex changing it's handle type
Selecting a gpencil bezier vertex and move it would change the handle
type when set to "Auto".

This happened because of a mismatch between transform flag use
and BKE_nurb_bezt_handle_test which would change the handle type
when only the vertex (knot) was selected.

Resolve by treating both handles as selected when the knot is selected.
2023-09-06 22:03:16 +10:00
Campbell Barton
78b6ed19f3 Curve: extend BKE_nurb_bezt_handle_test & BKE_nurb_handles_test
Replace use_handles with an enum that optionally uses handles
except when the vertex (knot) is selected in which case it behaves
as if both handles are selected.

Needed for nurb curves not to change handle type when only the
center point is selected (as is done in the graph editor).

No functional changes.
2023-09-06 22:03:16 +10:00
Campbell Barton
ccaafa318d Cleanup: negate handles_visible & name hide_handles
Match naming of curve transform conversion to avoid confusion.
2023-09-06 22:03:16 +10:00
Philipp Oeser
e924f316a7 Fix #112021: Crash dragging node groups into an empty node editor
Mistake in 30e3caaf82 (which wasnt checking if an `edittree` actually
existed).

Pull Request: https://projects.blender.org/blender/blender/pulls/112023
2023-09-06 13:51:18 +02:00
Philipp Oeser
0d5a094532 Fix #111983 : Context Path in the node editors is broken
Mistake in fa34992def (reversed conditional).

Pull Request: https://projects.blender.org/blender/blender/pulls/112020
2023-09-06 13:50:44 +02:00
Hans Goudey
f47de98def Fix: Node link drag search attachment to existing group input broken
Mistake in e071288ab2
2023-09-06 07:42:03 -04:00
Lukas Tönne
ad0a6fa4cb Fix #112016: Sockets in closed node panels still draggable.
Include the `SOCK_PANEL_COLLAPSED` flag in the general `is_visible`
function used to determine if operators can see the socket.

Pull Request: https://projects.blender.org/blender/blender/pulls/112019
2023-09-06 13:34:22 +02:00
Lukas Tönne
fb9916b305 Fix #111786: Node panels header blocks resizing the node border
The invisible button for the header covers the entire node width,
causing conflicts with the resize operator. Added a small margin to
ensure the button does not overlap with the node border.

Pull Request: https://projects.blender.org/blender/blender/pulls/112017
2023-09-06 13:30:48 +02:00
Lukas Tönne
8cb6f78e74 Fix #111966: Node group panels too small when using "both" type sockets
Node group sockets can be set to "both" for input/output, generating
two socket declarations in the same panel. Panel size was calculated
using only the items count, which is <= the actual declarations count.

This patch calculates actual declarations count as the panel size.
Panel size variable renamed to `num_child_decls` to distinguish from
`num_items`.

Pull Request: https://projects.blender.org/blender/blender/pulls/112013
2023-09-06 13:29:47 +02:00
Weizhen Huang
db4a2de620 Fix: EEVEE: Principled BSDF not matching Cycles near IOR == 1
Schlick's approaximation used by EEVEE is not accurate near `IOR == 1`,
especially when IOR is exactly one, there is no specular reflection and
the material should appear diffuse.
Cycles bypass the issue by lerping between the f0 and f90 color using
the factor derived from real Fresnel curve. In EEVEE we can use the same
trick as in Glass BSDF to smooth the transition at `IOR == 1`.
Note that at `IOR < 1` there is still mismatch, because f0 is prebaked
in the BTDF look up table. In the future if we color f0 using
`specular_tint`, we can split the table and use the BTDF LUT for the
specular component too.
2023-09-06 12:47:30 +02:00
Lukas Tönne
ba8d165d3b Fix #111804: Remove padding between node sockets when hidden
Node drawing was adding some extra padding for each socket even when it
isn't visible. This patch makes the padding conditional on whether the
socket is visible and only when there is preceding items that require a
spacer.

![Screenshot_20230905_162302](/attachments/da52983a-a053-44c8-9d5c-859f89a652a1)

Pull Request: https://projects.blender.org/blender/blender/pulls/111981
2023-09-06 10:34:18 +02:00
Philipp Oeser
2b5f97b8c4 Fix #111955: Animation player no longer responds to mouse input
Caused by C++ conversion in f07a112cb5.

Above commit was casting directly from event (instead of the event
data).

Pull Request: https://projects.blender.org/blender/blender/pulls/112010
2023-09-06 10:24:00 +02:00
Lukas Tönne
7e316b57d0 Fix #111936: Nodes forward compatibility data is not freed
Node group interfaces for 4.0 are written to blend files as legacy data
to enable forward compatibility. This data is meaningless in 4.0, so if
a blend file contains it, the data should be freed right away. The
code for freeing legacy data was incomplete.

Pull Request: https://projects.blender.org/blender/blender/pulls/111989
2023-09-06 10:23:51 +02:00
Jacques Lucke
8c43cc3f83 Cleanup: use menu type flag
Another flag is added in #110855.
2023-09-06 10:04:01 +02:00
Campbell Barton
48394561d7 Fix keyconfigs.remove(..) leaving dangling pointers
Removing key-configs that also had direct pointer access
left them pointing to freed memory.
2023-09-06 14:23:04 +10:00
Campbell Barton
1f01a64403 Cleanup: spelling in comments 2023-09-06 14:23:01 +10:00
Richard Antalik
b1526dd2c6 Fix #107726: Viewport animation render ignores start frame
This issue specifically happend if sound playback is synchronized by
Audaspace. In this case render engine can't override current frame.
`BKE_sound_sync_scene()` should return NaN as when rendering is in
progress, however viewport render operator doesn't set `G.is_rendering`.

Pull Request: https://projects.blender.org/blender/blender/pulls/111946
2023-09-06 04:40:39 +02:00
Campbell Barton
1f285a5ec8 Cleanup: early return to reduce right shift 2023-09-06 12:05:19 +10:00
Jacques Lucke
b5c89822ac RNA: return PointerRNA from rna create functions
There are a couple of functions that create rna pointers. For example
`RNA_main_pointer_create` and `RNA_pointer_create`. Currently, those
take an output parameter `r_ptr` as last argument. This patch changes
it so that the functions actually return a` PointerRNA` instead of using
the output parameters.

This has a few benefits:
* Output parameters should only be used when there is an actual benefit.
  Otherwise, one should default to returning the value.
* It's simpler to use the API in the large majority of cases (note that this
  patch reduces the number of lines of code).
* It allows the `PointerRNA` to be const on the call-site, if that is desired.

No performance regression has been measured in production files.
If one of these functions happened to be called in a hot loop where
there is a regression, the solution should be to use an inline function
there which allows the compiler to optimize it even better.

Pull Request: https://projects.blender.org/blender/blender/pulls/111976
2023-09-06 00:48:50 +02:00
Harley Acheson
8a3766e241 Fix #111017: Improvements to the drawing of Color Ramps
Color Ramp widget with themed outline, handling of line width changes,
padding fixes, scaling fixes, etc.

Pull Request: https://projects.blender.org/blender/blender/pulls/111903
2023-09-06 00:00:40 +02:00
Habib Gahbiche
f0acbd151d Fix: Build error with Audaspace turned on
To reproduce build error, set `WITH_AUDASPACE` to `ON` in `blender_lite.cmake` and build using `make lite`.

The problem is that the function `AUD_Sound_equalize` is declared in `blender/extern/audaspace/bindings/C/AUD_Sound.h` within `WITH_CONVOLUTION` and not `WITH_AUDASPACE`.

Pull Request: https://projects.blender.org/blender/blender/pulls/111994
2023-09-05 21:19:02 +02:00
Miguel Pozo
fdda220a64 FIx: Workbench: Texture-less materials in texture mode
Fallback to material color if there's no texture.
2023-09-05 19:47:28 +02:00