Commit Graph

123098 Commits

Author SHA1 Message Date
demeterdzadik@gmail.com
43f8efbf82 Partial versioning code, very much WIP
Just committing to transfer to another computer.
2025-09-16 17:59:54 +02:00
Sybren A. Stüvel
229a84ef90 Move versioning into the 'this always runs' block until we land the PR 2025-09-16 17:59:54 +02:00
demeterdzadik@gmail.com
d4c99b871c remove prints 2025-09-16 17:59:03 +02:00
demeterdzadik@gmail.com
17ea75d929 Add versioning 2025-09-16 17:59:03 +02:00
Clément Foucault
9d0fe5573b GPU: FrameBuffer: Remove GPUFrameBuffer wrapper opaque type
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/146372
2025-09-16 17:50:48 +02:00
Clément Foucault
ecc495ac39 EEVEE: Optimize Principled BSDF compilation time
This removes unused closure branches in the principled BSDF
code using the Material flags.

On top of this, use constants for weights to use compiler
dead code eliminitation for unused branches when there
is different variants of the principled BSDF node used.

Finally, remove Gbuffer packing cases that are not present
inside the nodetree.

Testing with the same setup as #145347:
|          | main (ms) |  PR (ms) |   Delta (ms) |
| -------- | ----------- | ------------ |------------ |
| Nvidia   |         174 |  132 (1.31x) |          42 |
| Mesa AMD |         191 |  170 (1.12x) |         21 |

Barbershop compilation time is almost equal because it is not using
the principled BSDF.

Rel #145347

Pull Request: https://projects.blender.org/blender/blender/pulls/146324
2025-09-16 16:44:01 +02:00
Philipp Oeser
60978e0b90 Fix #146349: 3D cursor still draws even though location is offscreen
Can happen if you set cursor location by snapping or manually.

In order to really skip drawing in `draw_output`, we have to set
`enabled_` to false in `begin_sync`.
This is already done for the "simple" cases covered by
`is_cursor_visible_XXX` but not for the "special" case where the cursor
is clipped in the view.

This is what this PR does.

Pull Request: https://projects.blender.org/blender/blender/pulls/146354
2025-09-16 16:09:21 +02:00
Clément Foucault
9bbbd833b2 Fix: Material: Compilation error for GPU material using voronoi node
This was caused by a wrong include.
2025-09-16 14:50:03 +02:00
Sean Kim
7eb84ebd90 Python: Print script errors with CLOG
Currently, when a python error is encountered when rendering the UI, the
corresponding message is printed to stdout / stderr via `PyErr_Print`,
this patch modifies behavior so that a cursory message is also printed
with CLOG

This has the benefit of allowing for testing via
`--debug-exit-on-error`, which aborts Blender when an error message is
printed.

Pull Request: https://projects.blender.org/blender/blender/pulls/146296
2025-09-16 14:34:14 +02:00
Julian Eisel
0a1b7ca067 UI: Amend description of asset shelf registration property
Unlike some other UI types, specifying the space type with this property
doesn't guarantee the asset shelf will only be shown in this space type.  This
is an important behavioral detail that's easily missed.
2025-09-16 14:15:35 +02:00
Jacques Lucke
ba81f03c41 Fix: Geometry Nodes: assert with a boolean input after recent refactor
The bug was there before, which is now found by an assert added in
84511b8509.

This used to be an integer property in the past before there were
boolean id properties.
2025-09-16 13:56:44 +02:00
Philipp Oeser
b474325aa1 Fix #146288: Crash displaying frames without a scene
Caused by ab43c57a2a

The VSE allows for "no scene", prior to above commit an "arbitrary"
framerate of 25 was hardcoded to display "something" in that case.

To resolve, pick what we defined as default for framerate (getting rid
of the "arbitrary") in case we have no (VSE) scene.

NOTE: that is 24 atm (instead of the hardcoded 25 we had before)
Pull Request: https://projects.blender.org/blender/blender/pulls/146300
2025-09-16 10:56:59 +02:00
T0MIS0N
416b9990c8 Fix: Artifacting in experimental texture paint on non-manifold meshes
When texture painting a non-manifold mesh, various artifacts are created
on the image texture.

To add seams to the edges of non-manifold UV islands, the texture
painting system reads and writes pixels near the edge of the UV islands.

The offset calculations used to find pixel positions for reading and
writing were not accounting for color channels (RGBA) in the pixel data.
Because of this, the reading function corrupted the color data for the
seams, and the writing function caused the seams to be scaled down and
repeated.

Pull Request: https://projects.blender.org/blender/blender/pulls/146110
2025-09-16 10:05:24 +02:00
Oxicid
b27b7b1803 Fix #146171: Pack Islands from Python fails if Escape has been pressed
Ref !146195
2025-09-16 18:00:30 +10:00
Philipp Oeser
d980cea379 Fix #146252: Grease Pencil: Tag ID update after convert from text
Same situation as in #138793, so same solution as 1cb20d444e

Converting from text (via legacy curves) to grease pencil with "Keep
Original" option enabled can cause the new grease pencil ID to not be
evaluated, leading to an situation where a evaluated grease pencil
object would point to the original legacy curve ID as its object data.
This fix added a depsgraph tag so it ensures the COW ID is the latest.

Pull Request: https://projects.blender.org/blender/blender/pulls/146314
2025-09-16 09:05:51 +02:00
Clément Foucault
c3688e9d05 Fix #146132: EEVEE: Use uniform to additional data layer
Workaround driver bug.

Pull Request: https://projects.blender.org/blender/blender/pulls/146329
2025-09-16 08:57:35 +02:00
Campbell Barton
2e85163d10 Cleanup: use std::trunc(..) 2025-09-16 16:44:14 +10:00
Campbell Barton
7e51e78696 Fix #141547: Python API: Filebrowser crash in background mode
Raise an exception instead of crashing when calling deselect_all from
the file selector in background mode.
2025-09-16 16:30:21 +10:00
Campbell Barton
96d7c5c4cd Cleanup: use braces in mathutils switch statements
Also move error checking before variable declarations.
2025-09-16 14:53:58 +10:00
Oxicid
b2176bfdd7 PyAPI: use the vectorcall protocol for mathutils types
The Vectorcall protocol avoids creating a tuple, and also provides the
number of arguments in advance, providing a ~1.6x speedup for creation
of mathutils types.

Ref !146237
2025-09-16 04:50:38 +00:00
Jesse Yurkovich
d26a79b144 Core: Reduce cost of DupliObject random_id generation
Each dupli is given a PersistentId which is 8 integers, 1 for each level
of recursive duplication that Blender supports. When an instance belongs
to fewer than 8 levels, the id is padded with sentinel values for the
remaining levels. For example, a 2 level dupli may have a persistent id
like:`[7, 4, INT_MAX, INT_MAX, INT_MAX, INT_MAX, INT_MAX, INT_MAX]`

When calculating the instance's `random_id` we were considering all 8
values of the Persistent Id which is unnecessary and wasteful. Now we
only use the minimal values necessary. This does mean that the Object
Info: Random material socket changes values from prior versions however.

This improves the performance of the viewport in some instancing
scenes by roughly 4-6%.

Co-authored-by: Bastien Montagne <mont29@noreply.localhost>
Pull Request: https://projects.blender.org/blender/blender/pulls/145150
2025-09-16 02:15:43 +02:00
Hans Goudey
c9cd749bf1 Cleanup: Use attribute API for "Reset UVs" function
Also make the implementation local, and take an attribute name
argument rather than the index of the UV map.

Pull Request: https://projects.blender.org/blender/blender/pulls/146342
2025-09-15 23:09:35 +02:00
Hans Goudey
0686ceffd1 Fix: Geometry Nodes output attributes hidden
Caused by ad27211b77
2025-09-15 15:35:18 -04:00
Jeroen Bakker
47fc709987 Fix #146313: Vulkan: Memory leak HDR backbuffer shader
Oversight in !146170 where shader pointers where overwritten each
frame. Should also be a performance regression.

Pull Request: https://projects.blender.org/blender/blender/pulls/146319
2025-09-15 21:01:25 +02:00
Casey Bianco-Davis
ce2005318a Fix: Grease Pencil: Points with zero aspect ratio not displayed
A aspect ratio less than or equal to zero will cause point to not be
displayed.
This behavior problematic because use strokes create by Geometry Nodes
(or bugs) can cause the `aspect_ratio` to default to zero.
And as there is currently no operator to set `aspect_ratio` this
invisible geometry can not be fixed by most users.

This PR fixes this by returning `1.0f` when the `aspect_ratio` is
invalided.

Pull Request: https://projects.blender.org/blender/blender/pulls/146279
2025-09-15 18:51:33 +02:00
Casey Bianco-Davis
4fb784b97f Fix #142691: Grease Pencil: Reset Vertex Color obstructs materials
The default value for the `vertex_color` attribute is `0.0f` not `1.0f`
so the `Reset Vertex Color` operator should set zero, to no obstruct
the base material.

Candidate for backport to 4.5 LTS.

Pull Request: https://projects.blender.org/blender/blender/pulls/146277
2025-09-15 18:41:00 +02:00
Casey Bianco-Davis
51f9fccc81 Fix: Grease Pencil: Draw tool default aspect_ratio and u_scale to zero
The draw tool would create the `aspect_ratio` and `u_scale` attributes
if they did not exist, but would set them to `0.0f` not `1.0f`

Pull Request: https://projects.blender.org/blender/blender/pulls/146276
2025-09-15 18:38:05 +02:00
Pablo Vazquez
ae7f3a0d18 Fix #146284: Missing Navigation Bar in Preferences
Follow up to !146169

- Add versioning so the new sidebar shows up in old files.
- Remove the hidden flag so it shows up in new Preferences editors.
- Add "Sidebar" toggle to the View menu, and expose region toggle.

Pull Request: https://projects.blender.org/blender/blender/pulls/146321
2025-09-15 18:11:37 +02:00
marcopavanello
084aefd0e0 Render: Add Multiple Scattering Sky Texture
This mode is based on the same athmospheric model as the previous one, but now
also accounts for multiple scattering and reflections from the ground.
This increases the accuracy, especially at low elevations.

Also renames some options for consistency:
- The previous "Nishita" model is now "Single Scattering"
- "Dust" is now "Aerosols"
- Default altitude is now 100m.

Co-authored-by: Lukas Stockner <lukas@lukasstockner.de>
Pull Request: https://projects.blender.org/blender/blender/pulls/140480
2025-09-15 18:08:28 +02:00
Hans Goudey
cf0703aa6e Sculpt: Improve and optimize undo data compression
Prefilter the position float data similar to what was done recently for
point caches in 3d9155eb0a (more information about this
compression technique is linked there). Also avoid reallocating an
array for temporary data when processing each BVH node. The results
are great relative to the size of the change:

- Building the compressed undo step data gets 5.2x faster (25 to 5 ms)
- Restoring the compressed undo step on undo is 1.8x faster (10 to 5 ms)
- The memory usage for an undo step is 1.6x smaller (23 to 14 MB)

I Tested on a mesh with 1.8 million vertices, with an operation affecting
the entire mesh. The mesh data affected will have an affect on the results.

Pull Request: https://projects.blender.org/blender/blender/pulls/146093
2025-09-15 17:57:36 +02:00
Sybren A. Stüvel
b466c6a99f Fix #145635: Tree View: Selection not working
Adjust the poll function of the 'Set Active Modifier' operator
(`object.modifier_set_active`) to only return `true` when it's run in a
context that actually may have a modifier. This makes it work in the
Modifiers panels, but not in other panels, so that the 'mouse click'
event can be used for other operators (like tree view selection).

This is not a perfect solution, as the modifier panel may use tree views
in some future as well, but at least it seems to fix the 'unbreak now'
issue.

Pull Request: https://projects.blender.org/blender/blender/pulls/146325
2025-09-15 17:49:07 +02:00
Casey Bianco-Davis
63a5206145 Fix: Curves: Select Alternate operator not selecting handles
This makes it so that the `Select Grouped` operator will selected Bezier
handles. And Points with handles selected will be used included in the
group.

Part of #121574

Pull Request: https://projects.blender.org/blender/blender/pulls/145191
2025-09-15 17:37:21 +02:00
Clément Foucault
50283b9573 GPU: Split GLSL, C++ and metal shader defines
This makes all the defines and boiler plate code use
the generated source include system.

This makes source hierarchy more understandable.

Pull Request: https://projects.blender.org/blender/blender/pulls/146289
2025-09-15 17:22:19 +02:00
Jeroen Bakker
1dedbe3f9a Fix: Vulkan: VMA validation errors
Fixes several validation errors when using VMA.
- Always enable buffer device address in VMA as it is already a Blender
  requirement.
- Add host access hints when host access is needed.

Pull Request: https://projects.blender.org/blender/blender/pulls/146312
2025-09-15 16:47:26 +02:00
Pablo Vazquez
4d016a7b4f UI: Geometry Nodes: Use icon for node-tree subtype
Every Node Editor sub-type selector has icons, only Geometry Nodes
was missing it.

Pull Request: https://projects.blender.org/blender/blender/pulls/146298
2025-09-15 16:29:33 +02:00
Clément Foucault
680fec144c Cleanup: GPU: Remove prefix 'e' from enum types
_No response_

Pull Request: https://projects.blender.org/blender/blender/pulls/146034
2025-09-15 15:11:02 +02:00
Sean Kim
5b02341a11 UI: Add ability to collapse paint pressure curves
This commit builds off of 5f8311f596 to support collapsing the custom
paint curve to reduce the amount of information shown to the user.

To support this, a new field is added to the `Paint` struct for this
visibility flag. This value is stored on a per-mode level, not a
per-brush level, as a user editing this curve is likely to not need
the visibility granularity on a per-brush basis.

Additionally, changes are included here to draw the curve button
itself as inactive if the parent layout it is part of is inactive.
Notably, this does not make the curve read only - it only changes
the appearance.

Pull Request: https://projects.blender.org/blender/blender/pulls/145699
2025-09-15 14:45:50 +02:00
илья _
433b61ccac Fix: CLG context is not initialized for some tests
Mesh validation log some steps even in case of valid result. And with
#132492, this validation will be part of code to create cuboid. So all
this tests will log something.

Pull Request: https://projects.blender.org/blender/blender/pulls/146234
2025-09-15 14:32:19 +02:00
Clément Foucault
b7d3b22db4 EEVEE: Move AOV clearing to its own separate pass
This splits the clearing code in a separate shader,
avoiding overhead for all material.

Testing with the same setup as #145347:
|          | main (ms) |  PR (ms) |   Delta (ms) |
| -------- | ----------- | ------------ |------------ |
| Nvidia   |         194 |  174 (1.11x) |          20 |
| Mesa AMD |         200 |  191 (1.04x) |           9 |

Pull Request: https://projects.blender.org/blender/blender/pulls/146286
2025-09-15 14:24:29 +02:00
Omar Emara
e9638b4a0a Compositor: Turn Double Edge Mask node menus into inputs
This patch turns the double edge mask node menus into two boolean
inputs.

Pull Request: https://projects.blender.org/blender/blender/pulls/146304
2025-09-15 13:45:34 +02:00
Omar Emara
3b1faf7594 Compositor: Turn menu options to sockets for pixel nodes
This patch turns node Menu options into menu inputs for Pixel nodes.

Pull Request: https://projects.blender.org/blender/blender/pulls/145596
2025-09-15 12:47:06 +02:00
Clément Foucault
bb8e987904 GPU: Simplify matrix lib to reduce dead code
This greatly reduce shader compilation time on some systems.

Pull Request: https://projects.blender.org/blender/blender/pulls/146100
2025-09-15 12:07:26 +02:00
Sean Kim
090b6efb62 Fix: Avoid potential crash when reading old blendfiles
Various runtime fields were being accessed before the runtime struct
itself was created in a newly allocated ID block. Additionally, the
call to `BKE_reports_init` is already handled by the
`WindowManagerRuntime` constructor.

Pull Request: https://projects.blender.org/blender/blender/pulls/146258
2025-09-15 11:30:52 +02:00
Bastien Montagne
678be7a703 Fix #146077: Pointers to Duplicated Scenes in Duplicated IDs are not updated.
The new duplicate copy of the scene itself was not properly set-up to
allow the usages of its source to be remapped to the new copy.

Pull Request: https://projects.blender.org/blender/blender/pulls/146177
2025-09-15 10:30:38 +02:00
Omar Emara
78e58bd595 Fix #146133: Render Layers doesn't work in viewport
The Render Layers node doesn't work if a viewlayer other than the first
is selected. This was hard coded in code, so we just allow any view
layer, on the condition that it is the active one.

Pull Request: https://projects.blender.org/blender/blender/pulls/146285
2025-09-15 10:27:14 +02:00
Omar Emara
68bccbaeee Nodes: Recursively apply usage inference
This patch extends the usage_by_menu method to also consider the usage
of the menu socket in the make available and usage inference callbacks.
This essentially means that if a socket depends on menu B which, in
turn, depends on menu A, it will be sufficiently to check the value of
menu B, while A will be checked recursively.

The single variant of the usage_by_menu function is now implemented in
terms of its overloaded vector variant for code deduplication since the
new code increase the size quite a bit.

Pull Request: https://projects.blender.org/blender/blender/pulls/146141
2025-09-15 09:09:43 +02:00
Habib Gahbiche
1b4daf9d2e Nodes: remove "Use Nodes" in Shader Editor for Object Materials
"Use Nodes" was removed in the compositor to simplify the compositing
workflow. This introduced a slight inconsistency with the Shader Node
Editor.

This PR removes "Use Nodes" for object materials.

For Line Style, no changes are planned (not sure how to preserve
compatibility yet).
This simplifies the state of objects; either they have a material or
they don't.

Backward compatibility:
- If Use Nodes is turned Off, new nodes are added to the node tree to
simulate the same material:
- DNA: Only `use_nodes` is marked deprecated
- Python API:
  - `material.use_nodes` is marked deprecated and will be removed in
6.0. Reading it always returns `True` and setting it has no effect.
  - `material.diffuse_color`, `material.specular` etc.. Are not used by
EEVEE anymore but are kept because they are used by Workbench.

Forward compatibility:
Always enable 'Use Nodes' when writing blend files.

Known Issues:
Some UI tests are failing on macOS

Pull Request: https://projects.blender.org/blender/blender/pulls/141278
2025-09-14 17:53:54 +02:00
Campbell Barton
62d791c8d6 Cleanup: only use "r_" prefix for return arguments 2025-09-14 23:03:01 +10:00
Campbell Barton
d1b76b6554 Cleanup: only use "r_" prefix for return arguments
Ref !146253
2025-09-14 11:08:50 +00:00
Sean Kim
a48b0abe19 Fix: Curve and Line stroke types can have incorrect spacing behavior
The intent of the Curve and Line stroke types is generally to perform
a set of equally spaced points. Unlike drawing with a tablet using the
Spacing stroke type, pressure should have no influence on this input.

Previously, the code would pass in a hardcoded value of 1.0f for the
line & curve pressure. This is incorrect, as it results in a factor of
0.5f, not 1.0f, causing behavior to differ on this stroke type depending
on if the corresponding brush pressure flag was enabled or not.

Additionally, an extra check is used to ensure that only the Spacing
stroke type can have pressure modulated in this way.

Pull Request: https://projects.blender.org/blender/blender/pulls/146120
2025-09-14 11:11:24 +02:00