The "verts per grid" calculation was wrong for the non-flat/indexed
vertex buffer layout used for smooth shading. For example, for a
multires subdivision level of 8, each PBVH node's vertex buffers
were 3 times larger than they needed to be.
Pull Request: https://projects.blender.org/blender/blender/pulls/123808
Combined with previous logic, this roughly doubles the performance of
sculpt-mode multires draw vertex buffer extraction in my simple test.
That measurement is for when we initially enter sculpt mode when the
VBO creation is single threaded. Otherwise in my testing the copying
was bound by memory bandwidth and the improvement was smaller.
Draw Manager visibility compute shader triggered a read-after-write
hazard. This root cause was that the incorrect access was read from
the shader interface. It was set to none, skipping the needed pipeline
barrier.
Pull Request: https://projects.blender.org/blender/blender/pulls/123839
This was due to wrong indexing into `num_triangles_per_stroke` and
`num_vertices_per_stroke`. We were using the the index of the stroke
in the drawing instead of the index into the `visible_strokes` mask.
Clarify the tooltip for the half float color depth property for EXR
images to indicate that it doesn't affected data passes and that they
will still be saved as full float.
This reverts commit cb76781be7, and fixes
the issues from original da05bff96c commit (missing initialization
of a pointer in copy constructor in some cases, and forgot to handle
one allocated string in the move constructor).
Many thanks to @julianeisel for finding the actual issues here.
This one was a bit more involved than the previous ones, since the
mismatch was intentional here, and happened on a non-trivial type.
It was done because the new object (managed by the `unique_ptr`) steals
the internal data of the original object. Calling `MEM_delete` (and
therefore the destructor of the `AssetMetaData` object) would then lead
to access-after-free and double-freeing errors.
This is addressed by adding two new 'copy' and 'move' constructors to this type.
The copy one ensures that deep-copy of internal data happens as expected, and
allows to simplify greatly the code in `BKE_asset_metadata_copy`, which
becomes a mere wrapper around it.
The move one allows `make_unique` to properly steal (and clear) the internal
data of the source object, which can then safely be deleted.
Pull Request: https://projects.blender.org/blender/blender/pulls/123693
Part of #118145.
Performance after this change results in an 119% speedup. This is
measured on the fucntion `stroke_update_step` on a mesh with 24k verts
across 5k instances of the function being timed. In absolute values,
this represents a 0.06ms speedup, from 0.38ms to 0.32ms.
Pull Request: https://projects.blender.org/blender/blender/pulls/123751
This PR adds stroke stabilization settings for the Sculpt mode lasso
tools:
* Mask
* Hide
* Trim
* Face Set
Only Sculpt tools have a user facing change, even though this was
implemented in `WM_gesture_lasso_modal` and related methods. Other
modes may choose to add these settings and toggles.
## Implementation
The implemented functionality is similar to the Annotate tool in both
interpolation of the new point and drawing the UI hint that
stabilization is happening.
The `radius` and `factor` properties have similar bounds as the same
Brush properties. All values are stored on a per-operator level, not on
a scene or otherwise global tool level.
Based off of [1].
[1] - https://blender.community/c/rightclickselect/ZWG5/
Pull Request: https://projects.blender.org/blender/blender/pulls/122062
Use new SVG icon the "Blender" logo shown on the About screen. Allows
removal of blender_logo.png and no need for 1024x256 bitmap. Instead it
is made at exact requested size. This PR updates blender_logo_large.svg
because the (R) in it is not a stroke or path, but actual text - not
rasterized by Nano.
Pull Request: https://projects.blender.org/blender/blender/pulls/123790
Use new SVG icons in place of current "Alert" icons, used on dialogs
and confirmations. No need for alert_icons.svg, alert_icons.png,
alert_icons_update.py. Also looks better as they are made at exact
requested size instead of 256x256 then scaled down to display.
Pull Request: https://projects.blender.org/blender/blender/pulls/123786
Drawing operator keymap information on the status bar is sometimes
custom and and sometimes automatic. This PR just make the automatic
display have the same spacing as custom. Slightly tighter with a
greater proportion of space between items than between an item's
icon and text.
Pull Request: https://projects.blender.org/blender/blender/pulls/123785
Currently the "Anchored" stroke option doesn't work on the refactored
brushes. That's because the previous implementation used the combination
and application of proxies to restore to the previous position stored in the
undo step. The new brushes don't use proxies for performance reasons,
so the restoration of shape keys and original positions didn't happen.
Now, fully restore the original positions of shape keys and mesh original
positions. This method is quite simple since it uses the same mechanism
brushes use to change that data.
Pull Request: https://projects.blender.org/blender/blender/pulls/123783
VSE is drawing error icons on strips using icons of type
ICON_TYPE_COLOR_TEXTURE, using the regular icon texture, which is
no longer used for standard icons. This PR changes this to use regular
UI_icon_draw_ex() here instead.
Pull Request: https://projects.blender.org/blender/blender/pulls/123700
Disambiguate
- "Thickness": use "Material" for EEVEE's thickness material setting.
- "Generated": use "Texture" for texture coordinates, "Image" for
image source, keep default context for animation keyframe types.
Translate
- Split "Online access required to (check for|install) updates..."
into 2x2 messages individually translatable.
- "Geometry" input in bake node.
- "New" for the Palette ID: extract it as part of the
BLT_I18N_MSGID_MULTI_CTXT for "New".
Some issues reported by Gabriel Gazzán and Satoshi Yamasaki.
Pull Request: https://projects.blender.org/blender/blender/pulls/123404
The versioning code was introduced in 4.1 release cycle when
we were planning to release EEVEE next in 4.1. This means that
the versioning was not applied to files created in 4.1 using
EEVEE-Legacy and loaded into 4.2.
Moving the code just before the EEVEE-Legacy removal make
the versioning work as expected. There is no side effect
inside the versioning code.
Fix#123500
Part of #118145.
Rewrite the application of brush hardness, filtering for 3D view clipping
and brush distance factor calculation to operate on arrays of data rather
than a single element at a time.
In the benchmark file from the task above, this improves performance by
5%, from 0.58s to 0.55s. I expect that's mainly because constant checks
have been moved out of the hot loops, avoiding function call overhead,
and because in some cases we avoid doing division for every element.
Pull Request: https://projects.blender.org/blender/blender/pulls/123671
When enabled, jittered shadows were jittering inside the
shading light radius that is clamped to a minimum for
numerical precision reasons.
This patch sets the shadow radius to 0 only if the original
light radius is also zero, and use the former to determine
wether or not to apply jittering.
Accumulating allocates previous colors (which are used in
`do_vpaint_brush_blur_XXX`).
The actual problem here was that the state of `brush_use_accumulate`
was not consistent across the lifetime of strokes.
Vertexpaint was doing the allocation in `vertex_paint_init_stroke`
(**before** `update_cache_invariants` where the mode gets changed to
`BRUSH_STROKE_SMOOTH` etc.), so here it still seemed we would use
accumulation, whereas later (after internally switching the tool/brush)
this was not the case anymore, leading to wrong behavior of
`do_vpaint_brush_blur_XXX`.
So now move the allocation to `init_session_data` (same as for
weightpaint) to make sure all codepaths have a consistent state of
`brush_use_accumulate`.
NOTE: this was made more obvious since 6de6d7267f added SHIFT-blurring
to the keymap
Pull Request: https://projects.blender.org/blender/blender/pulls/123778
The angle at which the angle factor is greatest/smallest
was flipped by 90 degrees when compared to GPv2.
Additionally, the smoothing rate was a bit too slow.
The function `CurvesGeometry::offsets()` would return a span pointing to
`nullptr` with a size of `1` if there were no curves in the geometry.
This was already changed for `offsets_for_write()` in
c3365666e5, which retuns an empty span.
Do the same for `offsets()` now.
Pull Request: https://projects.blender.org/blender/blender/pulls/123772
When a shader uses push constants fallback the push constants are
stored inside a uniform buffer. The uniform buffer needs to be guarded
with a read barrier.
Pull Request: https://projects.blender.org/blender/blender/pulls/123777