WIP: Asset Shelf Grid-View #106316

Closed
Julian Eisel wants to merge 0 commits from JulianEisel:temp-asset-shelf-grid-view into asset-shelf

When changing the target branch, be careful to rebase the branch in your fork to match. See documentation.
Member

No response

Building instructions:

  • checkout the asset-shelf addons branch (make update takes care of that)
_No response_ Building instructions: * checkout the asset-shelf addons branch (`make update` takes care of that)
Julian Eisel added 10 commits 2023-03-30 15:50:14 +02:00
Julian Eisel added 7 commits 2023-04-03 11:31:09 +02:00
buildbot/vdev-code-daily-coordinator Build done. Details
dc63f75837
Fix #106414: Handle `mat==None` case in GPencil Change Active Material operator
Some material slots could be empty, the operator could encounter a python
exception. Now fixed.

Pull Request: #106418
buildbot/vdev-code-daily-coordinator Build done. Details
682cb6ecd3
Metal: Optimize SSR shader for Apple Silicon
Reduce register spill to global memory in raytrace_resolve
function. Results in a 20% uplift for this particular shader on
Apple Silicon GPUs. Contributing to 3-5% uplift for scenes
which have SSR enabled. This is achieved via reducing
memory pressure using a packed data type for the sampling
kernel.

Authored by Apple: Michael Parkin-White

Pull Request: #106231
buildbot/vdev-code-daily-coordinator Build done. Details
8954df63ef
Fix #106431: Resolve Metal workload dependency
Splitting workload dependency chains such that they
only exist within the context of a single frame.
Dependencies are required to ensure sequential
command buffer submissions execute in order,
but the additional dependencies between frames
could incur GPU timeouts, if a signal was delayed.

This could be triggered by both CPU/GPU cycles
texture updates and Viewport Compositor operations.

Should also resolve #106401

Authored by Apple: Michael Parkin-White

Pull Request: #106443
buildbot/vdev-code-daily-coordinator Build done. Details
4aed240b02
CMake: Disable Options Depending on OpenEXR Dependecies
OpenEXR has some dependecies that other other modules in Blender
requires. When disabling OpenEXR these dependecies could not match
and building blender would fail.

This PR disables the next options when `WITH_IMAGE_OPENEXR=Off`

- `WITH_OPENVDB`
- `WITH_ALEMBIC`
- `WITH_VULKAN_BACKEND`
- `WITH_CYCLES_OSL`

Additionally windows stores the IMath libraries in `IMATH_LIBRARIES`
Linux and Mac stored the IMath libraries in `IMATH_LIBRARY`. This
change will also adds `IMATH_LIBRARIES` variable to all platforms.

Pull Request: #106209
1205111fe9 Refactor: move #object_usable_as_light() from #LightManager class to #Object
so that the function can also be used by other classes.
Also change `!bounds.valid()` to `!is_traceable()` so zero-sized objects
are skipped.
buildbot/vdev-code-daily-coordinator Build done. Details
b81472d20f
Cleanup: remove useless comments
Remove comments from `eBConstraint_Types` that
- were used long ago during a big refactor effort, but are no longer
  necessary, or
- just repeated the name of the enum constant.

No functional changes.
Julian Eisel added 1 commit 2023-04-03 14:26:15 +02:00
Julian Eisel added 1 commit 2023-04-03 15:56:19 +02:00
Julian Eisel added 1 commit 2023-04-05 16:16:15 +02:00
Julian Eisel added 1 commit 2023-04-05 16:25:51 +02:00
Julian Eisel added 1 commit 2023-04-06 12:12:09 +02:00
Julian Eisel added 2 commits 2023-04-07 11:59:21 +02:00
Julian Eisel added 1 commit 2023-04-07 12:14:41 +02:00
b35dd323c3 Remove unnecessary & problematic header layout changes
Was only needed for the old asset shelf main region implementation, and
caused some issues (e.g. too small buttons in status bar).
Julian Eisel added 6 commits 2023-04-12 17:33:31 +02:00
Julian Eisel added 1 commit 2023-04-12 19:36:36 +02:00
Julian Eisel added 2 commits 2023-04-12 20:12:23 +02:00
Julian Eisel added 1 commit 2023-04-13 16:00:42 +02:00
Julian Eisel added 1 commit 2023-04-14 12:02:30 +02:00
Julian Eisel added 2 commits 2023-04-14 13:04:32 +02:00
Julian Eisel added 1 commit 2023-04-14 14:42:13 +02:00
Julian Eisel added 7 commits 2023-05-02 15:39:00 +02:00
040ecfa45f Use fixed width for grid-view items, don't stretch to full width
This just makes the UI feel more "stable" since things don't move around
as much anymore.
486ff75da7 Improve how default size is set
Set the default size later as part of regular area/region setup, when
DPI is available. Also use `uiStyle` paddings.
c3b36345c7 Basic paginated vertical scrolling
This means the view always scrolls by a full row, so that asset previews
are never partially in view.

The paginated scrolling is implemented as a standard View2D feature.
This doesn't work well with zooming yet, and it's tricky to get that to
work right.
Julian Eisel added 1 commit 2023-05-02 16:53:34 +02:00
Julian Eisel added 1 commit 2023-05-02 17:00:52 +02:00
e635ee1188 Disable region zooming
We want to support different preview sizes, but the regular region
zooming makes things overly complicated (because of the pagination
and region size snapping mostly). Plus region zooming would usually zoom
text as well. So the preview size is better managed separately.
Julian Eisel added 1 commit 2023-05-02 18:03:47 +02:00
9ef337ba95 Fix offset in region scaling hotspot
An offset was applied for transparent regions, so the hotspot is closer
to where the user expects (closer to the visual content). But this only
makes sense if the background is actually transparent or close to at
least.
Julian Eisel added 120 commits 2023-05-05 16:34:13 +02:00
13fe6d0170 Vulkan: Silence Compilation Warnings
This PR silences some compilation warnings in the command buffer.

Pull Request: #107541
buildbot/vdev-code-daily-coordinator Build done. Details
17201752d9
Vulkan: Add FLOAT to SRGB and Depth24 Conversion
This PR adds support to convert host/device data from floats
to GPU_SRGB8_A8 and GPU_DEPTH_COMPONENT24.

Pull Request: #107544
b724015840 LibOverride: Fix wrong assert in some cases in RNA tracks handling.
Due to index-only referencing in insertion of new NLA tracks in
liboverride data, it may happen that the source of an inserted track
cannot be found.

This index-only based handling of NLA tracks in liboverrides is very
weak, in the future this will be solved by ensure uniqueness of their
names, then name-based reference can be used instead, as already done with
modifiers, constraints, etc.
5574a1bfc1 LibOverride: Fix/Improve resync behavior in some complex cases.
This commit mainly addresses issues when a part of an override hierarchy
does not match anymore the linked reference data, and gets isolated form
the hierarchy root (there is no parenting chain to the root anymore).

The typical case being an object or sub-collection being moved to
another subcollection in the linked data.

Case identified while working on some Pets production files.

Note that in some cases this isolated chunk of the hierarchy will be
linked back into the appropriate place, in others it should be fully
removed (instead of staying as unused data). The later will be handled
in a another future commit.

This commit mainly detect and use a new tag for such cases, and correct
the checks to take it into account.

It also does a bit of cleanup, and replaces some asserts by `CLOG_ERROR`
reports.
ba9ca7afb6 LibOverride: Resync: Delete non-user-edited 'isolated from root' liboverrides.
These should not be needed anymore. Follow-up to previous commit.
9ea2170cce LibOverride: Resync: Fix some issues with partial resync.
In some cases, some partial resync roots would be missed during the
partial resync process, leading to incomplete resync of all the needed
data.

This was caused by tagging some liboverrides for resync _after_ they had
already be evaluated as part of parenting hierarchy of other
liboverrides. Fix is simply to split both steps apart, such that all IDs
that need it are tagged to resync first, and then hierarchies are
evaluated to find the required partial resync roots whithin a hierarchy.
5095ecc67b Cleanup: Rename LibOverride-related enum flags/tags.
Mainly use a shorter, straight-forward prefix (`LIBOVERRIDE`), and
unify/make these enum names more consistant. No functional changes
expected here.
96dcdbfc51 Vulkan: Correct Aspectbits for Depth Textures
Vulkan spec only wants to have a single aspect bit when a texture
contains both a stencil and a depth part. As for Blender depth
is more used than stencil we standardize to depth aspect.

Pull Request: #107542
buildbot/vdev-code-daily-coordinator Build done. Details
9954a5d07c
Cleanup: Remove left-over debug prints in own previous commits.
Sorry for the noise.
buildbot/vdev-code-daily-coordinator Build done. Details
1a5ad33a57
Cleanup: Move pipeline.h to C++
Ref: #103343

Pull Request: #107516
buildbot/vdev-code-daily-coordinator Build done. Details
88d03d15c1
Realtime Compositor: Implement Stabilize 2D node
This patch implements the Stabilize 2D node for the realtime compositor.

Pull Request: #107401
d0c6117196 Fix #107420: crash getting PTCacheID when baking scene rigid body world
`ptcache_baker_create` falsely assumed the PointCache owner id is always
an **object**, but when baking rigid body world it is a **scene**. Code
would cast the ID to an object and passed that to `BKE_ptcache_id_find` /
`BKE_ptcache_ids_from_object` (which can get terribly wrong -- reading
_something_ on the scene as something from the assumed object).

Prior to f61ff22967 this was less likely to be a problem, but that
commit introduced a `DrawDataList` into the `struct Scene`. In the file
from the report, this would lead to `foreach_object_particle_ptcache`
now recognizing garbage memory as a particle system, accessing its
`ParticleSettings` `phystype` would then crash (buffer-overflow).

Now pass a NULL object to `BKE_ptcache_id_find` in case we are having a
scene, following code still handles rigid bodies just fine (the scene is
actually passed separately as well).

Pull Request: #107536
buildbot/vdev-code-daily-coordinator Build done. Details
dc73b63460
Fix: crash baking empty rigid body world
Found investigating #107420.

Steps to reproduce were:
- remove all objects from the scene
- add rigid body world
- bake
- crash

BKE_ptcache_bake would assume a cache can always be found, but with an
empty rigid body world this is not the case -- accessing flags would then
crash.

Now just check if we actually have a cache.

Pull Request: #107537
buildbot/vdev-code-daily-coordinator Build done. Details
71e4f48180
Nodes: Improve link drag search value moving
Now, when link drag search is used to create new input value nodes, it
also moves socket values into node storage. This means, by design, that
result of evaluation on node tree will not be changed. For data blocks,
the original value is set to null, thus avoiding the existence of
unused pointers.

Right now a few nodes (in shader in many cases) are implemented without
node storage, but by storing value in socket itself. Float value input
node is unsupported in this way too.

Pull Request: #107470
buildbot/vdev-code-daily-coordinator Build done. Details
22245115fd
Fix #107499: Text Object Selection with Scale To Fit Mode
Allow mouse text selection and cursor positioning to work correctly
when the text box has overflow mode set to "Scale to Fit."

Pull Request: #107510
buildbot/vdev-code-daily-coordinator Build done. Details
5b876b810f
Fix #106776: Volume cube won't render in Cycles
In some cases the Geometry Nodes Volume Cube generates
a Volume grid that doesn't contain any leaf nodes. This can happen
when only tiles are needed to represent the volume.

This PR changes the `empty_grid` check function to also check if
there are any active tiles in the grid before returning `true`.

Pull Request: #107551
buildbot/vdev-code-daily-coordinator Build done. Details
b3a3b94976
Cleanup: Avoid allocating extra array in sample nearest node
The distances array was filled but never used.
buildbot/vdev-code-daily-coordinator Build done. Details
dc0251df72
Fix: Graph Editor - add operator flags for cursor wrapping
The slider operators in the Graph Editor were missing operator flags for the cursor wrapping to work.
I've added it to the operators that allow overshoot, because for those it is really important to have no limits on scrolling.

Pull Request: #107435
buildbot/vdev-code-daily-coordinator Build done. Details
f865e67593
Refactor: Replace move_key with BKE_fcurve_keyframe_move_value_with_handles
The helper function `move_key` did exactly the same things as `BKE_fcurve_keyframe_move_value_with_handles`
It was only created because I wasn't aware that such logic already existed
No functional changes

Pull Request: #107402
2e50e0a849 Fix #107514: Broken normals wtih weighted normal "keep sharp" option
The data indices for all loops in a fan weren't set, only the first.
buildbot/vdev-code-daily-coordinator Build done. Details
c2a2c2dcab
Cleanup: Use array and span in weighted normal modifier
buildbot/vdev-code-daily-coordinator Build done. Details
d5fc1b9ba4
Fix #107505: Temporary stack not cleared in BMesh normal calculation
Mistake in f8eebd3b25.
buildbot/vdev-code-daily-coordinator Build done. Details
381de3bd9e
Cleanup: format
4115fcbc38 Cleanup: update, add function attributes for BLI_string & BLI_path
Explicitly list ATTR_NONNULL indices in most cases so it's explicit
that arguments aren't NULL (and adding new arguments that can be NULL
isn't such a hassle).
f30434ac99 BLI_string_utils: BLI_uniquename no longer accepts NULL defname
A NULL defname would early exit (doing nothing) this isn't good behavior
as this function should always make the name unique and a NULL defname
is likely an error in the code which would allow duplicate names.
This is also inconsistent with BLI_uniquename_cb which always
wrote the defname into the name if it was empty.

Mark this argument as never-NULL.
bb341eaf12 BLI_path: use module prefix for BLI_filename_make_safe
Rename BLI_filename_make_safe -> BLI_path_make_safe_filename.
1f96fa1129 Cleanup: rename BLI_make_existing_file for clarity
Rename BLI_make_existing_file to BLI_file_ensure_parent_dir_exists.
The previous name read as if it would make (touch) the file,
where as it ensures the directory component of the path exists.

Move from BLI_path to BLI_fileops as path utilities should only
manipulate paths and not deal with file IO creation
(this has more in common with BLI_file_touch for e.g.).
buildbot/vdev-code-daily-coordinator Build done. Details
6b9a500a3a
Cleanup: disambiguate terms "name", "file" & "str" / "string"
- Rename name/filename/path to filepath when it's used for full paths.
- Rename name/path to dirpath when it refers to a directory.
- Rename file to filepath or path (when it may be a file or dir).
- Rename ImBuf::name & anim::name to filepath.
buildbot/vdev-code-daily-coordinator Build done. Details
d770fd5ac4
Cleanup: remove unused BLI_dir_* functions
Loading a font in BLF would search a list of directory presets
however these presets were never used.
Remove them as all callers pass in full paths.

Also rename FontBLF::name to mem_name as it's only needed as an ID
for in-memory fonts (to prevent them being loaded multiple times).

Non-unique font loading now compares against the filepath or mem_name
when loading from files or memory (before both used `name` which was
often the filepath, sometimes the full ID-name).
buildbot/vdev-code-daily-coordinator Build done. Details
b690b8c16f
Fix incorrect buffer size copying to StudioLight::filepath
Use STRNCPY macro so these don't get out of sync.
f9fbbd8f80 Cleanup: expand on code-comments
Rename layout_old to layout_ref as the layout is a reference
(the old layout has been freed).
Also use boolean for save_copy argument.
d824030782 Fix blend file relative path being copied into ImBuf::filepath
ImBuf paths don't support blend file relative prefix,
make absolute after copying.
5f0a5c9b15 Cleanup: remove redundant path splitting in font loading
BLI_path_split_file_part ran for every filename comparison,
replace with BLI_path_basename and run once.

Also rename FaceDetails::name -> filename.
88ace032a6 Metal: Storage buffer and explicit bind location support
Adds support for Storage buffers, including changes to the resource
binding model to ensure explicit resource bind locations are supported
for all resource types.

Storage buffer support also includes required changes for shader
source generation and SSBO wrapper support for other resource
types such as GPUVertBuf, GPUIndexBuf and GPUUniformBuf.

Authored by Apple: Michael Parkin-White

Pull Request: #107175
buildbot/vdev-code-daily-coordinator Build done. Details
1dcc8e6ffa
Fix #107356: Cycles: improve oneAPI error handling
buildbot/vdev-code-daily-coordinator Build done. Details
7d5d1eae9e
Cleanup: add commit to .git-blame-ignore-revs
Add brace-placement formatting commit.
buildbot/vdev-code-daily-coordinator Build done. Details
0de54b84c6
Geometry Nodes: add simulation support
This adds support for building simulations with geometry nodes. A new
`Simulation Input` and `Simulation Output` node allow maintaining a
simulation state across multiple frames. Together these two nodes form
a `simulation zone` which contains all the nodes that update the simulation
state from one frame to the next.

A new simulation zone can be added via the menu
(`Simulation > Simulation Zone`) or with the node add search.

The simulation state contains a geometry by default. However, it is possible
to add multiple geometry sockets as well as other socket types. Currently,
field inputs are evaluated and stored for the preceding geometry socket in
the order that the sockets are shown. Simulation state items can be added
by linking one of the empty sockets to something else. In the sidebar, there
is a new panel that allows adding, removing and reordering these sockets.

The simulation nodes behave as follows:
* On the first frame, the inputs of the `Simulation Input` node are evaluated
  to initialize the simulation state. In later frames these sockets are not
  evaluated anymore. The `Delta Time` at the first frame is zero, but the
  simulation zone is still evaluated.
* On every next frame, the `Simulation Input` node outputs the simulation
  state of the previous frame. Nodes in the simulation zone can edit that
  data in arbitrary ways, also taking into account the `Delta Time`. The new
  simulation state has to be passed to the `Simulation Output` node where it
  is cached and forwarded.
* On a frame that is already cached or baked, the nodes in the simulation
  zone are not evaluated, because the `Simulation Output` node can return
  the previously cached data directly.

It is not allowed to connect sockets from inside the simulation zone to the
outside without going through the `Simulation Output` node. This is a necessary
restriction to make caching and sub-frame interpolation work. Links can go into
the simulation zone without problems though.

Anonymous attributes are not propagated by the simulation nodes unless they
are explicitly stored in the simulation state. This is unfortunate, but
currently there is no practical and reliable alternative. The core problem
is detecting which anonymous attributes will be required for the simulation
and afterwards. While we can detect this for the current evaluation, we can't
look into the future in time to see what data will be necessary. We intend to
make it easier to explicitly pass data through a simulation in the future,
even if the simulation is in a nested node group.

There is a new `Simulation Nodes` panel in the physics tab in the properties
editor. It allows baking all simulation zones on the selected objects. The
baking options are intentially kept at a minimum for this MVP. More features
for simulation baking as well as baking in general can be expected to be added
separately.

All baked data is stored on disk in a folder next to the .blend file. #106937
describes how baking is implemented in more detail. Volumes can not be baked
yet and materials are lost during baking for now. Packing the baked data into
the .blend file is not yet supported.

The timeline indicates which frames are currently cached, baked or cached but
invalidated by user-changes.

Simulation input and output nodes are internally linked together by their
`bNode.identifier` which stays the same even if the node name changes. They
are generally added and removed together. However, there are still cases where
"dangling" simulation nodes can be created currently. Those generally don't
cause harm, but would be nice to avoid this in more cases in the future.

Co-authored-by: Hans Goudey <h.goudey@me.com>
Co-authored-by: Lukas Tönne <lukas@blender.org>

Pull Request: #104924
buildbot/vdev-code-daily-coordinator Build done. Details
743f57e95e
Cleanup: Move draw_manager_profiling to C++
See: #103343

Pull Request: #107508
buildbot/vdev-code-daily-coordinator Build done. Details
7ff752b789
Cleanup: Unify mesh sampling multifunctions
Change the implementation of the raycast and sample nearest surface
node to split separate loops into separate multi-functions. This
clarifies the task of each function, gives more information to the
field evaluator, and gives more opportunity for memory reuse.

Sampling mesh attributes with triangle barycentric weights is now
implemented in a single place. Two other new multi-functions
handle conversion of sampled positions into barycentric weights.
Normalizing the ray directions for the raycast node is split out
too, so it can be skipped in some cases in the future.

The mesh attribute interpolator helper class is also removed,
since it didn't give much benefit over a more functional approach.

I didn't notice a performance improvement from this change.

Pull Request: #107563
buildbot/vdev-code-daily-coordinator Build done. Details
109c1b92cd
Fix #105621: USD export: incorrect texture alpha mapping
Fixed bug where texture alpha was incorrectly remapped to red when exporting material shaders.

Now connecting the UsdPreviewSurface 'opacity' input to the UsdUVTexture 'a' output if the Blender texture image node source socket identifier is 'Alpha'.

Changes include the following:

The InputSpec::source_name struct member was removed, as the connection source name is now determined at runtime based on the Blender node input socket identifier.

The traverse_channel() utility function now returns a bNodeLink*, so that the source socket identifier can be queried from the link.

In create_usd_preview_surface_materia(), the code for creating and connecting a UsdUVTexture shader was reorganized to group it within one conditional block, to make it easier to follow.  Also replaced a call to a deprecated version of UsdShadeInput::ConnectToSource().

Pull Request: #107022
buildbot/vdev-code-daily-coordinator Build done. Details
ac1ac6be9a
Fix #107573: Purging orphan data deletes used data.
The logic in the initial commit (97dd107070) was broken in some cases,
and would end up tagging as unused IDs that had valid usages. It is
reverted by this commit..

For this new solution to #98029 (deleting unused archipelagos of data),
the logic handling dependency loops detection is reworked to rely on a
new tag in the relations entry of the relevant IDs, instead of
pre-tagging as unused the ID itself.

Further more, when a dependency loop is detected, the IDs in it cannot
be immediately tagged as unused, since it may be that the entry point
of that loop is later detected as actually used. So their relations
entries are not tagged as processed, and only the entry point of the
potential archipelago can be checked in that case, outside of the
recursive processing of dependencies.

The other IDs of the archipelago will then be processed again later, in
a state where at least one ID in the archipelago has a known state for
sure, which then allows for a safe evaluation of the other related data.

This commit should be backported to 3.3LTS.
42cdd39618 Fix return of stack memory
The fix is suggested by Jacques.

Pull Request: #107586
09c1a93c21 Cleanup: Simplify CurvesGeometry deletion copying
Use span slicing instead of the POINTER_OFFSET macro
7f040099e3 Cleanup: Deduplicate sampling at index in geometry nodes
The "Evaluate at Index" and "Sample Index" nodes are exactly the same
once they retrieve the values to copy and the indices (apart from the
clamping option anyway). This also allows devirtualizing the index input
in the evaluate at index node like the sample index node.
buildbot/vdev-code-daily-coordinator Build done. Details
367145209c
Cleanup: Move attribute_math to proper blenkernel namespace
The fact that blenlib doesn't know about the set of attribute types is
actually an important detail right now that can influence how things
are designed. Longer term it would be good to consolidate many of
these attribute propagation algorithms anyway.
buildbot/vdev-code-daily-coordinator Build done. Details
a7d652e459
Fix Unreported: GPencil grab tool doesn't work on strokes changed by modifiers
The grab tool in Grease Pencil sculpt mode doesn't work correctly on strokes affected by modifiers.
You had to grab over the original vertex positions to see any effect.

Pull Request: #106744
buildbot/vdev-code-daily-coordinator Build done. Details
96f9930de1
Cleanup: Miscellaneous changes in corner fan normal calculation
- Use C++ float3 type, and math function
- Remove non-helpful braces, comment
- Use slightly longer variable name
buildbot/vdev-code-daily-coordinator Build done. Details
2390abf1d3
Cleanup: Reduce indentation when setting custom normals
buildbot/vdev-code-daily-coordinator Build done. Details
54e397cc78
Cleanup: convert node_exec.h to C++
Ref: #103343

Pull Request: #107591
40ff2cfdc5 BLI_path: correct buffer size argument
Pass the size of the string passed in, although in practice
this didn't cause any problems.
069db83152 BLI_string: move DEBUG_STRSIZE check into a macro, check sizes after nil
- Avoid inline ifdef checks for DEBUG_STRSIZE
- Add BLI_string_debug_size_after_nil to ensure strings to manipulate
  have the expected buffer size after the nil terminator.
- Add checks to more string manipulation functions.

Further changes are required for this to be enabled during regular
development as the RNA currently allocates the strings length but
passes in the buffer size as a limit which conflicts with DEBUG_STRSIZE.
c891dbd162 RNA: replace BLI_strncpy with strcpy when when the size isn't meaningful
The size limit used in RNA string access wasn't meaningful as the size
of buffers passed into these functions is defined by the length+1 which
uses strlen, unterminated strings would already cause a buffer overflow.
Note that strcpy for accessing RNA is already widely used,
there were just some cases that used BLI_strncpy too.

This also removes use of BLI_strncpy_utf8 in texture slot access as
names are expected to be utf8, sanitizing when copying in this
particular case doesn't make sense and isn't done elsewhere.
aa7d7c8e4b Cleanup: naming in BLI_path, reserve `len` for string length
- Names ending with len sometimes referred to the buffer size.
  The same names were used for both buffer size and string length
  depending on the function in some cases.

- Rename str/string to path for generic path functions.

- Rename BLI_path_rel arguments (file, relfile) to (path, basename)
  as it wasn't so clear which is being made relative, `file` can be a
  directory so rename to `path` (matches naming for BLI_path_abs).
buildbot/vdev-code-daily-coordinator Build done. Details
93b6463113
Assert ImBuf & Main paths never use blend-file relative prefix
Add assertion on free because the final path isn't always known on
creation.
f428fd8229 Vulkan: Share Device Between Contexts
Previous GHOST_ContextVK would create a logical device for each
context. Blender uses multiple contexts at the same time and wasn't able
to share resources between them as the logical device where different.

This patch will create a single logical device and share them between
multiple contexts. This allows sharing memory/shaders between contexts
and make sure that all memory allocations are freed from the device it
was allocated from.

Some allocations in Blender are freed when there isn't a context, this
was failing in the previous implementation. We didn't noticed it before
as we didn't test multiple contexts.

This patch also moves device specific data structures from VKContext to
VKDevice like the descriptor pools, debug layers etc.

Pull Request: #107606
10a93aebf1 Fix #95855: prioritize selecting keys on active fcurve
This addresses #95855 by prioritizing the selection of keys in the following order:

1. Keys on the active curve.
2. Keys on any selected curve.
3. Other keys.

Additionally, this fixes an as-yet unreported issue where you couldn't select the main vertex of a key if it was overlapping with another one and one or more of its handle vertices were already selected.  This was due to the selection status of a key and its handles not being properly considered separately.

Pull Request: #107223
buildbot/vdev-code-daily-coordinator Build done. Details
b0c7e83805
Cleanup: formatting
In recent changes to vulkan.
e39c3c600c GPU: ShaderLog: Add more const correctness & notes supports
The metal shader compiler can produce `note` reports.
Treat them as warnings.
2815f46883 Metal: ShaderLog: Add initial implementation
This is a really rough implementation. Since the MSL sources
do not correspond 1:1 to the GLSL sources, some mapping is
needed to retreive the GLSL source file for a given generated
line. This will be implemented in a later commit.
9d6659bf07 Metal: Shader: Remove assertion of compilation success
This allow the compilation tests to finish even on failure.
buildbot/vdev-code-daily-coordinator Build done. Details
e674e32aa1
Fix: missing null check leads to crash when rendering
The simulation cache is allocated lazily during evaluation when the
depsgraph is active. However, during rendering, the depsgraph is not
active, so it's not created.
buildbot/vdev-code-daily-coordinator Build done. Details
22e4e97310
macOS: Reduce Edit Mode Drawing Artifacts
Apple Silicon uses tile rendering and can discard tiles if it
is covered. The retopology overlay made some changes to the
shader that introduced some blocking and striping artifacts when
the overlay was disabled.

This PR changes the minimum used offset to reduce the drawing
artifacts. Tweaking the GLSL shader itself didn't work.

Fix #105830

Pull Request: #107611
buildbot/vdev-code-daily-coordinator Build done. Details
5e1470d1b3
Animation: Clean up "Key" menu in Graph Editor
* remove "Keyframe" label from the Key menu
* "Jump To Keyframe" -> "Jump to Selected"
* added a new menu "Density" with Decimate, Sample and Clean operators
* removed the "Clean Channels" entry. It does the same as the "Clean" operator but also removes channels IF the remaining keys are at the default value. The feature is still available in the redo panel
* Split the slider operators out by functionality
* Move Euler filter to Channel menu
* Remove "Add F-Curve modifier" from Key menu (it already is in the Channel menu)
* Move Bake/Unbake Curve functions to Channel menu
* Move "Bake Sound to FCurves" to Channel menu

Pull Request: #106113
1049f11cc0 Fix #107566: Gesture face set respect hidden faces
Gesture face set selection (box and lasso selection) didn't respect hidden
faces, causing selection to bleed unexpectedly, now fixed.

Pull Request: #107575
buildbot/vdev-code-daily-coordinator Build done. Details
9d422f2fbc
Cleanup: Avoid nesting (use early exit) in icon code
Conditional blocks introduce scopes that need to be kept track of,
linear code is easier to follow. So use early exiting to reduce
cognitive load, a number of devs (including myself) consider this good
practice.
d0705bd697 Mesh: Split MLoopTri poly indices into a separate array
For derived mesh triangulation information, currently the three face
corner indices are stored in the same struct as index of the mesh
polygon the triangle is part of. While those pieces of information are
often used together, they often aren't, and combining them prevents
the indices from being used with generic utilities. It also means that
1/3 more memory has to be written when recalculating the triangulation
after deforming the mesh, and that the entire triangle data has to be
read when only the polygon indices are needed.

This commit splits the polygon index into a separate cache on `Mesh`.
The triangulation data isn't saved to files, so this doesn't affect
.blend files at all.

In a simple test deforming a mesh with geometry nodes, the time used
to recalculate the triangulation reduced from 2.0 ms to 1.6 ms,
increasing overall FPS from 14.6 to 15.

Pull Request: #106774
buildbot/vdev-code-daily-coordinator Build done. Details
2e7b896928
Fix strict compiler warning in ImBuf
Solves the warning C4060: switch statement contains no 'case'
or 'default' labels warning with lite builds.

Pull Request: #107619
239c1194a0 Fix #107545: Mistakes in recent node.cc cleanup
1. Early return needs inverted null checking.
2. `BLO_expand` macros expect value, not a pointer.

Pull Request: #107622
buildbot/vdev-code-daily-coordinator Build done. Details
6b5b777ca3
UI: add Proportional Size to Proportional Edit popover
Rather than forcing the user to initiate a transform operation to edit the `Proportional Size`, allow editing of the `Proportional Size` through the UI.

The affected headers are:
- View 3D
- Dop Sheet
- Image Editor
- Graph Editor
- Mask Editor

Pull Request: #107507
buildbot/vdev-code-daily-coordinator Build done. Details
5aa51cf607
EEVEE-Next: Fix warning when using Metal backend
buildbot/vdev-code-daily-coordinator Build done. Details
eca8e6bf5e
Refactor: Convert mask module to C++
Pull Request: #107615
buildbot/vdev-code-daily-coordinator Build done. Details
730b11034f
Cleanup: Move remaining modifier files to C++
See #103343

Pull Request: #107626
buildbot/vdev-code-daily-coordinator Build done. Details
93d464dcd1
Fix snapping with constraint flickering
Flickering observed when snapping to edge or face with axis constraint.

It was probably introduced in 4eda60c2d8

The snapping code has a timer, so `t->tsnap.snapElem` isn't always set.

So avoid changing the value of `t->tsnap.snapElem`.
buildbot/vdev-code-daily-coordinator Build done. Details
e858aa7181
Fix #107623: Do not allow dragging search menu from custom socket
To prevent invalid links, simply disable them for this socket type.
Other nodes with such sockets may appear in the future.

Pull Request: #107628
49c09d7640 Cleanup: remove inline pointcache extension stripping
No need to perform inline, and it would not have worked properly for
*.blend1 files.
8cbb42c640 Cleanup: de-duplicate internal function for file/directory split
Also note that BLI_path_basename can be used in place of
BLI_path_split_file_part when a copy isn't needed.
buildbot/vdev-code-daily-coordinator Build done. Details
a79272a790
Sculpt: fix broken pbvh draw
foreach_faces now passes looptri index instead of a
MLoopTri pointer.
buildbot/vdev-code-daily-coordinator Build done. Details
f15889a9f9
Sculpt: Split face set visibility invert into its own operator
Visibility invert should not use OPTYPE_DEPENDS_ON_CURSOR.
6796cce11d Refactor: add a function to access images extensions from it's format
Previously accessing the extension needed to ensure an extension
on an empty path.

This conflicted with DEBUG_STRSIZE as it was assumed the input was
FILE_MAX, where as it was a small buffer with RNA, see: !107602.

Resolve by separating the function that ensures the extension
with the function that finds valid extensions for a format.

Also pass the size of the filepath to functions that ensure the
extension.
f665b73c89 RNA: replace BLI_strncpy with strcpy/memcpy when the size is known
Follow up on [0] handle remaining cases where BLI_strncpy was used
it RNA string get callbacks.

[0]: c891dbd162
buildbot/vdev-code-daily-coordinator Build done. Details
c80e9641ed
Cleanup: replace UTF8 string copy macro with function
buildbot/vdev-code-daily-coordinator Build done. Details
70cd2a9741
RNA: use memcpy for copying strings when the length is known
There is no advantage in using BLI_strncpy/BLI_strncpy_utf8 when the
destination string has been allocated and won't be concatenated.

Also no need to calloc memory which is filled by strcpy afterwards.
buildbot/vdev-code-daily-coordinator Build done. Details
ecb8d7f8ab
Tests: Add test for broken EXR files
To make sure non-trivial cases like #106977 are not re-introduced.

Pull Request: #107643
buildbot/vdev-code-daily-coordinator Build done. Details
8284bb1ff4
Fix potentially missing redraws when file browser loads recursively
The `do_update` boolean would be overridden with false whenever a single
directory didn't add new items. It should not modify it in this case.
buildbot/vdev-code-daily-coordinator Build done. Details
95fa4d73d6
Cleanup: Avoid nested conditional blocks in WM-jobs code
Conditional blocks introduce scopes that need to be kept track of,
linear code is easier to follow. So use early exiting (`continue`s in
this case) to reduce cognitive load, a number of devs consider this good
practice.
buildbot/vdev-code-daily-coordinator Build done. Details
29053c5c02
EEVEE-Next: Fix validation layer errors on Metal
This only fixes the culling tile group size.
buildbot/vdev-code-daily-coordinator Build done. Details
48abc09d84
Cleanup: format
878477f250 Fix broken UI view notifier listening
(UI views: https://wiki.blender.org/wiki/Source/Interface/Views)

Noticed while working on asset UIs with views, when async loading of
assets wouldn't trigger redraws.
buildbot/vdev-code-daily-coordinator Build done. Details
9654b96ffa
Refactor: pose_slide.c
* add const where possible
* reduce calls to `ED_slider_factor_get` and instead store that in `const float factor`
* rename variables from camel case to snake case, using full words, to conform to naming convention
* use interpf where possible

no functional changes

Pull Request: #107610
buildbot/vdev-code-daily-coordinator Build done. Details
0ffde36fe7
Refactor: flatten light tree in recursive function
This will make further changes for light linking easier, where we want to
build multiple trees specialized for each light linking set.

It's also easier to understand than the stack used previously.

Pull Request: #107560
Julian Eisel added 1 commit 2023-05-05 16:34:39 +02:00
Author
Member

@blender-bot build

@blender-bot build
Julian Eisel added 1 commit 2023-05-10 18:09:59 +02:00
a0a13c78c1 Disable transparency for asset shelf regions
Feedback is that this looks a bit odd, so rather keep it disabled.
Julian Eisel added 3 commits 2023-05-10 18:19:06 +02:00
157cc9b171 Turn catalog selector popup into popover, for consistency
Enables the triangle showing this popup was spawned from a button, uses
more padding (consistent with other popovers) and simplifies code.
ed2f8731f3 Enable item mouse hover highlight for the catalog selector popover
View items now always display mouse hover highlight, regardless of the
embossing (might want to give more precise control for this though).

- Made the active state of items visible, so had to add a way to disable
  that.
- Had to make the view item mouse hover highlight work in popups.
Julian Eisel added 1 commit 2023-05-10 19:06:38 +02:00
Author
Member

@blender-bot build

@blender-bot build
Author
Member

@blender-bot package

@blender-bot package
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR106316) when ready.
Julian Eisel added 1 commit 2023-05-12 15:24:12 +02:00
Julian Eisel added 2 commits 2023-05-12 16:00:58 +02:00
Julian Eisel added 1 commit 2023-05-15 20:02:08 +02:00
Julian Eisel added 1 commit 2023-05-15 20:21:00 +02:00
Julian Eisel added 1 commit 2023-05-15 20:23:57 +02:00
Julian Eisel added 1 commit 2023-05-17 11:38:17 +02:00
Author
Member

@blender-bot package

@blender-bot package
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR106316) when ready.
Julian Eisel added 3 commits 2023-05-17 18:46:13 +02:00
Julian Eisel added 1 commit 2023-05-17 19:19:08 +02:00
Julian Eisel added 3 commits 2023-05-17 23:16:30 +02:00
34b33dee07 Fix: Applying pose through redo last operation not working
AFAIK this doesn't work in master either. Issue is that the operator
relies on context that is only available in the asset shelf region (or
with the mouse over the asset-view template). So the correct region has
to be restored for redo to make this work.
buildbot/vexp-code-patch-coordinator Build done. Details
1fd5097d03
Fix possible crash on file read
Author
Member

This is merged into the asset-shelf branch now, PR blender/blender#104831.

This is merged into the `asset-shelf` branch now, PR blender/blender#104831.
Julian Eisel closed this pull request 2023-05-17 23:31:53 +02:00
Julian Eisel deleted branch temp-asset-shelf-grid-view 2023-05-17 23:32:04 +02:00
Author
Member

@blender-bot package

@blender-bot package
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR106316) when ready.
All checks were successful
buildbot/vexp-code-patch-coordinator Build done.

Pull request closed

Sign in to join this conversation.
No reviewers
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#106316
No description provided.