Commit Graph

152887 Commits

Author SHA1 Message Date
Clément Foucault
ff09435496 Fix: GPU: Shader: Make shader parser less prone to out of bound issues
Use signed range and indices to avoid dereferencing tokens
before the start of the Token array.

# Conflicts:
#	source/blender/gpu/glsl_preprocess/shader_parser.hh
2025-08-11 14:32:27 +02:00
Clément Foucault
bbd2dcb02d GPU: Shader: Add support for full template specialization
As the title says.
The existing implementation did not support this.

Note that this doesn't support partial specialization.

See #137441 for the original implementation.

This is needed for #143582.

Pull Request: https://projects.blender.org/blender/blender/pulls/144212
2025-08-11 14:26:58 +02:00
Clément Foucault
ca57cf0750 Fix #144174: DRW: Base instance workaround not working
The part of the workaround that was inside the gpu module
was not updated.

Candidate for backporting to 4.5 LTS.

Pull Request: https://projects.blender.org/blender/blender/pulls/144346
2025-08-11 14:22:01 +02:00
Brecht Van Lommel
92b555452b Refactor: Logging: Replace more printf with CLOG
Mainly for images, and a few individual cases in animation, ply, UI, and WM.

Pull Request: https://projects.blender.org/blender/blender/pulls/143447
2025-08-11 14:07:45 +02:00
Brecht Van Lommel
1ebefb8252 Refactor: Logging: Use CLOG for video and ffmpeg
The --debug-ffmpeg flag now is the same as --log video, and only exists for
backwards compatibility. The ffmpeg verbosity can now be controlled with
--log-level.

Pull Request: https://projects.blender.org/blender/blender/pulls/143447
2025-08-11 14:07:45 +02:00
Brecht Van Lommel
af54152b45 Tests: Allow log errors from image loading tests
These include corrupt files, and with upcoming changes to use CLOG in more
places this would otherwise exit on such errors.

Pull Request: https://projects.blender.org/blender/blender/pulls/143447
2025-08-11 14:07:45 +02:00
Brecht Van Lommel
7acd5b3397 Fix: Image as planes add-on sets wrong alpha for OpenEXR files
This simply removes the operator property to set the alpha mode, so that
this can be automatically determined. The None case was already handled
by Use Transparency, and Channel Packed doesn't make sense here.

Ref #144009

Pull Request: https://projects.blender.org/blender/blender/pulls/144074
2025-08-11 13:58:47 +02:00
Clément Foucault
856a2a9f87 Fix: GHOST: Build error
Caused by aafef977fb
2025-08-11 12:39:37 +02:00
Christoph Neuhauser
aafef977fb GHOST: Add environment variable for enabling or disabling vsync
This PR proposes to add an environment variable for forcing vsync to
be on or off. My primary use case was to disable vsync for forcing
viewport rendering performance tests not to be capped at the display
refresh rate when #142984 is used for removing animation frame rate
limits.

I initially added the environment variable "GHOST_VSYNC_OFF", but
found "GHOST_VSYNC=0/1" to be more easily understandable.

Usage:
- GHOST_VSYNC=0 => Vsync is forced off
- GHOST_VSYNC=1 => Vsync is forced on

Pull Request: https://projects.blender.org/blender/blender/pulls/143049
2025-08-11 12:09:21 +02:00
Brecht Van Lommel
2193096106 Cycles: Change normal map node to work with undisplaced normal and tangent
This fits better with the way normal and displacement maps are typically
combined. Previously there was a mixing of displaced normal and undisplaced
tangent, which was broken behavior.

Additionally, to undisplaced_N and undisplaced_tangent attributes must now
always be used to get undisplaced coordinates. The regular N and tangent
attributes now always include displacement.

Ref #142022

Pull Request: https://projects.blender.org/blender/blender/pulls/143109
2025-08-11 12:08:12 +02:00
Christoph Neuhauser
d256cce766 Tests: Overwrite animation FPS limit in EEVEE performance tests
This PR overwrites the FPS limit in the EEVEE performance tests to 1000 FPS.

Background: I have been using the performance tests with, e.g., the Temple scene from the Blender demo files. However, it has configured an animation playback frame rate of 25 FPS. I think for the performance tests it would be more meaningful to render at an unlimited frame rate. Otherwise, one can just see that Temple renders at 25 FPS on pretty much any GPU and it is not possible to measure performance improvements or regressions.

Pull Request: https://projects.blender.org/blender/blender/pulls/142984
2025-08-11 12:07:29 +02:00
Clément Foucault
89d885d652 Fix #144054: EEVEE: Wrong Attribute loading caused by multiview
This was only affecting the shadow pass because it is the
only one to use multiview.

The `drw_ResourceID_iface.resource_index` was incorrectly
set up in the vertex shader to the already shifted index,
resulting in double shift which resulted in resource index
being 0 in fragment shader.

Candidate for backport to 4.5 LTS

Pull Request: https://projects.blender.org/blender/blender/pulls/144341
2025-08-11 12:05:18 +02:00
Brecht Van Lommel
809260885e Fix #143841: Cycles OptiX error adding AO shader with viewport render
Modify shader update so we simplify the graphs first to determine the
kernel features, then load the kernels, and only then update data on the
device. This avoids errors due to mismatched kernels and shaders.

Pull Request: https://projects.blender.org/blender/blender/pulls/144238
2025-08-11 12:05:16 +02:00
Sergey Sharybin
6993f445c6 Libx: Restore macOS libraries hash
It got accidentally changed in #144329.
2025-08-11 12:02:20 +02:00
Jeroen Bakker
1a958af106 Fix #142927: Sculpt artifact resizing dyntopo
When using the resize dyntopo operator the overlay helping to choose
the new size didn't work properly on AMD GPUs. The cause was that only 2
components of the line displacement was initialized.

Also fixes: #83623

Pull Request: https://projects.blender.org/blender/blender/pulls/144338
2025-08-11 11:12:59 +02:00
Bastien Montagne
601b7dbcbb I18N: Update UI translations from git/weblate repository (da8ebe3f8291a7). 2025-08-11 11:07:05 +02:00
Bastien Montagne
a1abf9a64e Fix #136020: Linking: Improve performances of many linked IDs relocation.
The remapping from old to new linked IDs was done one by one, with all
the related pre/post processing. In particular for objects, this could
easily lead to quadratic cost (need to loop over all objects for each
object)...

Solved by reworking the remapping logic in relocation code to process
all linked data in a single call.

From quick tests locally, it makes relocating a library with 10k object
got from 50s to about 5s.

A 40k linked objects case goes from 'way too long to measure' to about 4
minutes.

So there is likely still some things that could be improved here
(processing time still does not seem to be O(n)), but at least it's
usable now.

Pull Request: https://projects.blender.org/blender/blender/pulls/144207
2025-08-11 10:54:03 +02:00
Bastien Montagne
87ec9fc4a7 Animation: Fix crash in versioning code when pose bones are not in sync with Armature data.
Pull Request: https://projects.blender.org/blender/blender/pulls/144210
2025-08-11 10:45:33 +02:00
Casey Bianco-Davis
859431727d Fix #144170: Use Lights defaults to false on newly created objects
This makes it so that newly created Grease Pencil object and layers default
to being affected by lights. This match legacy Grease Pencil.

Pull Request: https://projects.blender.org/blender/blender/pulls/144277
2025-08-11 10:44:34 +02:00
Clément Foucault
7a97105b28 GPU: Remove wrapper type for gpu::StorageBuf
This is the first step into merging DRW_gpu_wrapper.hh into
the GPU module.

This is very similar to #119825.

Pull Request: https://projects.blender.org/blender/blender/pulls/144329
2025-08-11 10:35:53 +02:00
Jacques Lucke
6dca66d606 Fix: Instances: ensure unique instance ids
The previous code to get unique instance ids did not actually ensure 100%
uniqueness. Now the code does and hence the "almost" from the name is removed.
In practice, this change likely does not have any impact because the fallback
case is very unlikely to be reached.

Pull Request: https://projects.blender.org/blender/blender/pulls/144324
2025-08-11 10:03:59 +02:00
Jacques Lucke
eb73729e67 Fix #144314: crash when syncing sockets with recursive closures
The fix is to detect when the compute context is recursive and to stop the
search early in that case. Currently, this does not generate a warning. There
will be a warning when trying to evaluate the recursive closure though.

Pull Request: https://projects.blender.org/blender/blender/pulls/144330
2025-08-11 10:03:21 +02:00
Jacques Lucke
f6ee7e13b2 Fix: Geometry Nodes: wrong data-block default values
This was missing from #144199.
2025-08-11 09:49:10 +02:00
Clément Foucault
9fbf7e9ec2 GPU: Remove wrapper type for gpu::UniformBuf
This is the first step into merging `DRW_gpu_wrapper.hh` into
the GPU module.

This is very similar to #119825.

Pull Request: https://projects.blender.org/blender/blender/pulls/144328
2025-08-11 09:46:45 +02:00
Clément Foucault
1388a70914 GPU: Remove wrapper type for gpu::Shader
This is the first step into merging DRW_gpu_wrapper.hh into
the GPU module.

This is very similar to #119825.

Pull Request: https://projects.blender.org/blender/blender/pulls/144229
2025-08-11 09:34:28 +02:00
Jeroen Bakker
06b32f6c1d Vulkan: Add assert to check valid API usage
Related to #143691.
2025-08-11 09:08:04 +02:00
Jacques Lucke
b37fa3f7db Cleanup: remove duplicate assignment 2025-08-11 08:57:56 +02:00
Jacques Lucke
c8507ed375 Refactor: Geometry Nodes: use SocketValueVariant for data-block types
Use `SocketValueVariant` for all the data-block types as well. Before it was
used for e.g. float, integer and menu sockets.

The only remaining type afterwards is the geometry socket which will be moved
separately.

Using `SocketValueVariant` for all socket types will simplify code later on and
also removes the need for dealing with raw memory in more cases.

Pull Request: https://projects.blender.org/blender/blender/pulls/144199
2025-08-11 08:53:47 +02:00
Jacques Lucke
785a915321 Fix: Geometry Nodes: keep materials on geometries in bundles in simulation/bake
Previously, materials were lost on geometries in bundles.

Pull Request: https://projects.blender.org/blender/blender/pulls/144320
2025-08-11 08:03:43 +02:00
Jacques Lucke
496eb15f21 Fix: Geometry Nodes: fix using constexpr if
MSVC needs the `else` to avoid compiling the rest of the function if it can't be reached.

This is merged from #143171.
2025-08-11 07:42:58 +02:00
Hans Goudey
e0170883d4 Fix #144126: Set Selection node can still fail with incorrect domain
I'm not sure why the edge domain was handled differently than the other
domains with regards to attributes on unexpected domains. Now use a
simpler more consistent solution that removes invalid selection
attributes before they're used at all.
2025-08-10 09:11:36 -04:00
Hans Goudey
12f4b98258 Fix #144272: Render slot list broken
Use a callback function for the button instead of `hardmin` which was
used before ecd8de4bea.
2025-08-10 08:56:48 -04:00
Campbell Barton
cd66e6c1a6 GHOST/Wayland: support server-side key-repeat
Support server side key repeat when building with Wayland >=1.24.
2025-08-10 07:54:54 +00:00
Campbell Barton
7c68d603b6 Cleanup: use braces in case statements 2025-08-10 17:31:46 +10:00
Campbell Barton
0a9720a228 Fix #142871: Two cursors visible when panning over a number button
Resolve regression in [0] where setting the cursor wasn't checking
if a software cursor was used. This would then show the hardware &
software cursors.

[0]: 232b106e64
2025-08-10 16:59:57 +10:00
Campbell Barton
388609e7a7 GHOST/Wayland: minor change to error handling when setting the cursor
Don't early exit in the unlikely event setting the cursor fails,
as this could prevent the tablet cursor from being set.
2025-08-10 16:53:59 +10:00
Campbell Barton
ce3998ffea Refactor: simplify "_bpy_types" initialization internals
- Store the `_bpy_types` dictionary on startup instead of
  importing and setting on demand.

- Remove duplicate `_bpy_types` import.
2025-08-10 03:48:48 +00:00
Campbell Barton
eb2cc80cd0 PyAPI: move bpy_types.py to a private module
Use an underscore prefix as this module should not be accessed directly.
2025-08-10 13:45:40 +10:00
Campbell Barton
be0a16cacf Docs: add note that smooth-view may set the viewport "dist" to zero 2025-08-10 11:32:17 +10:00
Campbell Barton
b3e36d6983 Cleanup: replace unused RNA doc-string with comment
The doc-string used in the manual is stored in RNA.
2025-08-10 11:23:45 +10:00
Aaron Carlisle
8c932cb507 Docs: Update RNA to user manual URL mapping 2025-08-09 19:28:54 -04:00
Aaron Carlisle
b05c7e96b7 PyDocs: Update Sphinx / Theme 2025-08-09 19:06:34 -04:00
Aaron Carlisle
9188ce10e7 Cleanup: Format 2025-08-09 19:01:39 -04:00
Aaron Carlisle
86cd240c57 PyDocs: Add Macro example
- Adds a doc string for the Macro class
- Adds a basic example

Fixes #blender-manual/issues/51387
2025-08-09 18:43:14 -04:00
Aras Pranckevicius
1cf265988b Fix #144254: VSE proxies for image sequences do not work
Broken with new 4.5 cache implementation; the loop for building
image sequence proxies was not flushing the intra-frame cache
between frame changes. This affects image proxies since they go
through the whole VSE render stack; does not affect video proxies
since they just manually decode the file frames.

Pull Request: https://projects.blender.org/blender/blender/pulls/144269
2025-08-09 21:27:10 +02:00
Harley Acheson
91ebf29877 UI: Optionally Indicate Region Overflow
This PR adds a region flag to specify that it should indicate, with a
line or gradient, that content overflows any edge. This then enables
this for the Properties area and categories, Outliner, Spreadsheet,
File Browser main area, Asset Browser, Preferences, 3D View Sidebar and
Toolbar. And for headers.

Pull Request: https://projects.blender.org/blender/blender/pulls/144091
2025-08-09 19:15:21 +02:00
Hans Goudey
993a85047b Fix: Revert part of previous fix breaking curves tests
The change changes the way the converted curves are evaluated.
It may be better and a valid choice, but it needs to be considered
more carefully since it would be a breaking change.
2025-08-09 11:40:24 -04:00
Sybren A. Stüvel
bfd43d4320 Build files: add note that certain files should be py3.6 compatible
Add a note to `build_files/utils/README.md` that explains the Python files
in that directory have to be compatible with Python 3.6.

Pull Request: https://projects.blender.org/blender/blender/pulls/143792
2025-08-09 16:57:10 +02:00
Laurynas Duburas
88241bc51e Fix: Curves: Various fixes for poly curves
Hides Resolution field in "Curve Data" panel if at least one poly curve
is selected. For these curves, the field is ignored. Moreover its value
is `0` for them, for all other curve types minimum is `1`.

Also conversion of `CURVE_TYPE_POLY` to `CURVE_TYPE_NURBS` is fixed to
emit curves of order 2. This gives same shape as input had. Resolution
is set to `1`, because "Curve to Mesh" node ignores curves with
Resolution `0`.

Pull Request: https://projects.blender.org/blender/blender/pulls/144239
2025-08-09 16:33:17 +02:00
Campbell Barton
510b51391f Modeling: support maintaining the active object when pasting
Maintain the active object for the 3D viewports clipboard.
This avoids the need to activate the object after pasting to edit
its materials or change modes.

Matches the behavior for notes (see !143832) and addresses #143833.

Ref !144192
2025-08-09 21:50:22 +10:00