Commit Graph

132161 Commits

Author SHA1 Message Date
Hans Goudey
e2e4c95258 OBJ: Combine global scale parameter into transform matrix
Remove the need for the `calc_vertex_coords` function by combining
the scale into the existing transform needed to export vertex positions
in global space. This simplifies code and may slightly improve performance
(I only observed a few percent difference in the positions export, which is
not a slower part of the export).
2024-01-25 13:54:30 -05:00
Hans Goudey
a08e636bbc Cleanup: Use C++ math types in OBJ export 2024-01-25 13:10:22 -05:00
Hans Goudey
9f0c6e0685 Cleanup: Clarify OBJ IO use of Span, Vector, and Array
- Use Span where ownership is unnecessary
- Use Array when dynamic growth is unnecessary
- Use Vector in all other cases

Also remove unnecessary namespace specification.
2024-01-25 13:10:22 -05:00
Jeroen Bakker
49d07653f9 RenderTests: Fix Incorrect Command in Report
When running the render test for EEVEE-Next the command printed on
the report to update the reference images was incorrect. In stead of
displaying
`BLENDER_TEST_UPDATE=1 ctest -R eevee_next` it displayed
`BLENDER_TEST_UPDATE=1 ctest -R eevee next`.

The cause of this is that the title of the report is used to create
the command. EEVEE-Next has a space in its title which generates
an incorrect command.

A quick fix would be to replace spaces with underscores. But it would
be better to fix this more clearly by adding an attribute containing the
engine name.

This PR adds a `set_engine_name` method to the Report class. By
default the engine name is set based on the title.

Pull Request: https://projects.blender.org/blender/blender/pulls/117503
2024-01-25 18:55:28 +01:00
Harley Acheson
5c4779f872 UI: Remove Unnecessary Confirmation Options
Remove red_alert (not needed), confirm_default (redundant),
and cancel_button (not wanted). Rename confirm_button to
confirm_text.

Pull Request: https://projects.blender.org/blender/blender/pulls/117518
2024-01-25 18:49:03 +01:00
Julian Eisel
6a8fbfb15e BKE: Add support for boolean ID properties in json serializer
Boolean ID property support was added in ef68a37e5d, but the JSON
serializer for ID properties was not updated for it. This would be a
forward compatibility issue, if future json files containing boolean
properties would be read with old versions. Such properties are added
in #106303, for example.
2024-01-25 18:23:40 +01:00
Christoph Lendenfeld
1ea97dde6d Fix: Applying active keying set from menu not working
When a keying set is enabled and the keying set option
"Active Keying Set" was chosen from the menu, it would
give an error.

That is because the active keyingset uses a special
ID string (`"__ACTIVE__"`)
that doesn't actually exist as a keying set.
To fix it, explicitly check against that string and return
the active if encountered.

Pull Request: https://projects.blender.org/blender/blender/pulls/116192
2024-01-25 16:59:48 +01:00
Christoph Lendenfeld
d05d6f500b Fix: Consistency for appearing menu when applying keying sets
The recently landed PR #115798has made it so the
hotkey `K` would call `anim.keyframe_insert_menu` with the property
`always_prompt` set to `True`.
This property still defaulted to `False` when called
from the menu leading to inconsistent
behavior when a keying set is active.

Fix it by setting `always_prompt` to `True` for the menu entries.

Pull Request: https://projects.blender.org/blender/blender/pulls/117511
2024-01-25 16:18:05 +01:00
Sergey Sharybin
ca767644eb Compositor: Align matte edge calculation to GPU implementation
The CPU implementation had the following downsides:

- The kernels sizes below 3 did not make much sense, often leading
  to a full white image.
- The way how the total number of pixels in the kernel was calculated
  quite strangely.

From these points of view the GPU compositor behaves more user friendly.

There is a versioning code which lowers the kernel size, to match the
result prior to these tweaks.

Pull Request: https://projects.blender.org/blender/blender/pulls/117505
2024-01-25 15:57:15 +01:00
Sergey Sharybin
6f681105ec Cycles: Skip denoising during bake when pass does not support denoising
This changes fixes the slowdown when baking data passes like Normal with
the denoiser enabled on scene settings.

When baking to 4K textures denoising could take considerable amount of
time, which is better be avoided.

Pull Request: https://projects.blender.org/blender/blender/pulls/117483
2024-01-25 15:56:20 +01:00
Alaska
ddc0aceefd Cycles UI: Hide HIP-RT settings on Linux
Hide the HIP-RT setting on Linux since it's not supported there yet.

Pull Request: https://projects.blender.org/blender/blender/pulls/117492
2024-01-25 15:16:13 +01:00
Christoph Lendenfeld
87fc8e8ddd Anim: Add hotkey for keying set operators
This is in response to feedback to the changes from #113504
While it does simplify inserting keyframes,
sometimes artists want to insert keys only to e.g. Location.
This takes longer to do now, since the option is in a menu.

This PR changes the following:

* new `K` hotkey to bring up the "Keying Set" menu.
This will always show the menu, even if a keying set is active.

* `Shift + K` will open a menu to set the active keying set

* with "Pie Menu on Drag" enabled in the user preferences,
hitting `I` and moving the mouse will bring up a pie menu
to insert only specific transform channels

Conceptually this separates the keying set behavior from the
insert keyframe behavior.
`I` will always add keyframes.
While `K` always shows keying set options.

Pull Request: https://projects.blender.org/blender/blender/pulls/115798
2024-01-25 14:46:04 +01:00
Sergey Sharybin
9fdf3bc1f4 Fix missing generation of alpha difference images in render tests
The part of the patch wasn't properly applied from a working branch,
and it wasn't very visible because the development environment already
had all files on disk.

Pull Request: https://projects.blender.org/blender/blender/pulls/117504
2024-01-25 14:20:30 +01:00
Aras Pranckevicius
5ed2eea0f6 ImBuf: Refactor pixel interpolation functions
There exist a bunch of "give me a (filtered) image pixel at this location"
functions, some with duplicated functionality, some with almost the same but
not quite, some that look similar but behave slightly differently, etc.
Some of them were in BLI, some were in ImBuf.

This commit tries to improve the situation by:
* Adding low level interpolation functions to `BLI_math_interp.hh`
  - With documentation on their behavior,
  - And with more unit tests.
* At `ImBuf` level, there are only convenience inline wrappers to the above BLI
  functions (split off into a separate header `IMB_interp.hh`). However, since
  these wrappers are inline,   some things get a tiny bit faster as a side
  effect. E.g. VSE image strip, scaling to 4K resolution (Windows/Ryzen5950X):
  - Nearest filter: 2.33 -> 1.94ms
  - Bilinear filter: 5.83 -> 5.69ms
  - Subsampled3x3 filter: 28.6 -> 22.4ms

Details on the functions:
- All of them have `_byte` and `_fl` suffixes.
- They exist in 4-channel byte (uchar4) and float (float4), as well as
  explicitly passed amount of channels for other float images.
- New functions in BLI `blender::math` namespace:
  - `interpolate_nearest`
  - `interpolate_bilinear`
  - `interpolate_bilinear_wrap`. Note that unlike previous "wrap" function,
    this one no longer requires the caller to do their own wrapping.
  - `interpolate_cubic_bspline`. Previous similar function was called just
    "bicubic" which could mean many different things.
- Same functions exist in `IMB_interp.hh`, they are just convenience that takes
  ImBuf and uses data pointer, width, height from that.

Other bits:
- Renamed `mod_f_positive` to `floored_fmod` (better matches `safe_floored_modf`
  and `floored_modulo` that exist elsewhere), made it branchless and added more
  unit tests.
- `interpolate_bilinear_wrap_fl` no longer clamps result to 0..1 range. Instead,
  moved the clamp to be outside of the call in `paint_image_proj.cc` and
  `paint_utils.cc`. Though the need for clamping in there is also questionable.

Pull Request: https://projects.blender.org/blender/blender/pulls/117387
2024-01-25 11:45:24 +01:00
Sergey Sharybin
f11292104d Render Tests: Separate difference of Color and Alpha
This change fixes confusion situation when the render output
is an RGBA image: the difference in color was not visible in
the report because alpha channel was all zeros. This is due
to idiff performing per-channel difference.

The solution to this problem is to have separate images for
color and alpha difference, which makes it clear where the
difference actually is coming from.
2024-01-25 10:04:16 +01:00
Jason Fielder
81c1490877 Fix #117169: Resolve crashing hair and curve tests in Metal
Remove divergent code paths for hair refinement. Metal
previously opted for transform-feedback based hair
refinement due to improved performance, but best
to utilise the same compute path with new engines in
mind.

Separate PRs can be made to optimize the compute
path.

Authored by Apple: Michael Parkin-White

Pull Request: https://projects.blender.org/blender/blender/pulls/117477
2024-01-25 05:02:19 +01:00
Campbell Barton
8841990764 Extensions: use the TOML manifest as a source for extensions bl_info 2024-01-25 14:36:20 +11:00
Campbell Barton
b686f2a536 UI: show the version as a string for extensions
Extensions use SEMVER, not a tuple of numbers.
2024-01-25 14:36:20 +11:00
Campbell Barton
f212be48ee Cleanup: reduce right shift in add-ons UI 2024-01-25 14:36:20 +11:00
Campbell Barton
4e3d24d7b5 Cleanup: assign variables for items in the add-ons UI 2024-01-25 14:36:20 +11:00
YimingWu
f2d08d2cbe Fix #104982: Ensure view layer when baking line art.
This is more like a hack, which ensures view layer depsgraph evaluation
when baking line art. It should fix the problem where the camera marker
switch would cause `view_layer->object_bases_array == null`.

Pull Request: https://projects.blender.org/blender/blender/pulls/117227
2024-01-25 04:33:37 +01:00
Campbell Barton
6aede44fb7 PyAPI: remove checks for add-ons pre 2.8x
This made sense when migrating from 2.7x, now 2.8x add-ons may also
have issues in 4.1 so this check isn't so relevant.
2024-01-25 13:00:48 +11:00
Campbell Barton
b8b1189bc4 Cleanup: assign a variable for the extension module with a trailing "."
This is used in enough places to simplify checks.
2024-01-25 13:00:48 +11:00
Campbell Barton
4b4ebc0f5c Unbreak build with freestyle from syntax error
Error in 7436b578dd.
2024-01-25 12:53:33 +11:00
Campbell Barton
c5dd51a4dc Fix syntax error in workbench_render_tests
Correct even if the test isn't used, since syntax errors can trip up
checking tools.
2024-01-25 10:37:30 +11:00
Campbell Barton
7436b578dd Cleanup: force wrapping all uses of PyDoc_STRVAR
Without this, minor edits can re-indent the whole doc-string at a
different level, causing diffs to be unnecessary noisy.
2024-01-25 10:22:16 +11:00
Campbell Barton
0ea0573349 PyDoc: remove unnecessary newlines which caused invalid syntax
Resolves all warnings building Python docs.
2024-01-25 10:22:15 +11:00
Campbell Barton
e89fdadf8e CPPCheck: exclude large lookup table in checks 2024-01-25 10:09:00 +11:00
Campbell Barton
8f4f4d62bc Cleanup: include release/datafiles/ to "make check_mypy"
Also add type hints to some scripts.
2024-01-25 10:06:29 +11:00
Campbell Barton
d44e09cf32 Cleanup: minor simplification to icon scripts inkscape detection
Only set the inkscape_bin when the environment variable isn't set.
2024-01-25 09:56:06 +11:00
Jesse Yurkovich
bc39b1b27c Fix: build break 2024-01-24 22:07:56 +01:00
Jesse Yurkovich
0c0885d323 Fix #117411: In memory UDIMs fail to pack correctly
Broken from 72ab6faf5d

Because the `IMA_GEN_TILE` flag was not cleared during the memory pack,
the tile was regenerated on reloading. Mimic what is done during save
and clear the flag if all tiles pack successfully.

Pull Request: https://projects.blender.org/blender/blender/pulls/117472
2024-01-24 21:28:48 +01:00
Jesse Yurkovich
7bb78be256 Cleanup: Use CLOG instead of iostream for USD logging
Straightforward change from usage of iostream to CLOG.

Using CLOG unifies info/warning/error logging under a common
infrastructure that provides facilities for standardized filtering,
categorization, and printing. It also removes direct dependencies on
`<iostream>` which can be detrimental to compile times.

Pull Request: https://projects.blender.org/blender/blender/pulls/117429
2024-01-24 21:27:59 +01:00
Bastien Montagne
03e0de14c5 Fix (unreported) wrong logic in reports about unknown operators.
This (likely copy-pasted) check to report either an unknown operator
type, or a known operator type missing its RNA struct definition, had a
reversed logic. It would report a 'missing srna' for unknown operator,
and vice-versa.
2024-01-24 21:02:27 +01:00
Germano Cavalcante
99fd9ced5c Cleanup: Pass some non-nullptr pointers by reference
Passing non-nullptr pointers by reference for cleaner function
interfaces.
2024-01-24 20:38:46 +01:00
Brecht Van Lommel
8087dd9e96 Cleanup: Cycles: use one fewer object struct member for motion data 2024-01-24 20:17:13 +01:00
Brecht Van Lommel
5b6f2ef5a2 Cleanup: Cycles: rename some legacy names to new ones 2024-01-24 20:17:13 +01:00
Hans Goudey
f7303dbaa2 Cleanup: Move curves sculpt poll functions to C++ namespace 2024-01-24 14:09:15 -05:00
Brecht Van Lommel
b689027b3a Fix #114028: Cycles displace splits faces with smooth and flat faces
Cycles can use a per face flag to determine if a face is smooth or flat,
and there is no need to use corner normals in such cases. So revert to
not doing that as before, which also saves a bit of memory.

There is a pre-existing issue where faces are split by sharp edges and
autosmooth, which is not solved by this. It's only fixing the regression.
2024-01-24 19:55:31 +01:00
Hans Goudey
95dbea0a61 Cleanup: Remove unused include
BLI_time.h was unused after 0d420ee97a.
2024-01-24 13:19:52 -05:00
Hans Goudey
75f06bf92a Fix #117459: Sharp shading from only edges ignored in edit mode
The fix in the logic is similar to 5875349390. It's needed
because we now skip computing face corner (BMLoop) normals when the
BMesh is completely flat shaded. It might be completely flat shaded
just because of edge smoothness though, which wasn't taken into
account before.
2024-01-24 12:59:03 -05:00
Brecht Van Lommel
7c9c916b02 Build: improve make icons detection of Inkscape and Blender on macOS
Respect INKSCAPE_BIN and BLENDER_BIN environment variables if set,
make expected Inkscape path show when missing, simplify code.
2024-01-24 18:55:54 +01:00
Sean Kim
407dbdbcdc Fix: make icons command fails on macOS due to not finding inkscape
The INKSCAPE_BIN environment variable set by GNUmakefile was overriding
a good default path, now bring it in line with other icons scripts.

Pull Request: https://projects.blender.org/blender/blender/pulls/117464
2024-01-24 18:52:40 +01:00
Brecht Van Lommel
ae27daf834 Fix: only use preserveInvariance for Z fighting when supported by macOS
Pull Request: https://projects.blender.org/blender/blender/pulls/117484
2024-01-24 18:30:26 +01:00
Hans Goudey
6fc7f99a95 Cleanup: Make format 2024-01-24 12:24:12 -05:00
Hans Goudey
9ab356fe6e Cleanup: Return Vector for View Layer objects and bases retrieval
This simplifies code using these functions because of RAII,
range based for loops, and the lack of output arguments.
Also pass object pointer array as a span in more cases.

Pull Request: https://projects.blender.org/blender/blender/pulls/117482
2024-01-24 18:18:14 +01:00
Hans Goudey
d02d6ec4e5 Cleanup: Remove unnecessary keywords in C++ headers 2024-01-24 11:46:39 -05:00
Hans Goudey
500f09b88a Cleanup: Move metaball BKE headers to C++ 2024-01-24 11:46:39 -05:00
Hans Goudey
f5bb6ac8df Cleanup: Move armature_intern.h to C++ 2024-01-24 11:46:39 -05:00
Hans Goudey
0896e2805a Cleanup: Move mesh_intern.hh to C++ 2024-01-24 11:46:39 -05:00