Color the interpolation icons matching the new interpolation theme
settings added in 75eaecf350
This makes a clearer connection with the lines drawn in Dope Sheet.
See PR for details and screenshots.
Pull Request: https://projects.blender.org/blender/blender/pulls/148215
This PR increases the points shown on the Curve Mapping widget a bit,
with the selected ones ever larger. This is more in line with what we
saw in 4.5. This also draws the points with AA by changing to a
different shader - which means drawing the selected ones separate from
the unselected ones.
Pull Request: https://projects.blender.org/blender/blender/pulls/148176
Blender 5.0 got a theme overhaul, removing hundreds of options and
adding some more. While versioning was attempted to keep themes
looking as close as possible, some settings are impossible to guess
so they require manual editing.
Reset the theme to the default. Similarly to how it was done in other
major overhauls (2.80, 3.0).
Documentation and tools to migrate themes will be available at:
https://developer.blender.org/docs/release_notes/5.0/user_interface/
Pull Request: https://projects.blender.org/blender/blender/pulls/147637
When strokes from to different layers get joined together, if one layer
had the `resolution` attribute and the other did not. The new
`resolution` attribute would be left with uninitialized values and then
a crash would happen.
This fixes this by filling all attributes that didn't exist with their
default value.
This also ensures that when strokes are removed, the drawing is
tagged as dirty.
Pull Request: https://projects.blender.org/blender/blender/pulls/147948
Perform delayed freeing of the geometry BVHs similar to OptiX.
Previously BLAS memory was allocated in the device class as part of
device_update, but released in the BVHHIPRT destructor which gets called
when deleting geometry outside of device_update.
To avoid the GPU accessing unmapped memory, do a delayed free of this
memory in the device class as part of either device_update or device
destruction. This ensures it is in sync with other device memory changes.
Fix#148276Fix#139013Fix#138043Fix#140763
Pull Request: https://projects.blender.org/blender/blender/pulls/147247
- "Acion Slot" -> "Action": typo.
- "Specifies the input node used the created zone" -> "by the created
zone": typo.
- "No reference available {!r}, Update..." -> "update": lower case.
- "uninitialized file-list" -> "Uninitialized": sentence case.
Some issues reported by Alexandr Fatih.
Pull Request: https://projects.blender.org/blender/blender/pulls/148265
Since "Add Rest Position" is not a shape key property, move it out of
`draw_shape_key_properties`. That way property will be drawn even when
list is empty.
See PR description for photos
Pull Request: https://projects.blender.org/blender/blender/pulls/147685
Since recent change in code of edge deduplication there is bunch of
reports about regressions whose were not found by tests. This commit
add some of recently explored cases to test coverage, right from
#147961. Not sure how to cover other know case from #147797 due to
use of USD file as source.
Pull Request: https://projects.blender.org/blender/blender/pulls/148237
Caused by 113d91aba8
Code first gathers a list of all vertexgroups on all objects.
Then it iterates the objects to join, and for each of them, puts their
vertexgroups in an index map.
However (by a typo?), it was doing it for the `active mesh` (instead of
the one currently visited) over and over again, resulting in weights
from other objects written to `def_nr` from groups of the `active mesh`.
Now corrected.
Pull Request: https://projects.blender.org/blender/blender/pulls/148259
This is an alternative to ba0f73d076. I'm not exactly sure why that on
didn't work yet. Seems like there is some hidden state somewhere, not sure.
Now this fix is more similar to what is done in `curves_blend_write`.
Pull Request: https://projects.blender.org/blender/blender/pulls/148267
Caused by some tricky use after-free / stack corruption.
This affect both Cycles and EEVEE.
The `sms` local variable is getting dereferenced by `get_inscattering`
inside the threaded for loop but is passed by copy to the lambda expression.
This makes its lifetime ill-defined in a multithreaded context.
I am not fully sure about the rules at play here so maybe my understanding
is wrong. But removing the call to `get_inscattering` avoids the crash.
Note that `SkyMultipleScattering` is also very big (it contains the whole LUT).
So copying it might have caused stack overflow. But that should trigger a
system interupt.
Passing everything by references fixes the issue.
This seems to be safe since all as the other local variables are `const` anyway.
Also the loop doesn't seem to modify the one that aren't.
Pull Request: https://projects.blender.org/blender/blender/pulls/148260
While more of a theoritical issue currently, this change is a
pre-requisite to support properly compo nodes duplication in 'linked
copy' case (see !148210).
Also add a basic unittest for this case.
Pull Request: https://projects.blender.org/blender/blender/pulls/148222
BLI code for enums that are meant to be used as "bit flags" defined
an ENUM_OPERATORS macro in BLI_utildefines.h. This cleans up things
related to said macro:
- Move it out into a separate BLI_enum_flags.hh header, instead of
"random bag of things" that is the current place,
- Update it to no longer need manual indication of highest individual
bit value. This originally was added in a31a87f89 (2020 Oct), in
order to silence some UBSan warnings that were coming
from GPU related structures (looking at current GPU code, I don't
think this is happening anymore). However, that caused actual
user-visible bugs due to incorrectly specified max. enum bit value,
and today 14% of all usages have incorrect highest individual
bit value spelled out.
- I have reviewed all usages of operator ~ and none of them are
used for directly producing a DNA-serialized value; all the
usages are for masking out other bits for which the new ~
behavior that just flips all bits is fine.
- Make the macro define flag_is_set() function to ease check of bits
that are set in C++ enum class cases; update existing cases to use
that instead of three other ways that were used.
Pull Request: https://projects.blender.org/blender/blender/pulls/148230
Since matrices are usually indexed **row first**, displaying matrices in
the UI seems flipped.
They are stored as flat arrays.
When `matrix[1][0]` is accessed via python, the logic from
`pyrna_py_from_array_index` will actually look up index 2 in the flat
array (rightfully so).
But UI code was flipped in that regard.
The second value in the flat array **should** show at row 1 column 0,
but it currently doesnt.
Now (hopefully) handled properly (not only in `ui_item_array` but also
made code in `ui_item_rna_size` detect proper row count for a `height`)
Pull Request: https://projects.blender.org/blender/blender/pulls/148197
Reported for the geometry nodes gizmos, but in general `cage2d`,
`cage3d` and `arrow` were affected (so for example Forcefield arrows, UV
editing transform tool, Lamp angle gizmo, ...)
`gizmo_cage3d_modal`, `gizmo_cage2d_modal` and `gizmo_arrow_modal` add a
`WM_event_add_mousemove` which ... lets the modal run even if the mouse
does **not** move...
This seems to date back to d8f931c9b7 in the arrow gizmo, others
probably just copied from there (not the DialGizmo though), did not do
further git archeology.
Propose to just remove `WM_event_add_mousemove` (even though there
_might_ still be reasons for this -- could not spot any though...)
Pull Request: https://projects.blender.org/blender/blender/pulls/146310
The issue is in the `ED_region_overlap_isect_` family of functions I
believe. Their purpose is to check if a coordinate is in the
"non-transparent" or opaque parts of the overlapping region.
These are getting event coordinates (in window space), converted to
region relative space (substracting region->winrct).
Comparison is in view space (through `UI_view2d_region_to_view_y`)
to account for scrolling and zooming.
The thing where it goes wrong is that we are actually comparing to
`region->v2d.tot` (this can be huge, most of it not visible), where I
think we should be comparing to `region->v2d.cur` (that is the part that
is actually visible...)
Swapping `region->v2d.tot` with `region->v2d.cur` is what this PR does.
Pull Request: https://projects.blender.org/blender/blender/pulls/146032
Oversight in 4bede1b555
`transformApply` / `transformEnd` already gives us a `NC_MASK |
NA_EDITED` notifier (via `viewRedrawForce`), so listen to that in
`image_main_region_listener`.
NOTE: alternatively, we could send an appropriate notifier in
`special_aftertrans_update__mask` (or remove the condition from the one
that is already there), with the difference that the gizmo would only
update after the transform is confirmed -- which may or may not be
desired
Pull Request: https://projects.blender.org/blender/blender/pulls/146292