Commit Graph

106162 Commits

Author SHA1 Message Date
Sergey Sharybin
aca0cf27e3 Fix cryptomatte GPU compositor node on NVidia Linux
This commit fixes node_cryptomatte test in the matte category
when using GPU compositor on Linux with NVidia GPU. Before this
fix the result image was squished horizontally.

The issue was caused by mismatch in the shader info and the
actual allocation of the matte image.

Pull Request: https://projects.blender.org/blender/blender/pulls/117475
2024-01-24 13:58:47 +01:00
Thomas Dinges
c683925f6d Cleanup: make format 2024-01-24 13:28:51 +01:00
YimingWu
756f7cf1e8 GPv3: Add Catmull-Clark option in subdivide modifier
This adds the "Catmull-Clark" option to the subdivide modifier.
Since this option is creating 2^n segments, the "Simple" method was adjusted to do the same.
This is now consistent with the old GPv2 modifier.

Pull Request: https://projects.blender.org/blender/blender/pulls/117382
2024-01-24 13:14:07 +01:00
Pratik Borhade
d5766dfdce Fix: Obj crash exporting curve without modifier property
`BKE_object_get_pre_modified_mesh` returns curve object data, later
accessing non-existing edge/face data triggered the crash.
`apply_modifiers` seems valid for mesh data only.

Pull Request: https://projects.blender.org/blender/blender/pulls/117471
2024-01-24 12:37:08 +01:00
Omar Emara
c60321f6dc Fix #115983: Skip writing output if no Composite node exists
Fix #115983: Crash when saving empty Composite output

Blender crashes when the compositor tries to save en empty composite
output through the render pipeline. This happens when no Composite node
exist and no Render Layers node is used, essentially producing an empty
render result.

We fix this by only saving the composite output if a Composite node or a
Render Layers node exist.

Pull Request: https://projects.blender.org/blender/blender/pulls/117129
2024-01-24 12:00:50 +01:00
Sean Kim
1e4f133950 Sculpt: Add brush settings for view & normal automasking values
This pull request adds the ability for the `Limit` and `Falloff` values for the View and Normal automask modes to be applied per-brush instead of modifying the global tool value.

Previously, while the flag settings were stored at the brush and global level, the values would always change the global value even when using the advanced tab of the brush menu.

## Testing
* `make test` results in 3 failures (49 - io_wavefront, 134 - compositor_distort_cpu, 323 - imbuf_save), but these tests appear to fail even prior to any changes being applied when running locally
* Manual testing with older version blend files to ensure that the value is defaulted correctly.
* Visual testing to verify that brush values are favored over global values.

Addresses #115174

Pull Request: https://projects.blender.org/blender/blender/pulls/117433
2024-01-24 10:59:50 +01:00
Bastien Montagne
3c62917213 Fix #112423: Recover Autosave breaks library paths.
Trying to 'recover' a normal (non-auto-saved) blendfile would break any
relative paths.

Caused by 88b24bc6bb, it looks like this commit did not take into
account readfile side of the code?

Pull Request: https://projects.blender.org/blender/blender/pulls/115048
2024-01-24 10:49:24 +01:00
Sergey Sharybin
6414ca6510 Fix invalid assignment of a clamped color in paint
Was recently introduced by #117460

Pull Request: https://projects.blender.org/blender/blender/pulls/117473
2024-01-24 10:13:29 +01:00
Omar Emara
70a8a9e4d9 Compositor: make Flip node works in local space
This patch changes the operation space of the Flip node from the global
space to the local space. This means that the Flip node will now flip
the image without changing its location.
2024-01-24 11:08:41 +02:00
Sergey Sharybin
03828a47f4 Fix slow toggling of scene tool settings
For example, snapping or pivot point.

The slowdown happens in complex files with drivers which use scene
properties as input. Can be seen in the demo file from #117335.

This change adds ability to mark RNA property as required to bring
the evaluated ID up-to-date, but not do possibly expensive tag for
drivers.

The tool settings possibly can be tagged as do-not-do-deg-tag at
all, but safer seems to follow the current behavior a bit closer.

Pull Request: https://projects.blender.org/blender/blender/pulls/117405
2024-01-24 10:05:33 +01:00
Jacques Lucke
0d420ee97a BLI: use less hacky source of randomness when generating random seed 2024-01-24 09:59:54 +01:00
Sergey Sharybin
52a31ce31b Fix blur processing in keyign node in GPU compositor
Align the blur filter with the CPU compositor, which uses box filter.
The pre filter was already using box filter, while the post filter was
using gaussian filter.

Additionally, GPU compositor was doing twice amount of blur due to the
mismatch between radius and size semantic: node setting is in size,
while the separable blur expects radius.

Pull Request: https://projects.blender.org/blender/blender/pulls/117454
2024-01-24 09:55:51 +01:00
Sergey Sharybin
dd1374fb7b Fix keying matte operation in GPU compositor
The calculation of the matte could lead to a division-by-zero
leading to completely different results on different graphics
backends.

Perform the same checks of the input and key saturation before
performing division as it is done in the CPU compositors.

The `node keying matte` test is still failing on Metal, but the
look of the result is much closer to what it would be.
2024-01-24 09:55:48 +01:00
Sergey Sharybin
aecf1fba84 Fix #116098: Change default texture mapping for brushes to View Plane
The Tiled default is the least commonly used mapping mode, switch the
default to something that is more commonly used.

Do it for all modes, since according to Julien it is reasonable default
behavior.

Pull Request: https://projects.blender.org/blender/blender/pulls/116933
2024-01-24 09:48:27 +01:00
Jason Fielder
190567f941 EEVEE Next: Optimize HiZ with fast image load store routines
Authored by Apple: Michael Parkin-White

Pull Request: https://projects.blender.org/blender/blender/pulls/116953
2024-01-24 09:36:25 +01:00
Campbell Barton
9cc6ee75e7 Extensions: support using a default local user directory
This is needed so extensions repositories can reference
user-script directories without them having hard-coded paths
which will be invalid when upgrading a Blender version.
2024-01-24 16:50:32 +11:00
YimingWu
f54348edc9 GPv3: Smooth modifier
Smooth modifier ported to Grease Pencil 3.0

Exposed `smooth_curve_attribute()` from `grease_pencil_edit.cc`
to achieve the smoothing effect. It will not be the exact same result
as the old algorithm.

Pull Request: https://projects.blender.org/blender/blender/pulls/116975
2024-01-24 04:36:36 +01:00
Hans Goudey
99f9084bee Cleanup: Replace some CLAMP macros with C++ functions
Pull Request: https://projects.blender.org/blender/blender/pulls/117460
2024-01-23 21:10:33 +01:00
Hans Goudey
1c503c094c Outliner: Add option to apply object modifier
In discussions about #93551, some users mentioned it would be helpful
to have the ability to apply modifiers from the outliner. Adding that
ability is quite simple, and it makes sense since we already have the
option to remove modifiers there.

---

![image](/attachments/e64c0dd4-a6ec-4115-a46b-7d2fca487c07)

Pull Request: https://projects.blender.org/blender/blender/pulls/117349
2024-01-23 20:54:13 +01:00
Harley Acheson
ba096bae18 UI: TreeView Hierarchy Line with Region Zoom
Adjust size and positions of TreeView hierarchy lines as region is zoomed.

Pull Request: https://projects.blender.org/blender/blender/pulls/117420
2024-01-23 20:39:15 +01:00
Hans Goudey
91b4f9f1f6 Data Transfer: Avoid unnecessarily computing existing normals
If the mix factor means the old values won't be used at all,
the existing corner normals from before the modifier don't
matter and we can skip computing them.
2024-01-23 12:42:31 -05:00
Hans Goudey
da6405fee7 Fix #117410: Corner normals cache not reset on geometry clear
For example, the old corner normals would be used when a mesh's
geometry is completely replaced (when applying a modifier).
2024-01-23 12:42:31 -05:00
Brecht Van Lommel
e0ff7731e0 Core: make BKE_appdir functions thread safe, using optional<string>
The static variables can cause the wrong path to be used, for example
when asset indexing in a thread affects loading toolbar icons.

Fix #117416: toolbar icon randomly missing

Pull Request: https://projects.blender.org/blender/blender/pulls/117419
2024-01-23 18:38:15 +01:00
Harley Acheson
4e483dad4b Fix: String Offset Assert in Color Picker
Dragging on a color value slider in the color picker will assert for
an invalid string offset. We now using std::string for uiBut->str, the
string is empty and we are checking against str[1]. This replaces that
with an std::basic_string::find which handles this fine.

Pull Request: https://projects.blender.org/blender/blender/pulls/117455
2024-01-23 17:39:55 +01:00
Philipp Oeser
d8b085089c Fix: 3D Viewport header missing update changing paintslots
Since 3b5df8a7ea, we are displaying a "canvas picker" in the 3DView
header. In texture paint mode, this gives us the active paintslot to
paint on, however the header wasnt updating to another slot.

See https://projects.blender.org/blender/blender/pulls/
112227#issuecomment-1018440

Part of #112186.

Pull Request: https://projects.blender.org/blender/blender/pulls/115802
2024-01-23 17:27:28 +01:00
Harley Acheson
606723b3e2 UI: More Defaults for Search Placeholders
When looking for automatic placeholder string For UI_BTYPE_SEARCH_MENU,
use property UI Name as last resort.

Pull Request: https://projects.blender.org/blender/blender/pulls/113792
2024-01-23 17:15:50 +01:00
Richard Antalik
06be6c5fb1 IMB: Add gif to list of movie extensions
Pull Request: https://projects.blender.org/blender/blender/pulls/117343
2024-01-23 15:55:54 +01:00
Hans Goudey
eb23b299db Fix: Add versioning for change in object info scale behavior
When the object info node was originally created, the transform of an
object with a negative scale would also have negative scale. At some
point that behavior changed though, and the matrix always had positive
scale.

The negative scale is the more expected behavior (see #104926), and
66dc0ebf2e restored that behavior. But node setups started to
rely on the non-negative behavior in the meantime. So this commit adds
an absolute value node with versioning.

The versioning is added to the 401.10 file subversion bump, since
that's when the behavior changed back to the current state.

Pull Request: https://projects.blender.org/blender/blender/pulls/117425
2024-01-23 15:34:17 +01:00
Lukas Tönne
f72dbc1ef8 Fix #117422: Move undefined type removal behind after-linking-versioning
There are still node versioning bits running after linking, for example
`version_geometry_nodes_replace_transfer_attribute_node`. This code
relies on node types being untouched at that point.

Move the unknown node type replacement from `ntreeSetTypes` into the
`ntreeUpdateAllNew` function. This is called _after_ late versioning.

Pull Request: https://projects.blender.org/blender/blender/pulls/117441
2024-01-23 15:15:08 +01:00
Pratik Borhade
71925e9157 Fix: Debug crash when translating more than 1024 verts
Caused by 1bcf3933a8
This is due to accessing value of uninitialized variable.

Pull Request: https://projects.blender.org/blender/blender/pulls/117442
2024-01-23 12:40:48 +01:00
Jeroen Bakker
cd756143cf OpenGL: Fix Shader Linking Error
When a shader performs a geometry shader injectoin to work around
features that are not supported natively on the GPU (viewport,
barycentric coordinates, layered rendering), linking would fail.

The reason was that the geometry shader was stored in a slot that was
patched by the specialization constants, resulting in an empty geometry
shader. An empty shader can be compiled, but doesn't match the interface
with other stages, so the linking would fail.

This fixes the issue that EEVEE crashed on Intel iGPUs. These GPUs
don't support viewports.

Pull Request: https://projects.blender.org/blender/blender/pulls/117440
2024-01-23 11:12:30 +01:00
Omar Emara
46322e4927 Fix: Compositor Texture node differ between CPU and GPU
The compositor Texture node differ between CPU and GPU. That's because
CPU falls back to the texture intensity as the alpha channel if no alpha
channel exists. And it also broadcast the texture intensity to all color
channels if no RGB evaluation exist. So adjust the GPU implementation to
follow that.
2024-01-23 11:59:38 +02:00
Campbell Barton
6cc8ac7cb3 Cleanup: rename ImBuf anim & anim_index structs
Rename: anim -> ImBufAnim
Rename: anim_index -> ImBufAnimIndex

There were cases where removing redundant "struct" qualifier caused
a warning since the name of the struct member was also anim.

Use uppercase type name to conform with other types names.

Ref !117394
2024-01-23 20:26:55 +11:00
Jeroen Bakker
30a152216e EEVEE: Change UI Naming
This PR renames the UI names of EEVEE render engines, due to the decision to
postpone EEVEE-Next to Blender 4.2.

* `EEVEE` is now named `EEVEE-Next`.
* `EEVEE (Legacy)` is now named `EEVEE`.

Pull Request: https://projects.blender.org/blender/blender/pulls/117437
2024-01-23 10:06:15 +01:00
Philipp Oeser
c16b0216fe Fix #68436: External Particle Disk Cache Playback Is Broken
This has been broken since 2.8.

The highlevel reason for this is that the "info file" (saved as frame
zero) was not written anymore.
Reason for that in turn is that when calling BKE_ptcache_write outside
the bake job, the PTCacheID calldata (a psys in our case) is not the
evaluated particle system, causing a check for totpoint to fail (these
were always zero).

Deeper reasoning is unclear, no further investigations were done as to
why/when this happened.

The solution proposed here is using the evaluated psys when writing the
info frame (and this is isolated to just this spot and only to particle
systems). File then gets
written and can/will be read when using this as an external disk cache
in another file.

Pull Request: https://projects.blender.org/blender/blender/pulls/117401
2024-01-23 09:37:41 +01:00
Jeroen Bakker
062a9f9540 Fix: Compiling EEVEE test cases
Due to recent changes eevee test cases didn't compile anymore.
The issue was that a header file was migrated from C to CPP.

Pull Request: https://projects.blender.org/blender/blender/pulls/117436
2024-01-23 09:14:10 +01:00
Campbell Barton
5574a2790f Cleanup: rename uuid to uid for local-view functionality
Follow up to 311ca3e6af.
2024-01-23 16:07:39 +11:00
Campbell Barton
9a7b767226 Cleanup: reserve "r_" prefix for return arguments 2024-01-23 13:30:47 +11:00
Campbell Barton
0ce1102147 Cleanup: replace incorrect use of UUID with UID in bmesh_region_match
Follow up to 311ca3e6af.
2024-01-23 13:22:04 +11:00
Harley Acheson
a4a8683788 UI: Increased Overlay Text Contrast
Increased contrast of light text on any background by increasing the
effectiveness of the dark shadow.

Pull Request: https://projects.blender.org/blender/blender/pulls/117351
2024-01-22 21:57:55 +01:00
Hans Goudey
8dd30838e9 Fix #117423: Broken UI button float display after cleanup
Caused by 089c389b5c. Previously the draw string was created
by appending text inside the buffer multiple times. Now it's formatted
in one step. Part of that change was missing for factor display.
2024-01-22 15:46:52 -05:00
Hans Goudey
50ff1e843b Cleanup: Remove unnecessary use of mutable linked list iteration 2024-01-22 15:32:38 -05:00
Jacques Lucke
c7e674d40f Cleanup: extract low level dna array utilities to separate file
This simplifies reusing those functions outside of the context of node sockets.

Pull Request: https://projects.blender.org/blender/blender/pulls/117418
2024-01-22 21:07:28 +01:00
Omar Emara
02fc4d6481 Fix: Tonemap node has a wrong luminance scale
The Tonemap node has a wrong luminance scale. This is because the
parallel reduction shader for logarithmic sum had a wrong identity
value. In particular, its identity was set to 0.0, but since its
initialization macro computed the log, the zero becomes a rather large
negative value.

To fix this, the general structure of the parallel reduction shader was
changed such that the identity is used as is, and not passed to the
INITIALIZE or LOAD macros. This simplifies the implementation and even
avoid the extra texel fetches at the boundary.
2024-01-22 22:03:05 +02:00
Hans Goudey
089c389b5c Cleanup: Store UI button drawstr with std::string
Similar to bff51ae66c
2024-01-22 14:54:44 -05:00
Miguel Pozo
18af495cfc Fix: EEVEE-Next: Alpha Blended material pre-pass
Alpha blended materials were being rendered in the forward opaque
pre-pass, causing them to use dithered transparency as well.
2024-01-22 18:11:49 +01:00
Bastien Montagne
f1d4c35f4d GPV3: Refactor the 'dna processing' code when reading/writing blendfile.
GreasePencil v3 requires some additional processing on its data before
writing to blendfile, and after reading from it.

Extract this from generic `read/write` code, and put it into dedicated
callbacks in Cpp classes that need it (layer groups and leaves
currently).

NOTE: Work done while exploring possibility to use 'memfile' read/write
code for GP editmode undo (!117072), but ended up taking a different
approach for it, so this PR is purely a 'no expected changes in behavior'
refactor at this point.

Pull Request: https://projects.blender.org/blender/blender/pulls/117413
2024-01-22 17:44:44 +01:00
Thomas Barlow
e9ff079131 RNA: Use sdna for ByteIntAttributeValue.value
This enables raw access to the property, which enables raw array access
to the property through ByteIntAttribute.data, speeding up Python API
access through foreach_get/foreach_set (bpy_rna.cc#foreach_getset).

Pull Request: https://projects.blender.org/blender/blender/pulls/117409
2024-01-22 17:39:51 +01:00
Hans Goudey
f2f9bce6c3 Cleanup: Avoid unnecessary .c_str() call 2024-01-22 11:17:56 -05:00
Hans Goudey
0618de49ad Cleanup: Replace MIN/MAX macros with C++ functions
Use `std::min` and `std::max` instead. Though keep MIN2 and MAX2
just for C code that hasn't been moved to C++ yet.

Pull Request: https://projects.blender.org/blender/blender/pulls/117384
2024-01-22 15:58:18 +01:00