Commit Graph

115432 Commits

Author SHA1 Message Date
Clément Foucault
4bfaecc340 Fix #131212: Metal: Non-aligned circular buffer allocation logic
The new buffer size could have been non aligned when using the
fractional growing heuristic. This non aligned allocation
would then trigger an assert at the SSBO constructor.

Aligning the alocation size fixes the issue.
2024-12-02 17:34:35 +01:00
Jonas Holzman
62b2bb48e8 macOS: CMake: Fix last CMP0177 policy warnings
This commit fixes the last few CMake CMP0177 policy warnings on macOS.

Follow-up to: #130602 and 536937b4d4

Pull Request: https://projects.blender.org/blender/blender/pulls/131219
2024-12-02 17:15:58 +01:00
Omar Emara
eaa0ae23a9 Fix: Lighten blend mode is wrong for factors less than 1
The Lighten blend mode is wrong for factors less than 1, as it is
computed as a weighted maximum using the factor as the weight, while it
should be a simple component-wise maximum.

This is correctly implemented for Compositor, EEVEE, and Cycles. But the
render/material implementation is wrong. So we adjust the implementation
to match the correct one.

The Darken counterpart was already fixed in 1dcf956849. While the
lighten was fixed in 8b7b165ad9 among other patches. This just completes
the fix.

Pull Request: https://projects.blender.org/blender/blender/pulls/131242
2024-12-02 17:12:08 +01:00
Nathan Vegdahl
aa83738d44 Anim: change parameters of slots.new() RNA function
`Action.slots.new()` in the Python API previously took either an ID or nothing
as a parameter. In the former case it would create a slot with the appropriate
`id_root` and name for that ID. In the latter case it would create a default
slot with an unspecified `id_root` and default name.

This had several issues:

1. You couldn't create a slot with a specific `id_root` without already having
   an ID of that type. In theory this isn't a problem, but in practice in larger
   scripts/addons you don't necessarily have such an ID on hand at the call
   site.
2. You couldn't directly create a slot with a desired name without an existing
   ID with that name. This isn't so important, since you can always just set the
   name afterwards. But it's a bit annoying.
3. Most other `new()` APIs in Blender *require* you to specify the name of the
   item being created. So calling this with no parameters was violating that
   norm.
4. Ideally, we want to eliminate unspecified `id_root`s, since they cause other
   weirdness in the API such as slot identifiers changing upon slot assignment.

To resolve these issues, and just generally to make the API more
straightforward, this PR changes `slots.new()` to take two required parameters:
an ID type and a name. For example:

`slots.new(id_type='CAMERA', name="My Camera Data Slot")`.

This fully specifies everything needed for the slot identifier upon creation,
and doesn't require any outside data items to create a slot with the desired
type and name.

In the future if we decide we still want a `for_id`-style slot creation API, we
can reintroduce it as a separate function.

Ref: #130892
Pull Request: https://projects.blender.org/blender/blender/pulls/130970
2024-12-02 17:04:37 +01:00
Omar Emara
7ec9fa680e Compositor: Implement Scale node or new CPU compositor
Reference #125968.
2024-12-02 18:02:38 +02:00
Jeroen Bakker
53eadcc533 ImageEngine: Migrate to new draw manager
Converts the image engine to the new draw manager.
This is an as is migration without just a few tweaks to improve the code.

Pull Request: https://projects.blender.org/blender/blender/pulls/131142
2024-12-02 16:10:02 +01:00
Iliya Katueshenock
26b13504d4 Cleanup: BKE: unnecessary namespace usage
Since 75d17b1db5 everything in the file are already in such a namespace.

Pull Request: https://projects.blender.org/blender/blender/pulls/131205
2024-12-02 15:38:28 +01:00
Guillermo Venegas
4a23553b83 BLI: avoid initializing StringRefNull with explicit nullptr
`StringRefNull ` expects a null terminated string and `StringRefNull (const char *)` initializer
already realizes a runtime assert to avoid `nullptr` c strings, however this stills allows
initializing `StringRefNull ` with a explicit `nullptr`.

Deleting  `StringRefNull(std::nullptr_t)` gives a error if `StringRefNull` is initialized with a implicit `nullptr`.

This follows the same deleted `std::string(std::nullptr_t)` initializer in c++23.

Pull Request: https://projects.blender.org/blender/blender/pulls/130935
2024-12-02 15:30:27 +01:00
Omar Emara
819ff69ea3 Fix: Crash in compositor transform node
Transform node in the new CPU compositor crash in background mode
because of a call to GPU_max_texture_size where the GPU module is not
initialized. To fix this, restrict this call to GPU device and use 2^16
as an upper limit for CPU.
2024-12-02 16:29:35 +02:00
Jacques Lucke
cdbd3f8bee Fix: Nodes: improve spacing from last socket to end of node
This was reported in https://projects.blender.org/blender/blender/pulls/124042#issuecomment-1355483
2024-12-02 15:28:32 +01:00
Jeroen Bakker
e0252ae6de Overlay: View not set for overlay_clipbound shader
overlay_clipbound wasn't working in the Vulkan backend as the draw_view
was never uploaded. In vulkan this lead to a crash as it is more strict.

Detected when researching #131111

Pull Request: https://projects.blender.org/blender/blender/pulls/131247
2024-12-02 15:22:35 +01:00
Jeroen Bakker
108a0f2ec0 Vulkan: Share driver check between GPU and GHOST
GPU and GHOST require to have identical checks to remove faulty drivers.
When not done GHOST can still select a device that isn't supported and
lead to freezing interfaces.

Pull Request: https://projects.blender.org/blender/blender/pulls/131241
2024-12-02 14:50:32 +01:00
Jeroen Bakker
cd57a17698 Overlay: Incorrect framebuffer bound in image editor
When the overlays of the image editor is drawn an incorrect framebuffer
is bound. The faulty framebuffer contains a depth texture which is also bound
as an attachment.

Pull Request: https://projects.blender.org/blender/blender/pulls/131244
2024-12-02 14:35:58 +01:00
Clément Foucault
9ebce2ce95 Fix #131235: Grease pencil: Final rendering not working
The `draw::Manager` needs to be manually synced in render.
2024-12-02 13:43:51 +01:00
Clément Foucault
eb6de2d4fc Fix #131239: Grease Pencil: Last stroke in drawing uses wrong layer opacity
Flush was being done on the wrong pass. It was also creating errors.
2024-12-02 13:21:12 +01:00
Clément Foucault
e3625410e3 Fix: Grease Pencil: Error caused by non-matching texture type with sampler
Depth sample are special on Metal and need correct input.
2024-12-02 13:21:12 +01:00
Clément Foucault
a15a4c9c9a GPU: GLSL compilation as C++ for grease pencil shaders
Rel #127983
2024-12-02 13:21:12 +01:00
Julien Duroure
faaa12a101 glTF: Install Draco lib in the same directory as the glTF2 addon
This changes the location of the Draco library installation path.
The new location is at the root of addons_core/io_scene_gltf2 addon, as the library is created for this addon only.

This will solve issues where the gltf addon couldn't find the library in case of global python installation or custom script/lib paths

Pull Request: https://projects.blender.org/blender/blender/pulls/131080
2024-12-02 12:50:15 +01:00
Omar Emara
377d272f72 Fix: Zero division in Tone Map Photoreceptor node 2024-12-02 13:45:35 +02:00
Falk David
e5bdfd533b Grease Pencil: Save Layer Group expanded state
Grease Pencil layer groups are drawn in the layer tree using
`AbstractTreeViewItem`. The problem is that the items can't
store their expand/collapse state. This meant that switching
e.g. the tabs in the properties editor would reset the collapsed
state of layer group items.

This PR uses the `GP_LAYER_TREE_NODE_EXPANDED` flag to store
the expand/collapse state. The tree view then reads from the flag to
expand/collapse the items.

This also adds an RNA property to layer groups `is_expanded`.
Allows to check from python if a group is expanded in the UI.

Pull Request: https://projects.blender.org/blender/blender/pulls/131159
2024-12-02 11:48:42 +01:00
Jeroen Bakker
796959c205 Cleanup: ImageEngine: Code-style (enum casing) 2024-12-02 11:25:32 +01:00
Jeroen Bakker
e0a0bdcf01 Cleanup: Make format 2024-12-02 11:18:52 +01:00
Jeroen Bakker
3351a6e94e Cleanup: Image engine: Use ShaderModule
Replace old C-Style API with a ShaderModule class for managing shader lifetimes

Pull Request: https://projects.blender.org/blender/blender/pulls/131229
2024-12-02 11:04:32 +01:00
Jeroen Bakker
e93ea62d2b Cleanup: ImageEngine: Shader interface naming
Pull Request: https://projects.blender.org/blender/blender/pulls/131228
2024-12-02 11:03:04 +01:00
Richard Antalik
618b7f4a9b Fix #130742 Scene render from VSE is taking twice as long
Regression caused by 5ecb70964e. This is, because renders of individual
strips could no longer be reused when cache is completely disabled
during rendering.

Instead of disabling cache completely, flag cache entries as temporary.
When reading entries also skip disk cache, since in 5ecb70964e goal was
to avoid reading from disk cache.

5ecb70964e also affected visual output of rendered image. This is
reported in #131106. Because of this 1 test must be updated.

Root cause for #131106 is, that byte image was automatically converted
to float, due to processing with other float image. Then the same byte
image was used for processing with another byte image. Before
5ecb70964e this byte converted to float image would be cached, which
caused float code paths to be used. This is correct behavior.
After 5ecb70964e, no image is cached, so float data were not saved, so
byte code path was executed in second processing step.

Pull Request: https://projects.blender.org/blender/blender/pulls/130781
2024-12-02 10:07:08 +01:00
Jeroen Bakker
33fd027dc5 Cleanup: Remove unused attribute 2024-12-02 08:29:46 +01:00
Germano Cavalcante
99e54df9f5 Fix #131215: Snap to Grid not working in x-ray
Caused by commit b4154c6a0e, which incorrectly removed the
`(snap_to_flag & SCE_SNAP_TO_GRID)` condition.
2024-12-01 23:22:03 -03:00
Pratik Borhade
74f212fae2 Fix #130922: GN: Hide empty panel in modifier UI
`interace_panel_has_socket` should return true when panel has
at least a socket of type input or hidden in modifier. That way, panel
drawing code won't be executed.

Pull Request: https://projects.blender.org/blender/blender/pulls/130958
2024-12-01 07:37:06 +01:00
Pratik Borhade
6678b0acfb Fix #130813: Grease Pencil: Skip stabilize stroke line drawing when cursor is hidden
When cursor is disabled, exit early from the cursor draw function of
stabilize stroke to skip drawing of "smooth line".

Pull Request: https://projects.blender.org/blender/blender/pulls/130884
2024-12-01 07:34:23 +01:00
Clément Foucault
b0c0c2708d Refactor: Grease Pencil: Port rendering to new draw manager
Pull Request: https://projects.blender.org/blender/blender/pulls/130337
2024-11-30 22:42:43 +01:00
Clément Foucault
e44ae763bc GPU: GLSL C++ Stubs: Add minor missing features 2024-11-30 10:20:37 +01:00
Jesse Yurkovich
1868ae9366 Fix: IO: wrong ObjectIdentifier used when trying to determine parent status
The wrong ObjectIdentifier was used when trying to see if the object is
a parent to something else in the export graph. This lead to accessing
an invalid iterator which will assert with MSVC in Debug configurations.

Accidentally regressed during the review of 428ab699dc.

Pull Request: https://projects.blender.org/blender/blender/pulls/131174
2024-11-30 04:14:19 +01:00
Clément Foucault
7371bde40b Cleanup: Selection: Adress warning 2024-11-29 21:36:41 +01:00
Clément Foucault
bda911bcaa GPU: GLSL C++ Stub: Add packed type and small types 2024-11-29 21:33:06 +01:00
Clément Foucault
67bf545b61 Fix: Overlay-Next: Missing selection binding for object centers 2024-11-29 18:46:17 +01:00
Clément Foucault
54be7ed322 Fix: Overlay-Next: Broken selection on first click
This was caused by querying on the selection state
before it is setup. It is only setup just before
the draw function.

To fix this, we sync the `info_buf` just before
drawing the overlays.

Also add some safety to avoid uninitialized memory.
2024-11-29 18:46:17 +01:00
Aras Pranckevicius
f1664e1777 Fix #131097: Color space settings of >8bpp movie images do not work
With exception of Sequencer, everywhere else in Blender it is assumed
that float images are in linear color space.

Movie files with more than 8 bit/channel precision are now loaded into
float images (since 39c4c7cf3f), but the "load and use them as an
image" code path was not making sure that they are converted to linear
color space.

Pull Request: https://projects.blender.org/blender/blender/pulls/131141
2024-11-29 17:25:57 +01:00
Sybren A. Stüvel
eaf596c49c Refactor: BLI: Add MutableSpan::contains() function
Add `bool MutableSpan<T>::contains(const T &value)` function, which is an
exact copy of the function from the `Span<T>` class. This makes it possible
to call `.contains()` directly on the `MutableSpan`, instead of having to
call `.as_span()` first.

Note that the `contains_ptr()` function was already copied from `Span` to
`MutableSpan` before.

No functional changes to the affected code, just the removal of the now
no longer necessary `.to_span()` call.

Pull Request: https://projects.blender.org/blender/blender/pulls/131149
2024-11-29 16:28:56 +01:00
Miguel Pozo
8504c12fa9 Fix #130776: OpenGL: Use explicit uniform locations
Ensure uniform locations are the same across specialization constants
shader variations.

Pull Request: https://projects.blender.org/blender/blender/pulls/131116
2024-11-29 15:47:51 +01:00
Jeroen Bakker
9a4b232bd5 Cleanup: Image Engine
Before we start porting image engine to the new drawing manager
we should do some cleanups.

- Use similar namespace as other draw engines (`blender::image_engine`)
- Switched InstanceData and Instance
- Reduce parameters as drawing mode can access Instance.
- Remove some templates to improve readability.

Pull Request: https://projects.blender.org/blender/blender/pulls/131146
2024-11-29 15:46:44 +01:00
Philipp Oeser
e104735eeb Fix: Grease Pencil: issues with the transform keyframes system
Oversight in 09d2108bf5

For one, numinput for keyframes would be broken unless the mouse is moved first.
Secondly, redo would also be broken (using the `Adjust Last Operation` panel or the `Repeat Last` operator).

Above commit did a check for `TRANS_RUNNING` before calling `grease_pencil_layer_update_trans_data`.
This isnt set in any of the above scenarios (it only gets set once the moues moves).

This PR removes `TRANS_RUNNING` check to have proper calls to `grease_pencil_layer_update_trans_data`.
It has one downside: you now get a `grease_pencil_layer_update_trans_data` as soon as you hit `G`.
So it does remove_frame / add_frame unnecessarily (since we are still on the same frame), but only once, sees harmless in comparison to the two regression it fixes.

Fixes #131092
Fixes #130793

Pull Request: https://projects.blender.org/blender/blender/pulls/131143
2024-11-29 15:40:51 +01:00
Omar Emara
4eb1b78d82 Fix: Compositor: Compile error with WITH_FFTW3 off 2024-11-29 15:23:49 +02:00
Omar Emara
b71338ba8d Compositor: Implement Glare node for new CPU compositor
Reference #125968.
2024-11-29 15:04:40 +02:00
Clément Foucault
7a73741157 Fix #131133: GPU: Navigation Gizmo sometimes doesn't display the axis lines
Alignment was incorrect if vertex format stride was bigger than
SSBO required alignment.
2024-11-29 12:50:52 +01:00
Guillermo Venegas
7f7f9e987f Fix #130817: Make resource pool to cycle when swapchain images are presented
Its not standard how `Present Engines` return images for presentation, and
currently is expected that they cycle between swap-chain images with each
`vkAcquireNextImageKHR` call.

However present engines could return any available image, that can mean
to reuse the last presented one if available. (This seem to be the behavior
using `Layered on DXGI Swapchain` the default `Present Method` used
with latest NVIDIA drivers on Windows).

Since resource pools expects to images to cycle in a sequential order, if any
present engine always return the same image for presentation only a single
resource pool would be used for each rendered frame, and since resources
are only released by cycling between resource pools, this resource pool would
overflow since it never releases any resource.

This changes makes resource pools to cycle each time a image is presented.

Pull Request: https://projects.blender.org/blender/blender/pulls/131129
2024-11-29 12:35:44 +01:00
Clément Foucault
4441987e05 Fix #131131: Overlay Next: Clip view crashes Blender
Was simply a missing access to global uniform.
2024-11-29 12:12:53 +01:00
Clément Foucault
6332be9700 GPU: C++ GLSL Stubs: Use unions instead of inheritance for swizzle
This avoid stack overflow on GCC because types were getting too
large (70 bytes for a float4) and created a lot of static
memory for UBOs declarations.
2024-11-29 12:00:01 +01:00
Jeroen Bakker
f5d9f65925 Fix: Overlay: Assert during bone selection in pose mode
Detected when testing `ellie_animation.blend`. When trying to select
bones the select_id_map is empty and would do an invalid resize of
the output buffer.

Pull Request: https://projects.blender.org/blender/blender/pulls/131140
2024-11-29 11:28:04 +01:00
Clément Foucault
95233986cb GPU: C++ GLSL Stubs: Add atomic sampler 2024-11-29 10:19:23 +01:00
Jeroen Bakker
71ec30fce9 Fix #131135: Vulkan: Crash closing window
When a main window contains a child window and the main window is closed
it can crash as the context isn't available when destructing the
VKFramebuffer of the child window.

Pull Request: https://projects.blender.org/blender/blender/pulls/131137
2024-11-29 09:11:13 +01:00