Commit Graph

108723 Commits

Author SHA1 Message Date
Sergey Sharybin
a48f685e2e Fix tracking slide zones are not intuitive under certain UI scale/zoom
This is a regression caused by some previous refactor of the code,
which was preparing it for transition to a tool-based tracking
workflow. Some of the hot zones got tweaked, and a change in the
behavior was done so that when click happens far away from any
slidable marker "widget" all markers gets de-selected (which
matches behavior in 3D viewport).

The pixel tolerance did not apply UI scale factor, and applied
zoom level after squaring (which is wrong calculation of pixel
space in screen space).

Ref #119773

Pull Request: https://projects.blender.org/blender/blender/pulls/119971
2024-04-22 14:44:42 +02:00
Aras Pranckevicius
91f0368fe2 Fix #120871: VSE crashes when sound strip has hold start offset larger than start
Caused by addition of new code in 4e10aa6e71, which was not guarding
against negative frame values. The only other place that called
BKE_sound_set_scene_sound_pitch_constant_range guarded against negative
frames (added in 1fb692e896 + 49a0502f35), but generally it looks like
negative frames are a "no no" in audaspace, so just move the value
sanitization into BKE_sound_set_scene_sound_pitch_constant_range itself.

Pull Request: https://projects.blender.org/blender/blender/pulls/120891
2024-04-22 14:44:05 +02:00
Sietse Brouwer
4fbef3dc6b GPv3: Cutter tool
This PR implements the Cutter Tool for GPv3. The Cutter tool deletes
points in between intersecting strokes. New points are created at the
exact intersection points, so as a result the cutted strokes will fit
perfectly.

For feature parity, the tool follows the GPv2 behavior:

- The cutter tool works on all editable layers.
- Intersections are only detected for curves on the same layer,
so intersection of curves on _seperate_ layers are not handled.

Technical notes
The implementation uses the `compute_topology_change` function
created for the Hard Eraser. So at intersection points, point
attributes will be interpolated.

Pull Request: https://projects.blender.org/blender/blender/pulls/113953
2024-04-22 14:05:22 +02:00
Jacques Lucke
ed111e1907 Fix: assert when opening debug build with OpenGL backend
Can't use `GPU_type_matches` there, because it requires `GPG.init` to be called beforehand.

Pull Request: https://projects.blender.org/blender/blender/pulls/120928
2024-04-22 13:57:18 +02:00
Jacques Lucke
1609541bbf Fix #120875: crash when deleting all group output nodes
This didn't take `geometry_nodes_default_cpp_value` into account properly.
2024-04-22 13:29:51 +02:00
Jeroen Bakker
0c2085a316 GPU: Remove GPU_compute_shader_support
Compute shaders are required since 4.0. There was one occasion where
an older AMD driver failed and support was turned off. This driver
is now marked unsupported.

This PR includes:
- removing the check in viewport compositing
- remove properties from system info
- always construct draw manager.
- remove unused pass logic in draw hair/curves
- add deprecation warning when accessed from python

Pull Request: https://projects.blender.org/blender/blender/pulls/120909
2024-04-22 13:28:10 +02:00
Lukas Stockner
cc541f2c07 UI: Add Wavelength unit for scene-independent nanometer-scale inputs
Currently this is only used for the Wavelength node, but it will also be relevant for the Thin Film Interference support in the Principled BSDF.

Pull Request: https://projects.blender.org/blender/blender/pulls/120900
2024-04-22 13:10:16 +02:00
Pratik Borhade
f4894c098f Fix #120920: Can not edit strokes/points when materials array is empty
Return entire points/curves range if object has no material.

Pull Request: https://projects.blender.org/blender/blender/pulls/120923
2024-04-22 13:04:15 +02:00
Sybren A. Stüvel
43cd394832 Anim: Slider operators, prevent pass-through of Tab key
When a slider operator has only a single 'slider property', disregard
Tab keyboard events.

This fixes an issue where the Tab key would make the slider operator
misbehave in a way that required cancelling the operator and re-starting
it.

Context: Depending on the specific operator, Tab can be used to toggle
between different parameters. The generic handler for modal slider
operators didn't take this into account, though, and passed through the
Tab key to the rest of Blender, when it wasn't handled by the specific
operator.

Pull Request: https://projects.blender.org/blender/blender/pulls/120922
2024-04-22 12:51:16 +02:00
Bartosz Kosiorek
a36d7774cc Physics: Enable liquid mesh generation by default
Previously mesh generation was disabled by default. This meant it was
only visible for wireframe or x-ray in the viewport, and not visible
in renders.

Pull Request: https://projects.blender.org/blender/blender/pulls/120832
2024-04-22 12:26:12 +02:00
Pratik Borhade
b153b25876 GPv3: Delete strokes not working from menu
This fails due to wrong/unnecessary invoke callback. Since this operator
does not have any property, `WM_menu_invoke` fails to call exec()
- - -
Steps to Reproduce:
- Add gpv3 stroke -> switch to edit mode
- Topbar -> Grease Pencil menu -> Delete -> Delete

Pull Request: https://projects.blender.org/blender/blender/pulls/120819
2024-04-22 12:12:34 +02:00
Chao Li
74b9c6a8a0 GPv3: Copy/Paste Keyframes
This commit implements Copy and Past Keyframes for GPv3.
The copy operator copies the selected GPv3 keyframes and the paste
operator paste the keyframes from the clipboard.
See #113110.

Pull Request: https://projects.blender.org/blender/blender/pulls/117388
2024-04-22 12:06:21 +02:00
Sietse Brouwer
f4a1095245 Fix: GPv3: Non-edit mode tools unaware of stroke positions changed by modifiers
All tools in Draw Mode, Sculpt Mode and Weight Paint Mode didn't work
correctly when the position of strokes was changed by modifiers.

In technical terms this was caused by
`get_evaluated_grease_pencil_drawing_deformation()`: when not in Edit
Mode, it effectively always returned the original position of stroke points
instead of the modified ones. In this PR there is a little fix for that.

Pull Request: https://projects.blender.org/blender/blender/pulls/120672
2024-04-22 11:41:31 +02:00
casey bianco-davis
2df13ce4a3 GPv3: Primitive Tools: Line, Polyline, Arc, Curve, Box and Circle Tool
Adds the primitive tools in draw mode to GPv3.

This also adds rotation and scale sub-operators with `r` and `s` keybinds.
Also all control points are editable after extruding.

Pull Request: https://projects.blender.org/blender/blender/pulls/119039
2024-04-22 10:48:03 +02:00
Jacques Lucke
d02bab4c44 Fix #120707: invalid persistent modifier uid when creating liquid 2024-04-22 09:47:00 +02:00
Jacques Lucke
1ad633187e Fix #120805: crash when using multiple curves attributes in shader
Currently, `cache.eval_cache.final.attributes_buf[i] != nullptr` is used as
high level check to see if attributes need to be recomputed. However, this
buffer was not freed when a related buffer was freed that has to be
recomputed.
2024-04-22 09:39:30 +02:00
Sietse Brouwer
7b7e9f224c GPv3: Fix incorrect multi-frame falloff factor due to miscalculation in frame range
The multi frame falloff factor was calculated incorrectly due to a
`min`/`max` typo in the function that established the frame range.

Pull Request: https://projects.blender.org/blender/blender/pulls/120870
2024-04-22 08:38:00 +02:00
Jeroen Bakker
6106bb3d3b GPU: Remove Compute test from test cases
Test cases that uses compute shaders were exited when run on platforms
not supporting compute shaders. Since 4.0 Blender requires a platform
that supports compute shaders.

We should eventually phase out `GPU_compute_shader_support` as it
would always return true. Note that in OpenGL a platform is mentioned
that doesn't support compute shaders, but that is from an old driver
and should be save to remove as well.

Pull Request: https://projects.blender.org/blender/blender/pulls/120907
2024-04-22 06:55:09 +02:00
Jeroen Bakker
e6fad4b779 Vulkan: Fix memory leak in render graph
There was a memory leak in the render graph where nodes where freed,
but not the data it could keep. Detected during adding support for
compute shaders and running the draw tests.

Pull Request: https://projects.blender.org/blender/blender/pulls/120906
2024-04-22 06:22:31 +02:00
Hans Goudey
3539cdfbdd Cleanup: Use const for sculpt automasking cache 2024-04-21 20:21:22 -04:00
Jeroen Bakker
1d9d0f0056 Vulkan: Missing include when compiling draw tests
MoltenVK includes are not found when compiling draw tests on certain
configurations. It has to do with the number of ways the VulkanSDK and
MoltenVK can be configured. Other executables the molten vk was included
to the system includes, except when compiling drawing tests.

This PR will equalize the includes how MoltenVK between the different
binaries

Pull Request: https://projects.blender.org/blender/blender/pulls/120888
2024-04-21 17:39:08 +02:00
Jeroen Bakker
463a4c6211 Cleanup: Move specialization constant default hash
The specialization constant default hash was implemented in gl_shader.hh
But the same implementation is needed for vulkan. This PR moves the
default hash to a common place where both backends can use it.

Pull Request: https://projects.blender.org/blender/blender/pulls/120889
2024-04-21 16:56:00 +02:00
Fermin
821b773d95 FIX #109121: VR: Render controllers only if they are active
When turning on VR mode, if no controllers are available,
a fallback model (a sphere) is rendered in the middle of the VR area.

This change uses the OpenXR API to check if the controllers are
available, sets new properties in `GHOST_XrPose` and `wmXrController`
that store if each controller is active or not, and uses
those properties to render the controllers in the VR view only
when they are active.

NOTE: in `wmXrController`, two state properties have been included,
but only `grip_active` is currently used. `aim_active` has been
included for consistency, but it could be removed.

Pull Request: https://projects.blender.org/blender/blender/pulls/119989
2024-04-21 03:28:35 +02:00
Aras Pranckevicius
689fce50bd Fix #120789: Slowness when using image vectorscope opacity slider
Since image vectorscope RGB mode addition (567455124d), changing
the opacity was causing the scope to get recalculated from scratch,
because opacity value was put into vecscope_rgb data directly.

Instead of that, make vecscope_rgb data only contain RGB, and fill in
the GPU vertex buffer alpha values when creating the GPU batch.

Now tweaking the scope opacity slider feels at about the same
performance as in 4.0.

Pull Request: https://projects.blender.org/blender/blender/pulls/120854
2024-04-20 17:08:56 +02:00
Sybren A. Stüvel
933f74ca02 Anim: Baklava, add Animation data-block to anim filtering code
Add minimal support for the `Animation` data-block to the anim filtering
code. This means:

- F-Curves in the `Animation` data-block are shown in the Dope Sheet and
  Graph Editor.
- The `Animation` is shown underneath each animated data-block, just
  like an `Action` would be.
- Contrary to Actions, the expanded/collapsed state is stored on
  `id->adt` and not on `Animation`. Because an `Animation` is intended
  to be used by multiple data-blocks, they each should have their own
  flag for this.
- In the filtering code, this PR adds the 'fillanim' channel type. This
  is simply mimicking the name from the Action's 'fillact' type.

Limitations:

- Deleting of F-Curves is explicitly blocked, as that'll be introduced
  in a later PR. The block prevents Blender from crashing.
- The Dope Sheet doesn't have an Animation mode yet, that'll be for a
  later PR too.

Pull Request: https://projects.blender.org/blender/blender/pulls/120654
2024-04-20 12:19:16 +02:00
Sybren A. Stüvel
075b4c178a Refactor: Anim, clarify a bit of NLA drawing code
Clarify the code in `nla_draw_strip()` by extracting some flags into
booleans, and renaming some variables.

- `solo` is flipped in value, and renamed to `is_other_track_soloed`, as
  this is what is actually modelled by the variable.
- The check for the `NLASTRIP_FLAG_INVALID_LOCATION` flag is stored in a
  `const bool` to aid in debugging.

No functional changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/120828
2024-04-20 11:25:39 +02:00
Pratik Borhade
eea73bffb4 UI: Fade all non-ID children if parent is hidden in outliner
Part of !120397.
For non-id tree elements, call `element_should_draw_faded` and get the
fade status of their parent. For example, this will fix the fading of
modifier, actions, bones, etc. in outliner.

Pull Request: https://projects.blender.org/blender/blender/pulls/120813
2024-04-20 10:46:12 +02:00
Clément Foucault
df064270a1 Fix: EEVEE-Next: Light: Missing shadows inside sphere light
The function `light_sphere_disk_radius` was misbehaved inside
the sphere. The LTC code has a early return but the shadow
code has not. In any cases, this patch avoids NaN issue.
2024-04-20 09:01:03 +02:00
Guillermo Venegas
1587abc148 Fix #119854: Avoid unsetting HIDDEN flag on properties
Ref !119881
2024-04-20 14:59:32 +10:00
Campbell Barton
fd589fdca4 Cleanup: various non functional C++ changes 2024-04-20 13:46:14 +10:00
Campbell Barton
c6a9b11ef6 Cleanup: use const pointers 2024-04-20 12:41:23 +10:00
Sean Kim
285cbf9ee4 Cleanup: Fixup naming for sculpt_project.cc
This PR removes some unnecessary type and
function prefixes from `sculpt_gesture.cc`

Pull Request: https://projects.blender.org/blender/blender/pulls/120847
2024-04-20 04:04:29 +02:00
Harley Acheson
d8f6ae7919 UI: Outliner "File Mode" Manage User Count
In Outliner "Blender File Mode" view, show user counts, and allow
removing and adding fake user, requested in #118655.

Pull Request: https://projects.blender.org/blender/blender/pulls/118691
2024-04-20 02:50:12 +02:00
Hans Goudey
026f8e8bdf Fix: Missing include in previous commit
55c1abb8a0
2024-04-19 14:36:10 -04:00
Clément Foucault
9dd164e1ad EEVEE-Next: Rename screen trace max roughness
Remove "screen" from the name as it is not limited to
screen trace.
2024-04-19 20:27:24 +02:00
Pratik Borhade
d7cd25fc94 Fix #120731: sculpt trim tool crash
Caused by f7d5ec8661
`initialize_cursor_info` requires `gesture_data.operation` initialized.
So move allocation outside of `init_operation`

Pull Request: https://projects.blender.org/blender/blender/pulls/120733
2024-04-19 20:27:02 +02:00
Hans Goudey
55c1abb8a0 Cleanup: Unused variable warning 2024-04-19 14:25:09 -04:00
Bastien Montagne
2736446d65 Fix #119999: RNA copy failure due to improper handling of unset dynamic RNA properties.
A fully unset (i.e. null IDProperty storage pointer) dynamic RNA
property would not be properly handled by RNA copy code path. This led
to having a type mismatch (because dynamic RNA booleans are stored in
integer IDProperies) betwen source and destination RNA properties.
Since the fix in 6adf5adb7f, such type mismatch will abort the copying
process.

This is fixed by updating the `PropertyRNAOrID` internal struct to also
store whether the given property is actually a dynamic RNA one with
IDProperty storage.

NOTE: Potential side-effects: That kind of change is very difficult to
fully analyse, but no side-effects from this fix are expected. The only
code which behavior is changed is `rna_ensure_property_realdata`, which
is only used by `RNA_property_copy` currently.

This change to `PropertyRNAOrID`/`rna_property_rna_or_id_get` _may_ be
useful in the future though, e.g. in liboverride codepath...
2024-04-19 15:52:17 +02:00
Clément Foucault
c450200873 Fix: EEVEE-Next: Fix wrong space transformation for default thickness
The previous code was applying translation to a direction vector
making the thickness dependant on the object position.
2024-04-19 15:08:33 +02:00
Hans Goudey
7f5dd29abd Subdiv: Make OpenSubdiv_TopologyRefiner into a C++ class
Replace the C-class pattern function pointers with actual class methods.
Other than the obvious benefit of not requiring the "this" pointer to be
explicitly passed into every function call, this will make it much simpler
to remove the entire C-API class and replace it with its "impl" next.

For that next step we need to expose code to the implementation
of the topology refiner, so instead of defining stubs locally in the
opensubdiv intern class, we spread some WITH_OPENSUBDIV checks
in the blenkernel. As far as I know this is the only way to remove the
intermediate C-API and call opensubdiv functions directly from there.
2024-04-19 09:03:48 -04:00
Hans Goudey
52c0f4078a Cleanup: Remove redundant part of SubdivForeachTaskContext name
The "subdiv" part is implied by the namespace.
2024-04-19 09:03:39 -04:00
Hans Goudey
11f0d88d13 Subdiv: Move most blenkernel subdiv code to C++ namespace
Move most code to `blender::bke::subdiv`. That helps organization
and makes using C++ in subdiv code easier, which will be useful for
removing the unnecessary opensubdiv C-API wrapper.
2024-04-19 09:03:31 -04:00
Jeroen Bakker
be75f1ac2b Vulkan: Render graph textures
This PR implements render graph for VKTexture. During the
implementation some tweaks to the render graph was done
to support depth and stencil textures.

The render graph will record the image aspect being used
for each node. This will then be used to generate barriers
for the correct aspect.

Also fixes an issue that uploading of array textures didn't
allocate a large enough staging buffer.

Pull Request: https://projects.blender.org/blender/blender/pulls/120821
2024-04-19 14:55:39 +02:00
Germano Cavalcante
f5f05c99c9 Fix: Snap with 'Backface Culling' skipping edges and vertices of faces in edit mode
After 1c77779160, the snap logic in Edit Mode became the same as in
Object Mode, so Backface Culling started to ignore edges and vertices
of faces seen from behind.
2024-04-19 09:47:49 -03:00
Pratik Borhade
7c89efd787 Fix #120809: Skip saving use_selected_objects
Issue came with the new feature of adding modifiers to selected objects
by holding alt: 9a7f4a3b58. `use_selected_objects` state should not be
remembered. Otherwise, it's possible to add/edit modifier of multiple
object without holding alt

Pull Request: https://projects.blender.org/blender/blender/pulls/120810
2024-04-19 14:00:49 +02:00
Clément Foucault
7b38873732 EEVEE-Next: Volume: Add custom integration range
This is just adding a switch for enabling custom range.

Custom range is now optional as we compute a tight bound
to integrate around volume objects by default.

The custom range is only needed for scene with really
thick world volumes.

Pull Request: https://projects.blender.org/blender/blender/pulls/120823
2024-04-19 13:51:27 +02:00
Omar Emara
dd321a47a6 Fix #120715: File Output node writes empty outputs
The File Output node writes single elements as full images in 4.1, while
such values were skipped in 4.0. This included invalid outputs, for
instance, when the Render Layers node does not have a result for the
selected view layer. Which would then just write an image with an
arbitrary color.

To fix this, we detect single element values and skip writing file
outputs for them.

Pull Request: https://projects.blender.org/blender/blender/pulls/120749
2024-04-19 12:38:31 +02:00
Omar Emara
5e3932595f Compositor: Allow constant folding of set operations
This patch replaces the is_set_operation flag with the
is_constant_operation flag to allow input constants to propagate
through the node tree using the constant folder.
2024-04-19 12:34:43 +02:00
Clément Foucault
2c19be2682 EEVEE-Next: UI: Render Panel
- Reorder panels to match Cycles (and rendering pipeline order)
  `Sampling > Objects > Motion Blur / Dof > Film > Performance`
- General reordering of properties to avoid too many panels.
- Make sure panels a disabled if their checkbox is.
- Enabled Freestyle panel for EEVEE-Next.
- Merge some panels into sub-panels.
- Add `Clamping` panel.
- Split Lighprobe panel into `Performance` and `Scene`.
- Move shadow panel to Sampling.
- Generally improve consistency with Cycles.

Pull Request: https://projects.blender.org/blender/blender/pulls/120691
2024-04-19 12:12:28 +02:00
Jeroen Bakker
ed9dea08b2 Vulkan: Render graph storage buffers
A developer can switch `vk_common.hh#use_render_graph` to enable render graph.
When enabled the buffers and images are tracked by the device resource state
tracker. The storage buffer commands are recorded to the context render graph.

The next unit tests will pass:
- GPUVulkanTest.storage_buffer_create_update_read
- GPUVulkanTest.storage_buffer_clear_zero
- GPUVulkanTest.storage_buffer_clear
- GPUVulkanTest.storage_buffer_copy_from_vertex_buffer

The pattern to migrate to render graph is:
- always construct CreateInfo for class.
- based on `use_render_graph` call `context.command_buffers.something`
  or `context.render_graph.add_node`.
- Hide calls to `context.flush` when `use_render_graph` is true.

Pull Request: https://projects.blender.org/blender/blender/pulls/120812
2024-04-19 12:08:57 +02:00