Commit Graph

122662 Commits

Author SHA1 Message Date
Brecht Van Lommel
20a19c7aa4 Vulkan: Tweaks to improve HDR display on Windows
* Improve accuracy of warning when HDR display is not supported, taking into
  account HDR mode on/off on Windows.
* When HDR mode is disabled on Windows, don't create a HDR swapchain. This
  saves memory, and avoids a color difference on NVIDIA. That's because NVIDIA
  is the only GPU we've tested that allows a HDR swapchain when HDR mode is
  off, and we don't currently know the expected transforms for that case.
* Recreate swapchain when HDR mode on/off switch is detected.
* Update HDR info when window gains focus.

Note this means there is no wide gamut when Windows HDR is off, but it was
already not working. For that we may need to add support for something like
10bit VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT, or whatever is commonly
available outside of HDR mode.

Pull Request: https://projects.blender.org/blender/blender/pulls/144959
2025-08-28 11:03:24 +02:00
Campbell Barton
58f0fd6a6b Fix: support loading blend files with text from v1.70 (#2)
Resolve another issue loading text form old files.
The Curve::len_char32 isn't always set, detect this and initialize
it from the string.
2025-08-28 18:20:09 +10:00
Philipp Oeser
cd358096d4 Cleanup: rename pose_edit_bone_duplicate > post_edit_bone_duplicate
This goes together with pre_edit_bone_duplicate(), so the existing name
is misleading.
(this change came with c2371028e0 , probably just a typo there)

Pull Request: https://projects.blender.org/blender/blender/pulls/145226
2025-08-28 10:13:57 +02:00
Jeroen Bakker
31fa6b62f9 Fix: Vulkan: Incorrect framebuffer size
When a file is loaded with a minimized window the VKFramebuffer can
contain incorrect texture/data that result in a crash when maximizing the
window.

Pull Request: https://projects.blender.org/blender/blender/pulls/145171
2025-08-28 09:38:39 +02:00
Jeroen Bakker
56784c2681 Fix: Python: incorrect assert when reading back framebuffers
Detected when looking into #144887

Pull Request: https://projects.blender.org/blender/blender/pulls/145165
2025-08-28 09:19:29 +02:00
Omar Emara
149a47ba57 Compositor: Turn Menu options to inputs
This patch turns node Menu options into menu inputs. This patch only
covers node operations like Filter, Distort, and so on. Pixel nodes like
Color Balance, Matte, and so on will be done in a separate patch.

Pull Request: https://projects.blender.org/blender/blender/pulls/144495
2025-08-28 08:45:23 +02:00
YimingWu
a623efe42a Fix #145287: Don't touch original mesh when converting to grease pencil
Previously `BKE_id_material_clear` is used on the original mesh data for
clearing mesh array when converting mesh objects into grease pencil,
this is not desired because:

1. It damages original mesh data block, if the mesh is shared across
   multiple objects, this can lead to unwanted changes.
2. Converting multiple mesh objects that shares one mesh can crash
   because the now-modified mesh data block is not fully evaluated and
   subsequent conversions aren't able to get a valid mesh.

By removing the `BKE_id_material_clear` call we can make the conversion
work as expected. Since we replace the object data and reset material
count in the object, the material array in the original mesh shouldn't
pose any influence on the result of the conversion.

Pull Request: https://projects.blender.org/blender/blender/pulls/145288
2025-08-28 08:16:49 +02:00
Campbell Barton
3a39f9575e Fix: error displaying 3D text for v1.70 blend files
Regression from [0] which used Curve::type for file reading
which doesn't exist in old files [1] then raised an assertion
when the curve was evaluated.

This error was only found when back-porting to 4.5 since it was
triggered by big-endian tests which have since been removed.

[0]: 8fea423e00
[1]: e17677ce73
2025-08-28 15:12:52 +10:00
Campbell Barton
ee000da266 Fix #144751: NDOF, pan/zoom reversed in orthographic views, in fly mode
Use viewport navigation options in the orthographic view as well.
While the intention was to have the 3D-navigation preference only
impacting 3D views, inconsistencies between 2D/3D views tend to be
confusing for users, so use the same behavior in both.

Also expose the preference in the "3D Mouse" popup for 2D views as
this preference is used there as well.
2025-08-28 02:35:03 +00:00
Guillermo Venegas
ab078f5122 Refactor: UI: use C++ types in interface_align
This simplifies a bit the code, and avoids manual
allocation/deallocation.
Few variables are initialized in place, `ui_but_can_align`
is simplified too.

Not user visible changes expected.

Pull Request: https://projects.blender.org/blender/blender/pulls/145051
2025-08-28 03:21:20 +02:00
Sean Kim
3d82f6d281 Cleanup: Remove outdated reference to bpy_props.cc enum
Duplicate enums were removed in 94444aaadf

Pull Request: https://projects.blender.org/blender/blender/pulls/145280
2025-08-28 03:14:18 +02:00
Sean Kim
e02eb13a59 Fix #144035: Image Editor ignores face selection
Introduced in 24d08e0bae

The above commit introduced a new batch for drawing UVs in the Image
editor that does not consider face selection when drawing the
corresponding UV map. This was done to reuse the IBO used in object
mode.

Unfortunately, this change didn't account for the case of being able to
select faces in the 3D Viewport (i.e. in Edit or Texture Paint mode)
while also viewing the Image Editor in Paint Mode.

To fix this, the following changes have been made:

* Introduce a new case when drawing the `MeshUV` overlay for objects
  being edited.
* Add two new IBO types and a new batch type to clearly differentiate
  between the above cases when extracting mesh data.
* Fixes some incorrect usage of the `sync_selection` concept

Pull Request: https://projects.blender.org/blender/blender/pulls/144105
2025-08-28 03:11:21 +02:00
Campbell Barton
20f9f5f4c6 Cleanup: remove unused VPaint::radial_symm 2025-08-28 09:42:32 +10:00
Campbell Barton
f3cd4a26c6 Cleanup: remove use of Object::track when updating physics dependencies
This is only used for versioning.
2025-08-28 09:27:08 +10:00
il4n
5387b57863 Fix: VSE: Reassign Inputs Overlap
If the inputs being reassigned to were in a different frame position
than the previous ones, the new effect strip position could overlap
with other strips in the way.

The fix shuffles the effect strip's channel, like is done in the other
operators.

Pull Request: https://projects.blender.org/blender/blender/pulls/145267
2025-08-28 00:57:04 +02:00
Harley Acheson
b244be05a6 Fix #141455: Panel Category Tab Jiggling
Fixing a few places where we don't correctly convert floats to integers
with rounding. The most important being the measurement of the label
strings.

Pull Request: https://projects.blender.org/blender/blender/pulls/145277
2025-08-28 00:35:11 +02:00
Sean Kim
3e21f2b803 Paint: Add tablet pressure to status bar
This commit updates the generic paint operator modals to display the
current tablet pressure if a tablet is being used in the status bar
if Blender is started with `--debug-value 887`

Pull Request: https://projects.blender.org/blender/blender/pulls/144946
2025-08-27 23:45:48 +02:00
Miguel Pozo
0cf4d39aa9 GPU: Improve the do_static_compilation_ check coverage (2)
162a24e05d had to be reverted, since it
didn't take into account other types of dynamically generated
`ShaderCreateInfo` (external shaders like OCIO or Python ones).
This just marks `ShaderCreateInfo`s as generated by default and only
sets the ones from gpu_shader_create_info_list as non generated.

Pull Request: https://projects.blender.org/blender/blender/pulls/145128
2025-08-27 20:17:04 +02:00
Jesse Yurkovich
7111e95527 USD: Import UsdNurbsCurves as Curves instead of old Curve
Refactor and revamp import and export of `UsdGeomNurbsCurves` prim
objects.

Fixes #130056, among other things.

Summary of changes and enhancements:
- Export:
  - Write out `nurb_weight` attribute as the USD `pointWeights` primvar
  - Properly write out cyclic NURBS curves data (* see notes)
- Import:
  - Import using the new `Curves` datablock rather than the old `Curve`
  - Properly read in cyclic NURBS curves data (* see notes)
  - Tries harder to match incoming knot vector to standard `knots_mode`,
    will use Custom otherwise
  - Support import of all custom primvars and data attached to the prim
    (for use with Geometry Nodes etc.) (* see notes)

Tests were added which check a variety of point count, order, knot_mode,
and cyclic combinations (generated through Geometry Nodes). A small
number of hand-crafted curves were used to test the Custom knots_mode
support on import. Additionally, the tests cover the case when there are
multiple curves defined for a single object.

Notes:
- Cyclic NURBS support is reliant on the current, under-spec'd, USD
  documentation. Changes may be required in the future if/when the USD
  spec is clarified: https://github.com/PixarAnimationStudios/OpenUSD/issues/3740
- Some Cyclic x knots_mode combinations are not correct and would
  require more research to determine how to properly address.
- Custom attributes are not imported for Cyclic NURBS curves yet. Those
  will require additional work to function correctly and are also
  reliant on seeing how the USD spec changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/143970
2025-08-27 19:34:46 +02:00
Hans Goudey
c61d958872 Cleanup: Simplify arraystore since custom data sharing info is required
Since 947658d1b2, sharing info
is required for custom data layers where the size is non-zero and the
data is not null. Just remove some checks based on that.

Pull Request: https://projects.blender.org/blender/blender/pulls/145258
2025-08-27 18:56:39 +02:00
Hans Goudey
24c87d5020 Cleanup: Remove valid mesh check in set custom normals code
For certain invalid meshes (BKE_mesh_is_valid returns false), the
corner space indices might be invalid. However, this is no different
than any other place that code relies on valid mesh inputs; there is
no reason for the face corner normals code alone to bear the burden
of checking for invalid input meshes. Typically we choose not to
slow down the common case or increase its complexity for checks
like this, and the assumption that all corners are in a fan space may
help to simplify this code in the future.

Pull Request: https://projects.blender.org/blender/blender/pulls/145131
2025-08-27 17:47:08 +02:00
Hans Goudey
d61064ae9b Cleanup: Remove unnecessary operator< in draw code
There was a misunderstanding when these types were
added that operator< was necessary for blender::Map.

Pull Request: https://projects.blender.org/blender/blender/pulls/145199
2025-08-27 17:46:41 +02:00
Hans Goudey
18fc19b4fe Cleanup: Rename "mloopuv" to "uv_map"
The old name refers to the `MLoopUV` struct which isn't use anymore.

Pull Request: https://projects.blender.org/blender/blender/pulls/145251
2025-08-27 17:44:08 +02:00
Miguel Pozo
928e654b9a Fix: Draw: Attribute Viewer doesn't work
Regression from 8adb3e758f.

Pull Request: https://projects.blender.org/blender/blender/pulls/145249
2025-08-27 17:05:17 +02:00
илья _
33933a6eb4 Fix #145234: Mesh normals calculation division by zero error
Skip any normals calculations for faceless mesh so no zero division
happens later. This may also improve performance since before
we visited all mesh vertices for no reason.

Pull Request: https://projects.blender.org/blender/blender/pulls/145237
2025-08-27 16:14:01 +02:00
Clément Foucault
03296e6679 GPU: Remove unused workarounds
The line workaround is no longer necessary since the
shader now uses SSBO and is less likely to have
issues (more tested path).

The source patching is now always done in the GL and VK
backend before compilation.

Pull Request: https://projects.blender.org/blender/blender/pulls/145240
2025-08-27 16:01:07 +02:00
Christoph Neuhauser
ad4adccdeb GPU: Added image format validation for shader image bindings
The OpenGL specs require that the storage image qualifier in shaders
(e.g., "rgba32f") needs to be compatible with the format of a bound image
(see https://registry.khronos.org/OpenGL/specs/gl/glspec46.core.pdf#page=318).

We know that Blender currently does not handle this correctly in
multiple places. AMD and NVIDIA seem to silently ignore a mismatch and
just seem to use the format of the bound image. However, for the
Intel Windows drivers, this seems to lead to visual corruptions
(#141436, #141173). While a more graceful handling of a mismatch may
be nice, this is in line with the OpenGL specs.

This PR adds code for validating image formats for bindings.

Pull Request: https://projects.blender.org/blender/blender/pulls/143791
2025-08-27 15:43:09 +02:00
Sebastian Parborg
f5f3013113 FFmpeg: Remove deprecated variable (fixes ffmpeg 8 compilation)
We needed to remove `AV_INPUT_BUFFER_MIN_SIZE` as ffmpeg8 has removed it: [Changelog](4811518143:/doc/APIchanges#l468
)

Pull Request: https://projects.blender.org/blender/blender/pulls/145183
2025-08-27 15:26:56 +02:00
Clément Foucault
fa3355c505 Refactor: GPU: NodeLink shader to remove need of instance attributes
Use SSBO loads instead.

Contains a cleanup pass to bring this shader to current shader
standards.

This removes the non-instance version of the shader as it is
not necessary anymore.

The motivation for this is to remove the instance buffer from
the batch API.

Pull Request: https://projects.blender.org/blender/blender/pulls/145238
2025-08-27 15:24:22 +02:00
Clément Foucault
7becc38a3c GPU: Make text rendering not use instance buffer
Use SSBO loads instead.

Add a new `GlyphQuad` interface.

Note that this reduces the size of glyph batch since the
buffer is always fully uploaded.
Can be improved with partial update later on if that causes
significant performance regression.

The motivation for this is to remove the instance buffer from
the batch API.

Pull Request: https://projects.blender.org/blender/blender/pulls/145225
2025-08-27 14:52:19 +02:00
Falk David
117e660491 Fix #144900: Assert hit when changing/removing the default eraser
The default eraser property should not refcount the Brush ID.

Pull Request: https://projects.blender.org/blender/blender/pulls/145229
2025-08-27 14:40:21 +02:00
Casey Bianco-Davis
fad44198a3 Fix #130293: Grease Pencil: Edit mode Join operator splits points
When the `Join` operator was added to Grease Pencil v3 the behavior when
joining points was changed. The selected point would now be split from the
existing strokes and put into a new one.
This behavior is often undesirable, leading to multiple user reporting it as a
bug  #130293, #141368, #131036, #132201, #136144 and #144300.

This PR adds a new mode, `Join Strokes` that behaves the same as legacy
grease pencil, and sets it as default. This PR also renames the existing modes
to `SplitAndCopy`, `SplitPoints` to better indicate the expected behavior.

Pull Request: https://projects.blender.org/blender/blender/pulls/144666
2025-08-27 14:21:11 +02:00
Casey Bianco-Davis
11afddc681 Fix: Grease Pencil: Join operator connects wrong ends and crashes
Sometimes when joining two or more strokes ends that were not close would be merge.

This was caused by using `dst_drawing` instead of `tmp_drawing`. The function
`compute_closest_range_to` would try to the the first and last point by using the drawing
that the `PointsRange` would have a pointer to.
But the `working_range` would point to `dst_drawing` with would have the `CurveGeometry`
of `dst_curves` instead of `tmp_curves`
This would lead to the wrong first and last points being used for deciding which end
to connect.

This problem could also lead to a crash by trying to get a curve that does not exist.

Pull Request: https://projects.blender.org/blender/blender/pulls/144668
2025-08-27 13:39:36 +02:00
Sybren A. Stüvel
b33e372d02 Nodes: ensure tree topology cache is up to date before iterating sockets
Call `ntree->ensure_topology_cache();` to ensure the topology cache is
up to date, before iterating over each node's input sockets.

This is a follow-up of 3016cf650d.

Pull Request: https://projects.blender.org/blender/blender/pulls/145232
2025-08-27 13:27:33 +02:00
Pratik Borhade
0516cd63fa Fix #144361: Grease Pencil: Crash after deleting the Default Eraser
Make sure brush property is never null. Flag will avoid setting brush
to null inside `RNA_property_pointer_set`. Flag also prevents
`UI_BUT_VALUE_CLEAR/PREDEFINED_EXTRA_OP_ICON_CLEAR` from being set which
are responsible for the `X` button (`UI_OT_button_string_clear`).

Pull Request: https://projects.blender.org/blender/blender/pulls/144531
2025-08-27 12:08:29 +02:00
Casey Bianco-Davis
f248f3a5a2 Curves: Add Toggle Free/Align to Set Handle Type operators
This adds `Toggle Free/Align` from legacy Curve objects to
Grease Pencil and Curves objects.

This also reorders the items to match the legacy system.

Resolves: #140350.

Pull Request: https://projects.blender.org/blender/blender/pulls/144883
2025-08-27 11:57:51 +02:00
Clément Foucault
ba4589e894 DRW: New Curve Drawing
Implementation of the design task #142969.

This adds the following:
- Exact GPU interpolation of curves of all types.
- Radius attribute support.
- Cyclic curve support.
- Resolution attribute support.
- New Cylinder hair shape type.
![image.png](/attachments/a8e7aea0-b0e5-4694-b660-89fb3df1ddcd)

What changed:
- EEVEE doesn't compute random normals for strand hairs anymore. These are considered legacy now.
- EEVEE now have an internal shadow bias to avoid self shadowing on hair.
- Workbench Curves Strip display option is no longer flat and has better shading.
- Legacy Hair particle system evaluates radius at control points before applying additional subdivision. This now matches Cycles.
- Color Attribute Node without a name do not fetch the active color attribute anymore. This now matches Cycles.

Notes:
- This is not 100% matching the CPU implementation for interpolation (see the epsilons in the tests).
- Legacy Hair Particle points is now stored in local space after interpolation.

The new cylinder shape allows for more correct hair shading in workbench and better intersection in EEVEE.

|      | Strand | Strip | Cylinder |
| ---- | --- | --- | --- |
| Main | ![main_strand.png](/attachments/67d3b792-962c-4272-a92c-1c0c7c6cf8de) | ![main_strip.png](/attachments/f2aa3575-368e-4fbb-b888-74df845918f1) | N/A |
| PR   | ![pr_strand.png](/attachments/cc012483-25f0-491f-a06e-ad3029981d47) | ![pr_strip.png](/attachments/73fa2f5c-5252-4b30-a334-e935ed0fb938) | ![pr_cylinder.png](/attachments/3133b2d4-a6f2-41ee-8e2d-f6fd00db0c8d) |

|      | Strand | Strip | Cylinder |
| ---- | --- | --- | --- |
| Main | ![main_strand_closeup.png](/attachments/730bd79c-6762-446d-819b-3ea47961ff9f) |![main_strip_closeup.png](/attachments/d9ace578-cfeb-4895-9896-3625b6ad7a02) | N/A |
| PR   | ![pr_strand_closeup.png](/attachments/ac8f3b0c-6ef6-4d54-b714-6322f9865036)|![pr_strip_closeup.png](/attachments/8504711a-955b-4ab2-aa3d-c2d114baf9d4)| ![pr_cylinder_closeup.png](/attachments/1e2899a8-0a5c-431f-ac6c-5184d87e9598) |

Cyclic Curve, Mixed curve type, and proper radius support:
![image.png](/attachments/7f0bf05e-62ee-4ae9-aef9-a5599249b8d7)

Test file for attribute lookup: [test_attribute_lookup.blend](/attachments/1d54dd06-379b-4480-a1c5-96adc1953f77)

Follow Up Tasks:
- Correct full tube segments orientation based on tangent and normal attributes
- Correct V resolution property per object
- More attribute type support (currently only color)

TODO:
- [x] Attribute Loading Changes
  - [x] Generic Attributes
  - [x] Length Attribute
  - [x] Intercept Attribute
  - [x] Original Coordinate Attribute
- [x] Cyclic Curves
- [x] Legacy Hair Particle conversion
  - [x] Attribute Loading
  - [x] Additional Subdivision
- [x] Move some function to generic headers (VertBuf, OffsetIndices)
- [x] Fix default UV/Color attribute assignment

Pull Request: https://projects.blender.org/blender/blender/pulls/143180
2025-08-27 09:49:43 +02:00
Miguel Pozo
15da5dbaf8 Fix #145194: EEVEE: World Shader crash
Regression from 7e26323724

Pull Request: https://projects.blender.org/blender/blender/pulls/145196
2025-08-27 09:10:20 +02:00
Hans Goudey
f17168d78c Cleanup: Mesh: Use attribute API for merging UV maps
Ref #122398

Pull Request: https://projects.blender.org/blender/blender/pulls/145209
2025-08-27 04:09:26 +02:00
Sean Kim
35d3f3f028 Fix #145070: Clay Strips 'Sculpt Plane' option doesn't work
Introduced in ba29593a17

This commit effectively reverts the above commit with a few extra
changes:
* We no longer recalculate a different `plane_normal` for the plane
  check, as that check is performed by the brush local matrix.
* Fixes the incorrect usage of `plane_center` and `plane_normal` in the
  degenerate usecase, though this practically had no effect as the brush
  would not execute.

Pull Request: https://projects.blender.org/blender/blender/pulls/145151
2025-08-27 02:16:16 +02:00
Sean Kim
fee064e524 Multires: Add 'Conform Base' functionality
This commit modifies the `OBJECT_OT_multires_base_apply` operator to
take in a new parameter which determines whether the final heuristic of
adjusting for a subdivision surface modifier applies.

Resolves #124553

Pull Request: https://projects.blender.org/blender/blender/pulls/145055
2025-08-27 01:39:23 +02:00
Hans Goudey
715cff1299 Cleanup: Use attribute API in weighted normal modifier
Use the attribute API instead of CustomData to access
the face strength integer attribute.

Ref #122398

Pull Request: https://projects.blender.org/blender/blender/pulls/145205
2025-08-27 00:57:33 +02:00
Hans Goudey
dce7626b6b Cleanup: Remove unused CustomData interpolation "subweights" argument
This argument is always passed as null. Removing it simplifies the
transition to `AttributeStorage`. Nowadays it seems that most more
complicated interpolation needs are not handled directly by the
CustomData system.

Pull Request: https://projects.blender.org/blender/blender/pulls/145197
2025-08-27 00:02:20 +02:00
Campbell Barton
60a6f5bde4 Fix #145084: Crash opening a file and removing a scene from Python
Don't rely on the contexts window to ensure windows have their
scene updated when removing, since the window may be cleared and
there may be multiple windows.
2025-08-26 21:54:17 +00:00
Harley Acheson
494c32735f UI: Fade in Area Move Divider Lines
When resizing areas there is a line shown along the edge to help
indicate that you have pressed the correct location. This PR just
quickly animates this line into place, rather than immediately.

Pull Request: https://projects.blender.org/blender/blender/pulls/140616
2025-08-26 22:01:34 +02:00
Hans Goudey
af32b24199 Cleanup: Resolve missing declaration warning 2025-08-26 15:54:35 -04:00
Harley Acheson
2dd420d40d BLF: Public Function to Return Maximum Glyph Bounds
This BLF adds a public function that returns the maximum extext of a
font's glyphs. BLF_bounds_max returns a rctf of the minimum rect that
can contain any of the font's glyphs. Can be useful to know when sizing
a bitmap without knowing the final string contents.

Pull Request: https://projects.blender.org/blender/blender/pulls/145016
2025-08-26 21:31:29 +02:00
Sybren A. Stüvel
7f4096be41 Core: treat already-existing directory as 'ok' in recursive mkdir
When creating a directory recursively (via
`BLI_file_ensure_parent_dir_exists()` or `BLI_dir_create_recursive()`,
filter out errors that indicate that the directory already exists.
This is now also covered by a unit test.

I've also removed `BLI_assert(BLI_exists(dirname) == 0);` from
`dir_create_recursive()` (the workhorse for the above-mentioned
functions), for two reasons:

- The function is only used in an "ensure this directory exist"
  context, so the directory existing should be fine, and
- the assertion doesn't guarantee that the subsequent call to
  `mkdir()` actually succeeds. Race conditions between Blender and
  other processes (potentially on other computers, when using
  networked filesystems) will make such a precondition test
  unreliable.

This is a followup of 00abaa571a.

Pull Request: https://projects.blender.org/blender/blender/pulls/145173
2025-08-26 18:30:46 +02:00
Brecht Van Lommel
6aa11a304c Paint: Store brush and palette colors in scene linear colorspace
For historical reasons these were stored in sRGB space, which caused all
kinds of complexity.

* For image painting, it now properly uses the byte buffer colorspace
  instead of assuming sRGB or display colorspace. This can be more expensive,
  so there is a fast path for sRGB buffers (and for fixed brush colors).
* Lots of code was changed to remove conversion when painting float images
  or vertex colors, and added when painting byte images.
* For non-color data, there is now no colorspace conversion between the brush
  color and image pixels, and #143642 was basically reverted because of that.

Compatibility notes:

* Backwards compatibility is not perfect, as we can not determine if the
  brush has non-color data in isolation. We always convert sRGB to linear,
  and existing brushes configured with non-color data need to be manually
  fixed.
* There is forward compatibility, the old sRGB value is still stored next
  to the scene linear value.

Pull Request: https://projects.blender.org/blender/blender/pulls/144400
2025-08-26 17:10:16 +02:00
Miguel Pozo
8adb3e758f Draw: Use ResourceHandleRange
Optimize instancing performance by syncing all instances at once.
Part of #130291

At the moment, it only works for certain Object types in Workbench and
Overlay.
Everything else follows a path similar to the previous one.

Performance on instancing heavy scenes can range from 1.5x to 3x faster
depending on hardware and platform.

Pull Request: https://projects.blender.org/blender/blender/pulls/140378
2025-08-26 17:08:47 +02:00