Commit Graph

116340 Commits

Author SHA1 Message Date
Damien Picard
5857000a65 I18n: Disambiguate "Normal"
"Normal" means "ordinary", not "perpendicular".

Issue reported by Hoang Duy Tran.
2025-01-13 12:40:45 +01:00
Damien Picard
466af92f7a I18n: Disambiguate "Light"
"Light" already has multiple contexts, but some were missing:
- In general, "Light" refers to a Blender Light object. In many cases,
  this comes from an `id_type` enum, already using the ID context. Use
  it also for properties that were missing that context.
- In the context of render passes, "Light" is the actual illumination
  factor, not the light emitor. A new "Render Layer" translation
  context is introduced for this purpose as no existing ones are both
  specific and explicit enough.

Issue reported by Hoang Duy Tran.
2025-01-13 12:40:45 +01:00
Damien Picard
1ee31effca I18n: Disambiguate "Jitter"
"Jitter" means a type of keyframe, not a sampling strategy.
2025-01-13 12:40:45 +01:00
Damien Picard
f67911cb47 I18n: Disambiguate "Fill"
- In the context of mesh extrusion, "Fill" means "Fill the rim of an
  extruded edge loop" (verb).
- In the context of the file browser, it means select every file
  between beginning and end.
- In the context of an image, fill the tile with  generated image.

Issue reported by Hoang Duy Tran.
2025-01-13 12:40:45 +01:00
Damien Picard
2b3f0d0110 I18n: Disambiguate "Extend"
- "Extend" usually means making selection bigger around the current
one.
- In the context of Grease Pencil filling, it means lengthen lines.
- In the context of curve mappings, it refers to the extrapolation
  mode.
- In the context of volume sequences, it refers to frame range
extension.

Issue reported by Hoang Duy Tran.
2025-01-13 12:40:45 +01:00
Damien Picard
c2096b1c01 I18n: Disambiguate "Error"
"Error" as difference from expected value, not program error.

Issue reported by Hoang Duy Tran.
2025-01-13 12:40:45 +01:00
Damien Picard
100d7094f1 I18n: Disambiguate "Drag"
- In the context of physics, a force.
- In the context of UI, a mouse action.

Issue reported by Hoang Duy Tran.
2025-01-13 12:40:45 +01:00
Damien Picard
973b981158 I18n: Disambiguate "Cross"
- "Cross" can refer to a cross shape "+" in the context of a gizmo or
  a particle display mode.
- In the context of a sequence, refers to a blending mode (cross
  fade).

Issue reported by Hoang Duy Tran.
2025-01-13 12:40:45 +01:00
Damien Picard
54c0c5539a I18n: Disambiguate "Back"
- In the context of Grease Pencil, meaning "Overshoot".
- In the context of XR navigation, meaning "Going backwards".
  This introduces a "Navigation" context. Closest existing match is
  "View3D" but this is already used to refer to view axes.

Issue reported by Hoang Duy Tran.
2025-01-13 12:40:45 +01:00
Damien Picard
434f7e83e8 I18n: Disambiguate "Additive"
- In the Grease Pencil Build modifier, "Additive" describes how it
  works, not a math operation.
- In the Copy Scale constraint, additive mode is not really a math
  operation either.

Issue reported by Hoang Duy Tran.
2025-01-13 12:40:45 +01:00
Damien Picard
ecb4984d65 I18n: Do not disambiguate some messages
- "Match Case" and "Wrap Around" were renamed but they do not need a
  translation context anymore.
- Spreadsheet tooltips with unneeded translation of format
  strings like `fmt::format(TIP_("{}"))`.
2025-01-13 12:40:45 +01:00
Aras Pranckevicius
4515713db7 Fix #132237: crash when opening Ogg file with embedded album art
This works around ffmpeg bug https://trac.ffmpeg.org/ticket/10755
where for specific files that are:

- Ogg container format, with supported audio stream (e.g. Vorbis),
- But the video stream is not Ogg-compatible (e.g. Theora), but rather
  it is an embedded "album art" (AV_DISPOSITION_ATTACHED_PIC) in
  MJPEG, PNG or some other non-Ogg format.

Calling any sort of ffmpeg "seek" function on that video stream just
aborts from innards of ffmpeg.

So to work around this:
- Detect such files (ogg container, non-theora video, attached picture
  disposition) and for those:
- Never seek within them, and only ever decode one frame. Return that
  frame for any & all "give me a frame" requests.
- Additionally, calculating "how many frames this video has" for such
  files also returns nonsense ("millions of frames") since their frame
  rate is set to like 90000 or similar. So pretend they have a "sane"
  frame rate. Do all this frame rate calculation just once when opening
  the video, and use that result in all other places.
- Never build proxies for such video files, since e.g. "timecode"
  for them does not make sense.

All of this could be removed once/if ffmpeg fixes their issue.

Pull Request: https://projects.blender.org/blender/blender/pulls/132920
2025-01-13 12:16:15 +01:00
Richard Antalik
d41a4673d7 Fix #62754: VSE solo preview over sound strip blanks preview
Do not set solo preview if strip is sound type.

Originally I wanted to set solo preview to strip, that is below chosen
sound strip, but now I think, that is would be confusing.

Pull Request: https://projects.blender.org/blender/blender/pulls/132988
2025-01-13 11:59:33 +01:00
Brecht Van Lommel
357d748b18 Fix: Invalid memory access closing window with escape
After recent #132539.
2025-01-13 10:07:37 +01:00
Brecht Van Lommel
5710e62273 Fix: Hydra MaterialX conversion crash with some image file types
The extension argument to BKE_image_path_ext_from_imformat should be
an array of pointers.
2025-01-13 10:07:37 +01:00
Brecht Van Lommel
89b793f130 Cleanup: Compiler warning 2025-01-13 10:07:37 +01:00
Lukas Tönne
3bdc1bfd0a Fix #131573: Ensure vertex group attributes when subdividing Grease Pencil strokes
In order to copy vertex group weights when subdividing strokes the
groups (`bDeformGroup`) must be created in advance, so that the attribute
wrappers correctly write to `CD_MDEFORMVERT` layer instead of creating simple
`CD_PROP_FLOAT` layers.

In addition the subdivision function must take care to fully write the
destination arrays, since initial values must be considered uninitialized (this
is obfuscated for simple CustomData arrays but breaks with more complex
attributes that use a buffer). In order to ensure fully defined destination
buffers without additional copies, the `finish` call to attribute writers is
postponed until the unselected attribute values have also been copied from input
buffers and all the values are properly defined.

Pull Request: https://projects.blender.org/blender/blender/pulls/132854
2025-01-13 09:45:11 +01:00
Jeroen Bakker
a4914b8972 Vulkan: Disable local read on non Qualcomm devices
Only enable by default dynamic rendering local read on Qualcomm devices. NVIDIA, AMD and Intel
performance is better when disabled (20%). On Qualcomm devices the improvement can be
substantial (16% on shader_balls.blend).

`--debug-gpu-vulkan-local-read` can be used to use dynamic rendering local read on any
supported platform.

Future: Check if bottleneck is during command building. If so we could fine-tune this after the
device command building landed (#T132682).

Pull Request: https://projects.blender.org/blender/blender/pulls/132981
2025-01-13 09:29:16 +01:00
Jeff Moguillansky
75dc76bceb Vulkan: Add support for dynamic rendering local read
This will add support for `VK_KHR_dynamic_rendering_local_read` when supported.
The extension allows reading from an attachment that has been written to by a
previous command.

Per platform optimizations still need to happen in future changes. Change will
 be limited to Qualcomm devices (in a future commit).

On Qualcomm devices this provides an uplift of 16% when using shader_balls.blend

Pull Request: https://projects.blender.org/blender/blender/pulls/131053
2025-01-13 08:10:31 +01:00
Campbell Barton
5ceaff9aa6 Fix #132976: Crash animating along a 1-segment path
The binary lookup assumed there was at least two elements in the array.
2025-01-13 16:25:52 +11:00
Sean Kim
9051c11b72 Cleanup: Minor variable cleanup and reorganization
* Reduces scope of `location` variable.
* Renames variable to `world_location`.
* Adds const
* Uses C++ math functions where

Pull Request: https://projects.blender.org/blender/blender/pulls/132958
2025-01-13 00:05:14 +01:00
Sean Kim
440e87ce55 Cleanup: Reorganize hsv sort paint functions
Pull Request: https://projects.blender.org/blender/blender/pulls/132959
2025-01-13 00:04:36 +01:00
Pratik Borhade
d2418b89c3 UI: Meshcache modifier boolean flip axis property
`flip_axis` is currently an enum RNA property. This makes impossible to
toggle the individual axis. Now fixed by converting the property to
boolean. UI drawing code is same as done for mirror modifier.
New enum values are introduced for each axis

Resolves #70237

Pull Request: https://projects.blender.org/blender/blender/pulls/132849
2025-01-12 09:58:30 +01:00
Alaska
ec161e50b4 Fix: Extra letter in Grease Pencil curve handle type tooltip
The tool tip for the Grease Pencil curve handle type Aligned contained
a random `W` at the end of the tooltip.

This commit removes the extra letter.
2025-01-12 16:50:26 +13:00
Jesse Yurkovich
c3589a4c0a Cleanup: USD: Make USDCurvesReader abstract to prepare for Nurbs changes
In preparation for allowing the Nurbs reader to import as curves rather
than mesh, change `USDCurvesReader` to be abstract so we can share most
of the boilerplate in the base class. The existing basis-curves code is
shifted into a new `USDBasisCurvesReader` class.

Pull Request: https://projects.blender.org/blender/blender/pulls/132954
2025-01-12 01:00:19 +01:00
John Kiril Swenson
225c5c9745 Cleanup: VSE: Improve 'Preview During Transform' Tooltip
Should better clarify the intent of the operator.
2025-01-11 16:39:06 -06:00
John Kiril Swenson
c6f8f24c29 VSE: Cleanup RCS logic and add comments
- Previously, `change_frame_invoke` always ran
  `sequencer_skip_for_handle_tweak` check, even if the user was not
  using the sequencer. Now, the check is only done if the user is in the
  sequencer, where it is possible for them to tweak strips.
- It is now impossible to change the frame from the sequencer preview,
  so remove that logic.
- Also add some explanatory comments for RCS keymap logic in the code.
2025-01-11 15:55:43 -06:00
John Kiril Swenson
6ac58a5b8a VSE: Auto-include effect chain for copying and metastrip creation
Part of Code Quality Project outlined in #130975.

This patch eschews warning messages urging the user to "select all
related strips" when copying or creating new metastrips and instead
automatically includes those related strips in the operation.

- Attempting to copy or create a metastrip with no strips selected no
  longer delivers a warning.
- When copying strip(s), if there are related effect chains, they will
  be automatically selected and included in the copy if the operation
  succeeds.
  - The decision to select related strips was intentional, as it allows
    the user to easily see the entire effect chain and thus which strips
    were copied.
- When creating a new metastrip, if there are related effect chains,
  they will automatically be included in the resulting metastrip.
  - This is done using a new
    `SEQ_query_strip_connected_and_effect_chain()` iterator. This
    iterator is only used for metastrips, and not copying, since the
    user may wish to only copy single strips in a connection, but
    connected strips should always stay together in a metastrip/seqbase.

Pull Request: https://projects.blender.org/blender/blender/pulls/132930
2025-01-11 20:45:46 +01:00
Harley Acheson
e203c7b554 Fix #132931: Allow Wider Icons for Collapsed XYZ Modifiers
Event Icons, those typically shown on the taskbar to indicate keymap
entries, can differ in width. This length is not taken into account
for the modifier keys used when showing collapsed XYZ operations. This
PR just does so.

Pull Request: https://projects.blender.org/blender/blender/pulls/132945
2025-01-11 19:08:15 +01:00
Aras Pranckevicius
4e113c256f UI: improve styling and placement of image/movie current frame indicator
Make it have similar display style and placement as current frame
indicators used elsewhere (timeline, animation etc.), i.e.
time_scrub_ui.cc draw_current_frame:

- The text label is centered on the frame (instead of left aligned),
- Background box uses rounded corners,
- Background box uses padding that scales with overall UI scale,
- Text color uses TH_HEADER_TEXT_HI which makes it more readable

This partially addresses issue #124287 (better text legibility, and
due to label being centered it is less clipped when on the right
side). But fully solving the issue would probably have to be done
across the board for all current frame indicators, with some design
work.

Screenshots in the PR.

Pull Request: https://projects.blender.org/blender/blender/pulls/132911
2025-01-11 11:21:32 +01:00
Philipp Oeser
0c612cecef Fix #109995: Outliner listen to collection change in the header region
Changing the active collection redraws many regions, not the Outliner
header though (blender itself does not need a redraw there -- it does
not present anything related to active collection in the header). This
was requested from Addon devs in #109995 (placing active collection
related buttons there).

Pull Request: https://projects.blender.org/blender/blender/pulls/111725
2025-01-11 01:19:57 +01:00
Hans Goudey
eb7df01ef3 Cleanup: Reduce unnecessary includes in curves headers
Pull Request: https://projects.blender.org/blender/blender/pulls/132925
2025-01-10 23:31:49 +01:00
Hans Goudey
d381379b47 Cleanup: Nodes: Use StringRef in a few more places
Pull Request: https://projects.blender.org/blender/blender/pulls/132923
2025-01-10 22:27:45 +01:00
Hans Goudey
be887bd37d Cleanup: Move NOD_common.h to C++ 2025-01-10 22:27:44 +01:00
Hans Goudey
73ff099405 Cleanup: Remove unnecessary casts for PropertyFlag enum type 2025-01-10 15:18:40 -05:00
Habib Gahbiche
9dff507ca9 Fix #132893: Node Groups are broken
Caused by c8dbde8779.
The root cause is probably implicit cast from `VecBase<T>` to `T *`.

Pull Request: https://projects.blender.org/blender/blender/pulls/132918
2025-01-10 20:25:33 +01:00
Julian Eisel
4b2a4341a7 Fix #130611: Grease Pencil: Airbrush affects material of other brushes
Don't change the object's active material when adding a material slot. This
active material will be used by brushes with no pinned material, while the
added slot is meant for the pinned material.

The if-statement in `BKE_grease_pencil_object_material_ensure_from_brush()`
would change the active unpinned material, even though it was only meant to
handle the pinned material. This was not a new issue, it was just unlikely to
run into it.

Before brush assets were introduced this if-statement would not be
executed when activating any of the default brushes. Afterwards it would
be, because the material was newly linked (because the brush asset was
linked) and so there was no material slot created for it yet.

Pull Request: https://projects.blender.org/blender/blender/pulls/132865
2025-01-10 18:09:30 +01:00
Sergey Sharybin
179c305a40 Cleanup: Type in the comment 2025-01-10 17:54:06 +01:00
Jeroen Bakker
6bcf34668a Fix #131474: Overlay: Image background
Overlay engine rendered the editor background incorrectly when no image
is present. It used to render an alpha checker background indicating
that an image was present. The cause for this was that the in front
depth texture was attached, but isn't used at all.

The second change is that the image prepass should only be drawn when
there is an image present in the image editor other wise external the
prepass would alter the depth texture indicating that there is an image
present.

Pull Request: https://projects.blender.org/blender/blender/pulls/132847
2025-01-10 16:25:21 +01:00
Nathan Vegdahl
4fd011675b Cleanup: improve documentation of Action C++ APIs
A pass at cleaning up / improving the code documentation for the layered action
C++ classes.

There is still more work to do here, but this should be good for an initial
first pass. I've focused on clarifying the behavior of and updating stale docs
of the methods in the action-related C++ classes.

Pull Request: https://projects.blender.org/blender/blender/pulls/131318
2025-01-10 15:13:38 +01:00
Pratik Borhade
eb57878bec Grease Pencil: Support Boolean property in modifier panel header
A separate function is declared/defined `uiLayoutPanelPropWithBoolHeader`,
it will add a boolean property to the panel.header.
Clear decorate and separator flag, otherwise they will offset the panel
header horizontally and also adds animate decorator on the right side.

Resolves #131623.

Pull Request: https://projects.blender.org/blender/blender/pulls/132726
2025-01-10 14:51:19 +01:00
Pratik Borhade
06a2617107 Fix #100786: Collection hide viewport in properties tab
Similar to other visibility properties, include "hide_viewport" in
collection properties tab. One issue is that, when collection is
disabled, automatically parent collection is selected or tab is gone
when parent collection does not exist. The check was added in
0a903e7ab1, it doesn't seem very useful so
removed that.

Pull Request: https://projects.blender.org/blender/blender/pulls/132107
2025-01-10 14:49:43 +01:00
Lukas Tönne
b9ec08b551 Fix #132861: Proportional edit broken due to uninitialized transform data
The `td->center` value is used to compute proportional editing distances,
but initialization order was broken in 9d86fada which sets every center
to zero.

Pull Request: https://projects.blender.org/blender/blender/pulls/132913
2025-01-10 14:41:25 +01:00
YimingWu
6a9b3183db Fix #131992: Grease Pencil: "Scale Stroke Thickness" behaviour fix
Previously there are two problems with grease pencil transformation:

1. Transform in Grease Pencil Opacity mode would change stroke thickness
    if "Scale Stroke Thickness" is enabled.
2. "Scale Stroke Thickness" is ineffective when scaling strokes in edit
    mode while in GPv2 implementation it will scale stroke thickness in
    sync with overall dimensions.

This patch fixes those problems by:

1. Altering the logic of determining which attribute to feed into the
    TransData.
2. Swapping the arguments for fall off interpolation (Previously was
    inverted, causing the factor to always be zero hence appeared to be
    ineffective).

Pull Request: https://projects.blender.org/blender/blender/pulls/132274
2025-01-10 14:02:16 +01:00
Aras Pranckevicius
64f1f29a50 Audio: add AAC and Opus to Render Audio operator
There's a "Render -> Render Audio" operator that pretty much calls into Audaspace functionality directly. This PR adds two new options in there, that boThere's a "Render -> Render Audio" operator that pretty much calls
into Audaspace functionality directly. This PR adds two new options in
there, that both feel like an oversight:

- There's an option for AAC container, when someone wants to render
  into .aac file. Previously you could render AAC audio, but only in
  MKV (Matroska) container. This is a user request #131980.
- When using MKV (Matroska) or Ogg container, it did not list Opus as
  an audio codec that can be used. This felt like an oversight; both
  the rest of Blender and Audaspace can handle that, jus the option
  was not spelled out in the RNA enums.

Pull Request: https://projects.blender.org/blender/blender/pulls/132877th feel like an oversight:

- There's an option for AAC container, when someone wants to render into `.aac` file. Previously you _could_ render AAC audio, but only in MKV (Matroska) container. This is a user request #131980.
- When using MKV (Matroska) or Ogg container, it did not list Opus as an audio codec that can be used. This felt like an oversight; both the rest of Blender and Audaspace can handle that, jus the option was not spelled out in the RNA enums. Note however that without fix in #132872 the Matroska container continues to be useless in that it produces wrong result.

Upstream Audaspace PR for the 2nd point: https://github.com/neXyon/audaspace/pull/47 (was just merged!)

Pull Request: https://projects.blender.org/blender/blender/pulls/132877
2025-01-10 12:26:24 +01:00
Omar Emara
6a1ac88b8e Fix: Crash when versioning node groups contain Glare
When running versioning for the Glare node, the code assumes the ID
given by the iterator belongs to the scene containing the node tree. But
this might not be the case, as the Glare node might be inside a node
group, in that case, the ID will be the node tree itself.

To fix this, recursively go over the node trees starting from the scene,
passing the scene down all the way. And for node groups not used by any
scene, assume the first scene, since this is better than not doing
versioning.

Pull Request: https://projects.blender.org/blender/blender/pulls/132869
2025-01-10 12:20:43 +01:00
Aras Pranckevicius
f355683e4b Fix #132216: no video (audio only) animation render produces broken file
Looks like this regressed in c1f5d8d023 (blender 3.1), basically
since then if there was no video, then no audio was ever written
either.

From what I can tell, the original change tried to fix the problem
that "file size autosplit" logic was after video, but before audio
data writing. So it moved audio writing to be before the split (good),
but also (not sure whether by accident) moved audio writing to
only happen if video is written.

Pull Request: https://projects.blender.org/blender/blender/pulls/132874
2025-01-10 12:20:32 +01:00
Lukas Tönne
d27e0fcbaf Fix #130855: RegionView3D matrices need to be reset before transforming points
- In "Surface" mode the depth buffer needs to be cached after constructing the base DrawingPlacement, otherwise there is no depth data for projection and the origin is used as a fallback.
- The DrawingPlacement relies on the RegionView3D matrices to project from the rendered image back into 3D space. Because the boundary projection is called while the rv3d matrices are still set up for the image render it will look up the wrong pixels from the depth buffer. The solution is to make sure the viewport reset happens before projecting the boundary, i.e. by making sure the reset function is called before `process_image`.
- The aspect ratio needs to be taken into account for the boundary-to-strokes transform, otherwise the placement is wrong depending on how much the region aspect deviates from square.

The code for computing the zoom factor and offset has also been cleaned up and documented somewhat better, and now uses the `Bounds<float2>` struct instead of old `rctf`.

Pull Request: https://projects.blender.org/blender/blender/pulls/131321
2025-01-10 12:17:38 +01:00
Aras Pranckevicius
1b322de0aa Fix #124588: Do not select strip handles when clicking inside time ruler
Inside sequencer_main_cursor, the logic for showing a custom cursor
was already ignoring the time scrub ruler area, and not showing
the strip edge resizing cursors. However confusingly enough, actually
clicking there was still going into the
ED_sequencer_pick_strip_and_handle which found a strip edge and
returned it. Modify ED_sequencer_pick_strip_and_handle to return empty
selection when mouse is inside the time scrub ruler.

Pull Request: https://projects.blender.org/blender/blender/pulls/132891
2025-01-10 11:57:31 +01:00
Habib Gahbiche
9b484b5251 UI: Add hint for snapping inversion in status bar
Followup to https://projects.blender.org/blender/blender/pulls/130379

Status bar now shows correctly that pressing `ctrl` while snapping will invert snapping.

Pull Request: https://projects.blender.org/blender/blender/pulls/131009
2025-01-10 10:12:27 +01:00