Commit Graph

112112 Commits

Author SHA1 Message Date
Hans Goudey
ecc3d1db4e Refactor: Sculpt: Refactor surface smooth mesh filter
Part of #118145.

Pull Request: https://projects.blender.org/blender/blender/pulls/126061
2024-08-07 22:17:06 +02:00
Hans Goudey
ebcdfeb77e Refactor: Sculpt: Refactor sharpen mesh filter
Part of #118145.

Pull Request: https://projects.blender.org/blender/blender/pulls/126059
2024-08-07 21:39:05 +02:00
Sean Kim
e16e07b2da Refactor: Introduce typed version of SculptSession#active_vertex
Part of #118145.

Uses std::variant (and std::monostate to represent no value) to hold the
current active vertex type among the three different concrete types.

Pull Request: https://projects.blender.org/blender/blender/pulls/126000
2024-08-07 21:17:42 +02:00
Hans Goudey
51152cec30 Refactor: Sculpt: Inline cube brush tip distance test
Part of #118145.
2024-08-07 14:09:02 -04:00
Sean Kim
34d71b8088 Refactor: Sculpt: Remove flood_fill add_active methods
This single extra layer of abstraction for these elements doesn't add
much to the API as accessing the current active vertex is a single call.

Pull Request: https://projects.blender.org/blender/blender/pulls/126011
2024-08-07 19:45:40 +02:00
Sean Kim
50b5b4678b Refactor: Sculpt: Extract pose brush preview data
Removes the SculptPoseIKChain and SculptPoseIKChainSegment structs from
BKE_paint.hh, substituting them for the bare minimum vertex data needed
to draw the overlay using the pose brush.

Moves the needed structs into sculpt_intern.hh, ideally they should be
local to sculpt_pose.cc, but the chain is needed in StrokeCache, so
further refactoring is needed before it can be reduced in scope.

Pull Request: https://projects.blender.org/blender/blender/pulls/126009
2024-08-07 19:21:35 +02:00
Hans Goudey
a9d318d2f3 Fix #124292: GPU subdivision loose edges crash
There were two issues. One was that the normals VBO wasn't created
with the correct size. The other was that there were empty VBOs created
which can apparently also cause crashes.

Pull Request: https://projects.blender.org/blender/blender/pulls/126041
2024-08-07 19:11:23 +02:00
Sean Kim
998712ba2e Cleanup: Sculpt: Move SculptBoundary struct
Moves SculptBoundary out of BKE_paint.hh and into sculpt_intern.hh

Like other cached data, this ideally should not be this exposed, but
reducing its inclusion in any other file that uses BKE_paint.hh is a
good start.

Pull Request: https://projects.blender.org/blender/blender/pulls/126010
2024-08-07 19:08:57 +02:00
Sean Kim
a512afe9b5 Cleanup: Sculpt: Remove unnecessary const in function declarations
Pull Request: https://projects.blender.org/blender/blender/pulls/126004
2024-08-07 19:08:09 +02:00
Sean Kim
febdb2f487 Cleanup: Remove unused headers in sculpt header files
Pull Request: https://projects.blender.org/blender/blender/pulls/126002
2024-08-07 19:06:55 +02:00
Hans Goudey
636b3b1b64 Cleanup: Sculpt: Simplify cube brush falloff math
Ever since b6a76243cd there was some redundant math
that just ended up with the value 1. Factor that out to simplify the code,
making future refactors cleaner.
2024-08-07 12:46:45 -04:00
Hans Goudey
8d209d9f62 Cleanup: Sculpt: Remove duplicate clipping test
The callers of `calc_brush_cube_distances` test region clipping
separately already.
2024-08-07 12:27:24 -04:00
Clément Foucault
da92505c7d Overlay-Next: Anti-Aliasing
Straight-forward port except for the frame-buffers and textures
management. This will be described inside the documentation.

Rel #102179

Pull Request: https://projects.blender.org/blender/blender/pulls/125984
2024-08-07 17:35:24 +02:00
Clément Foucault
f98bf61eac Fix: GL: IndexBuf: Out of bound copy during indices upload
The padded size was using for the data upload.
Now decouple the data specification and the upload.
2024-08-07 17:26:55 +02:00
Sergey Sharybin
06ce65d3b6 Fix: Crash in sequencer tests after recent commit
Also run clang-format on the file.

Ref #125947
2024-08-07 17:03:21 +02:00
Clément Foucault
04ae9ffd7f GPU: Add assert on zero sized VBOs
These can create GL errors that are not reported
appropriately.
2024-08-07 16:31:44 +02:00
Clément Foucault
e7c20e99df GPU: Add padding bytes to VBO and IBO
This is to avoid any issue with buffer alignement
and out of bounds reads when using these buffers
in compute shader or with vertex attribute fetch.
2024-08-07 16:31:44 +02:00
Clément Foucault
88d4b4097c OSD: Guard unneeded buffers behind defines
Fix unused buffer errors.
2024-08-07 16:31:43 +02:00
Aras Pranckevicius
bcacb01d34 Cleanup: Make more VSE functions use const arguments where they can
SEQ_transform_sequence_can_be_translated, SEQ_transform_single_image_check,
SEQ_can_use_proxy can all trivially take const Sequence argument.

Made SEQ_give_frame_index take const Sequence too, by removing the
"modify seq strobe to be at least 1.0" code. The strobe itself is only
ever used inside the same function, and is already guarded by
"is strobe > 1.0" check.

Original code seems to be coming all the way from 2009 with
commit message "2.5. 12k lines of sequencer back!" (03fc5696dc).

Pull Request: https://projects.blender.org/blender/blender/pulls/126021
2024-08-07 15:53:06 +02:00
Richard Antalik
5ecb70964e Fix #125490: Scene strip incorrectly rendered as solid view.
Prevent VSE cache returning image when running render job.

Previously, before render job was started, cache was cleared, but since
disk cache is not cleared, it returned an image. Now cache is not
cleared, but it does not return or store images when rendering.

Pull Request: https://projects.blender.org/blender/blender/pulls/125947
2024-08-07 15:22:37 +02:00
Pratik Borhade
5a9fe638de Fix #125935: Insert unicode text popup not working
Likely caused by 7d80fde033
Set `handle->can_refresh=false` to prevent refreshing the block
during text edit.

Pull Request: https://projects.blender.org/blender/blender/pulls/125943
2024-08-07 13:13:20 +02:00
Jacques Lucke
5861b078f7 Core: rename ID.flag and ID.tag values
Previously, values for `ID.flag` and `ID.tag` used the prefixes `LIB_` and
`LIB_TAG` respectively. This was somewhat confusing because it's not really
related to libraries in general. This patch changes the prefix to `ID_FLAG_` and
`ID_TAG_`. This makes it more obvious what they correspond to, simplifying code.

Pull Request: https://projects.blender.org/blender/blender/pulls/125811
2024-08-07 12:12:17 +02:00
Sergey Sharybin
0aab484dd8 Cleanup: Unused constants in PBVH pixels 2024-08-07 11:15:38 +02:00
Philipp Oeser
e7979317ec Fix #122163: Image Editor ImageUser RNA paths incomplete/wrong
Somewhat similar to !125365 (but more specialized for ImageUser), this
PR adds the missing "areas[x].spaces[x]" subpath to an Image Editor
ImageUser.

Pull Request: https://projects.blender.org/blender/blender/pulls/125963
2024-08-07 11:12:47 +02:00
Aras Pranckevicius
69d1e0d9cb Cleanup: Remove unused code from BLI_mempool
BLI_mempool_as_table, BLI_mempool_as_tableN are not used by anything.
USE_TOTALLOC has been off for at least 10 years.

Pull Request: https://projects.blender.org/blender/blender/pulls/125966
2024-08-07 10:36:39 +02:00
Jacques Lucke
2858c3b287 Link/Append: separate instantiation of loose data from core link/append code
When appending e.g. an object, it's generally expected that it is not just
appended but also added to the active collection. Something similar happens for
adding collections, or just geometry like a mesh data-block. This is called
"loose data instantiation" in the source code.

Which data is instantiated and how depends on context. Generally, it's best to
first do the low-level link or append operation and only afterwards do the
instantiation at a higher level where more context is known. For example, when
dragging an object asset into the 3D view, it's expected that the object is
added to the active collection. When dragging a node group into the node editor
that uses an object internally (e.g. as mesh storage), not so much.

This patch adds a new `BKE_blendfile_link_append_instantiate_loose` method that
does the "default instantiation", i.e. the one we want to happen when using the
general link/append operator to import data. Instead of calling this directly
from low level `BKE_blendfile_append`, it's now called in `wm_link_append_exec`
(and other places where desired).

Furthermore, `view3d_ob_drop_copy_external_asset` does not use this anymore, but
explicitly adds only the dragged object to the active collection. Some places,
e.g. when linking/appending using the Python API, don't do any instantiation at
all. They didn't do this before either, but it was way less obvious (it used
`BLO_library_link_params_init` instead of
`BLO_library_link_params_init_with_context`). Now there is always an explicit
call to do instantiation in higher level code.

Pull Request: https://projects.blender.org/blender/blender/pulls/125814
2024-08-07 09:35:10 +02:00
Clément Foucault
91de9acc61 DRW: Reduce complexity of Draw primitive expansion
This fixes an issue with `finalize_commands`, simplify
packing inside `Draw` command struct and remove the vertex
length limitation, replacing it with instance count limit
which is less likely to be used.
2024-08-07 09:09:47 +02:00
Sean Kim
12f3e23326 Refactor: Remove SCULPT_active_vert_co_get
Part of #118145.

Replaces any calls with a call to SCULPT_vertex_co_get and the active
vertex. Eventually we don't want to support this particular method of
retrieving position data, but for now this makes the uses of the
active_vertex field more clear.

Pull Request: https://projects.blender.org/blender/blender/pulls/125998
2024-08-07 03:27:18 +02:00
Sean Kim
c20bb31325 Refactor: Encapsulate SculptSession#active_vertex
Part of #118145

* Adds getter & setter for active_vertex
* Removes direct usage of the backing field & makes it private

Pull Request: https://projects.blender.org/blender/blender/pulls/125997
2024-08-07 01:40:40 +02:00
Hans Goudey
aca466b029 Cleanup: Sculpt: Remove now unused brush strength function 2024-08-06 16:42:08 -04:00
Hans Goudey
fa49d90897 Sculpt: Refactor image painting to use new brush API
Part of #118145.
Use the brush factor/distance functions that deal with many
elements at the same time.
2024-08-06 16:42:08 -04:00
Hans Goudey
f8dd030a0e Sculpt: Precalculate image paint pixel positions
Part of #118145.
This allows reusing the new sculpt brush API that works on
arrays of data rather than a single element at a time.
2024-08-06 16:42:08 -04:00
Hans Goudey
5b29374cdf Cleanup: Remove unsupported automasking code from image painting
Having this disfunctional code here doesn't help us to add support later.
2024-08-06 16:42:08 -04:00
Hans Goudey
eb570012da Cleanup: Sculpt: Pass image paint data as arguments 2024-08-06 16:42:08 -04:00
Hans Goudey
f3783a7378 Cleanup: Sculpt: Simplify image paint bounds filtering 2024-08-06 16:42:08 -04:00
Hans Goudey
e9d70e3295 Cleanup: Sculpt: Remove unnecessary PBVH UV mesh edge type 2024-08-06 16:42:08 -04:00
Hans Goudey
7009127d73 Cleanup: Sculpt: Pass image pixels data as arguments, use references 2024-08-06 16:42:08 -04:00
Hans Goudey
33d4685c1e Cleanup: Sculpt: Remove disabled image paint node splitting
This is getting in the way of refactoring to the BVH. It hasn't been
working for over a year and we want to reevaluate the approach
before committing to this anyway.
2024-08-06 16:42:07 -04:00
Hans Goudey
cf05109a2e Sculpt: Use int triangle indices for image paint
We don't support more than ~2 billion triangles anyway,
no sense in wasting memory with a bunch of 64 bit ints.
2024-08-06 16:42:07 -04:00
Hans Goudey
1a64ed7f7d Refactor: Sculpt: Remove unhelpful image paint data storage abstractions 2024-08-06 16:42:07 -04:00
Hans Goudey
5bf8993661 Cleanup: Sculpt: Use BitVector instead of std::vector<bool>
BitVector has a proper interface for storing bits.
2024-08-06 16:42:07 -04:00
Harley Acheson
223d68a733 UI: Add Snapping to Docking Split Status
While docking, dragging into the source area allows split. Holding Ctrl
causes snapping just like when not docking. This PR just includes this
in the status bar keymap info while doing so.

Pull Request: https://projects.blender.org/blender/blender/pulls/125990
2024-08-06 22:30:53 +02:00
Harley Acheson
eba9771ef2 UI: Simplified & Slightly Tighter Status Bar Spacing
With the icons changes we no longer need any extra spacing between icon
and text. And negative space for the narrow mouse icons can be 0.5.
Simplifies it a bit and makes it slightly tighter.

Pull Request: https://projects.blender.org/blender/blender/pulls/125987
2024-08-06 21:45:41 +02:00
Jesse Yurkovich
2f7b66f634 Fix #123972: Hydra storm crash with USD sub-d meshes
When using the USD export method with Hydra storm[1], problems can occur
because of how this was integrated alongside the direct Hydra method.
The direct hydra support was initially added in Blender 4.0 and the USD
option was integrated at the same time in order to provide a mechanism
for comparison and double-checking each implementation.

In the context of this bug, for Viewport previews and renders, the Hydra
engine is initially triggered and executed as part of an "engine update"
call from the various v3d draw managers. During this call the USD export
is attempted.

For sub-d meshes the USD export machinery will, by default, attempt to
apply the correct Subdivision Scheme attribute to mesh data. That means
it will export the unsubdivided base mesh with an attribute letting the
downstream receiver of the data know they should do the subdivision on
their own. This subdivision scheme support was added in 4.1.

However, in order to do this, USD must first disable the Subdivision
modifiers in Blender before exporting the mesh. Disabling modifiers
triggers depsgraph processing and, unfortunately, this processing will
also trigger an "engine update" for Hydra... again.

Reentrancy is not supported here. See stack trace in original bug.

So, instead, change the USD export option to output a subdivided mesh to
begin with. This has the following ramifications:

- Viewport material preview and render modes no longer crash when sub-d
  is used

- While F12/final renders did not crash, changing this option will now
  properly render the subdivided geometry when using the USD export
  method. Allowing our USD / Hydra render tests to align more closely.
  The direct Hydra option was already pre-subdividing mesh data anyhow.

  This will require updating the USD reference render images.

- The underlying integration issue is not fixed. Triggering a USD export
  inside the "engine update" call path seems error-prone and can lead to
  similar issues in the future.

Pull Request: https://projects.blender.org/blender/blender/pulls/125840
2024-08-06 21:42:54 +02:00
Hans Goudey
5f10f8e2a7 Cleanup: Sculpt: Remove unused function 2024-08-06 15:00:06 -04:00
Hans Goudey
24c6852bb3 Sculpt: Optimize mesh/cloth filter enabled axis usage
- Avoid doing anything when no axes are disabled.
- Avoid matrix multiplication when local space orientation is used.
- Combine enabled axes for cloth forces and mesh filter translations.
2024-08-06 14:58:43 -04:00
Hans Goudey
f4f732be95 Sculpt: Data oriented refactor for cloth brush forces calculation
Part of #118145.
Apply the brush refactor to the remaining part of the cloth brush.
Factor some of the forces calculations into common functions
shared between the implementations for the three geometry types.
Also change the cloth filter a bit to ease sharing code with the brush.
2024-08-06 14:58:43 -04:00
Sean Kim
549f1dec78 Fix: Cloth sim target for pose brush applies incorrectly
The `deformation_pos` array expects values to be set, not appended to to
prevent too much energy from being added to the simulation.

Additionally, the cloth simulation target expects the original
coordinates to not be updated every step of the brush to perform the
deformation.

Pull Request: https://projects.blender.org/blender/blender/pulls/125982
2024-08-06 19:24:59 +02:00
Omar Emara
885db0986c Refactor: Remove concept of temporary result
Temporary results are essentially results with a default reference count
of 1, so we default to 1 for all results and set the initial reference
count differently as need.
2024-08-06 19:37:18 +03:00
Sean Kim
ee599619ca Cleanup: Add comments, reduce scope of prev_active_vertex
Pull Request: https://projects.blender.org/blender/blender/pulls/125931
2024-08-06 16:20:48 +02:00