Fix #108376: Copy from geometry to other node tree types resets shapes #108412

Merged
Lukas Tönne merged 4 commits from LukasTonne/blender:reset_socket_shapes_on_copy into blender-v3.6-release 2023-06-12 14:21:56 +02:00
Member

Socket shapes are used in geometry nodes to indicate field types.
In other tree types (e.g. shaders) the socket shape is not touched at
all. Since nodes can be copied from geometry node trees, we need to
reset the socket shape when copying to a shader, compositor, or texture
tree.

Socket shapes are used in geometry nodes to indicate field types. In other tree types (e.g. shaders) the socket shape is not touched at all. Since nodes can be copied from geometry node trees, we need to reset the socket shape when copying to a shader, compositor, or texture tree.
Lukas Tönne added 1 commit 2023-05-30 11:47:00 +02:00
3272410db0 Fix #108376: Copy from geometry to other node tree types resets shapes.
Socket shapes are used in geometry nodes to indicate field types.
In other tree types (e.g. shaders) the socket shape is not touched at
all. Since nodes can be copied from geometry node trees, we need to
reset the socket shape when copying to a shader, compositor, or texture
tree.
Lukas Tönne added this to the Nodes & Physics project 2023-05-30 11:47:17 +02:00
Lukas Tönne requested review from Jacques Lucke 2023-05-30 11:47:23 +02:00
Iliya Katushenock added the
Interest
User Interface
label 2023-05-30 14:16:05 +02:00

Can this happen in copy operator instead of each update call?

Can this happen in copy operator instead of each update call?
Member

Ideally we wouldn't use socket shapes for this at all. But in the meantime, I'd second @mod_moder's comment.

Ideally we wouldn't use socket shapes for this at all. But in the meantime, I'd second @mod_moder's comment.
Jacques Lucke requested changes 2023-05-31 09:35:41 +02:00
Jacques Lucke left a comment
Member

Agree with Hans/Mod.

Agree with Hans/Mod.
Lukas Tönne added 675 commits 2023-06-12 11:59:11 +02:00
buildbot/vdev-code-daily-coordinator Build done. Details
7be3a0a727
Release cycle: Bcon1 for Blender 4.0, alpha.
buildbot/vdev-code-daily-coordinator Build done. Details
feaeb7e6ad
Revert "Release cycle: 3.6 enters beta, Bcon3."
This reverts commit 2dd0a08aff.
buildbot/vdev-code-daily-coordinator Build done. Details
df48490db2
Fix warning in USD curves exporter
Use timecode.GetValue() to fix warning about passing correct 'double' type to 'WM_reportf'

Co-authored-by: DESKTOP-ON14TH5\Sonny Campbell <sonny.campbell@unity3d.com>
Pull Request: #108008
buildbot/vdev-code-daily-coordinator Build done. Details
aa2eb422a7
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
ac6af0be7b
Cleanup: Add enum type for drag data type definitions
Adds type safety and enables compiler features like warnings on missing
enumerator in switches.
a9193a9ad2 Refactor ID liblinking on readfile to take ID pointer.
The usage of the lib pointer was cryptic to say the least, it was
essentialy used to allow or not local IDs results in the mapping
old_id_pointer -> new_id_pointer lookup result.

Now:
- Explicitely pass a boolean to allow or not local ID as result in
  lower-level code.
- Pass the 'self ID' pointer instead of its library to the whole
  liblinking code (that was already the case in a few places).

Note that naming of the 'self id' pointer is currently very inconsistent
throughout the readfile liblink code, this will have to be cleaned up in
a separate step later. For now, `self_id` has been chosen for new code
as it matches the terminology in lib_query code.

The later change can also allow finer handling of lookup on undo, based
on how it was re-read (or not), should the need for this arise.
buildbot/vdev-code-daily-coordinator Build done. Details
086dada878
Fix/Update the 'search previous startup data' versioning logic.
`PREFERENCES_OT_copy_prev` handling of versionning was for older release
cycles type (pre-3.0), now that we are in 4.0, we can use a simpler
logic: Just look for startup data from this major release cycle (i.e.
4.x currently) and the previous one (i.e. all 3.x releases).

Fixes the 're-use previous settings' option not showing when first
starting 4.0 build.
d4217c278e Fix excessive vertical margin between items in asset view template
The UI list and asset view preview size calculations were out of sync,
so the UI list made more space than the preview actually used. Making
them match made the previews quite large though, so compensate that by
scaling the layout down.
Remove the related TODO comment, since this uses a common function for
getting the preview size now.

Before/after:
![Screenshot from 2023-05-17 17-33-19.png](/attachments/0ac713a3-12d9-41b6-ab50-85790da765a9) ![Screenshot from 2023-05-17 17-42-15.png](/attachments/0def65b5-6b16-4431-9a9e-592ed3d9675f)

Pull Request: #108017
76112f1439 Fix double highlighting of preview tiles in asset view template
The highlighting of preview tiles would be too strong in asset view
templates and grid views (only used in branches so far). This is because
two buttons are overlayed on top of each other, and both would
highlight. Ensure the overlayed preview tile button doesn't use any
highlighting.
c89354da80 UI: Properly center text under previews
The text under previews would be quite close to the preview, so that
there was more space below it than above. Center it vertically in the
available space now. Also, the horizontal padding was only applied to
the right side of the text rectangle, meaning horizontally centered text
would be too far left. Apply the padding equally, this doesn't affect
available space for the text too much.

See #108018 for before/after pictures.

Pull Request: #108018
buildbot/vdev-code-daily-coordinator Build done. Details
39a5025032
UI: Use fixed width for grid view items, don't stretch to full width
No user visible changes expected (since grid-views are only used in
branches right now).

This just makes grid view UIs feel more "stable" while scaling areas,
since things don't move around as much anymore. The tradeoff is that
there may be some empty space on the right, if there's not enough space
for a full column. This is how the file browser already behaves, and can
be mitigated by a smaller preview size.
buildbot/vdev-code-daily-coordinator Build done. Details
1b63a290c6
Core: Write mesh and movieclip with new format
Finish the transition from #95966 and fe38715600 by
writing files with the new format for meshes and some movie clip fields.
This removes overhead when saving files, and makes meshes saved in
files smaller (a file with a 1 million face grid changed from 32 to 28 MB).

3.6 can still read files saved with this format, but older versions will
crash. Older files are automatically converted by versioning code when
opened.

This also allows removing all the code that converts from the new
format to the legacy format, previously used when saving files.

Pull Request: #108015
buildbot/vdev-code-daily-coordinator Build done. Details
6805657a39
Mesh: Remove sculpt vertex colors from RNA API
Added in f7bbc7cdbb, these were never exposed in an
official release, and were eventually replaced by the attribute system.

Ref #100153
buildbot/vdev-code-daily-coordinator Build done. Details
d41021a7d4
Mesh: Remove deprecated face/vert custom data API
Remove six collection properties from Mesh that are redundant
with the attribute API which has a nicer API and more features.
- `vertex_layers_float`
- `vertex_layers_int`
- `vertex_layers_string`
- `polygon_layers_float`
- `polygon_layers_int`
- `polygon_layers_string`
buildbot/vdev-code-daily-coordinator Build done. Details
9bdfb15e98
Cleanup: Remove redundant writing of old face set type
Face sets are now always saved with the generic float type
468295cb7c Cleanup: Add a function to sample mesh point normals
This simplifies #108014 and is consistent with the existing function
for face corners, `sample_corner_normals`.
buildbot/vdev-code-daily-coordinator Build done. Details
4368b0e296
Merge branch 'blender-v3.6-release' into main
buildbot/vdev-code-daily-coordinator Build done. Details
9fbadc98cd
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
07058765b9
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
406cfd214a
Refactor ImBuf buffer access
The goal is to make it more explicit and centralized operation to
assign and steal buffer data, with proper ownership tracking.

The buffers and ownership flags are wrapped into their dedicated
structures now.

There should be no functional changes currently, it is a preparation
for allowing implicit sharing of the ImBuf buffers. Additionally, in
the future it is possible to more buffer-specific information (such
as color space) next to the buffer data itself. It is also possible
to clean up the allocation flags (IB_rect, ...) to give them more
clear naming and not have stored in the ImBuf->flags as they are only
needed for allocation.

The most dangerous part of this change is the change of byte buffer
data from `int*` to `uint8_t*`. In a lot of cases the byte buffer was
cast to `uchar*`, so those casts are now gone. But some code is
operating on `int*` so now there are casts in there. In practice this
should be fine, since we only support 64bit platforms, so allocations
are aligned. The real things to watch out for here is the fact that
allocation and offsetting from the byte buffer now need an explicit 4
channel multiplier.

Once everything is C++ it will be possible to simplify public
functions even further.

Pull Request: #107609
0eba8ac85a Fix #108034: Multires simple subdivide crash
Before 9f78530d80, the -1 coarse_edge_index values in the
foreach_edge calls would return false in BLI_BITMAP_TEST_BOOL,
which made them look like loose edges. BitSpan doesn't have this
problem, so the return for negative indices must be explicit.
buildbot/vdev-code-daily-coordinator Build done. Details
30a20b4def
Nodes: Remove deprecated useless width_hidden property
See 7b82d8f029
buildbot/vdev-code-daily-coordinator Build done. Details
fc06a471f1
Geometry Nodes: Only use realized geometry in mesh boolean node
Since 44e4f077a9 and related commits, geometry nodes doesn't
try to hide the difference between real geometry data and instances from
the user. Other nodes were updated to only support real geometry, but
the "Mesh Boolean" node was never updated and still implicitly gathered
all the instances. This commit removes the special instance behavior in the
boolean node and adds realize instances nodes to keep existing behavior
in most cases. Typically this doesn't make a difference in the result,
though it could in the union mode for instance inputs. Shifting more of
the work to realizing instances should generally be better for
performance, since it's much faster.
buildbot/vdev-code-daily-coordinator Build done. Details
3a839cc52b
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
8cde7d8f8a
Cycles: Merge Anisotropic BSDF node into Glossy BSDF node
Used to be https://archive.blender.org/developer/D17123.

Internally these are already using the same code path anyways, there's no point in maintaining two distinct nodes.

The obvious approach would be to add Anisotropy controls to the Glossy BSDF node and remove the Anisotropic BSDF node. However, that would break forward compability, since older Blender versions don't know how to handle the Anisotropy input on the Glossy BSDF node.

Therefore, this commit technically removes the Glossy BSDF node, uses versioning to replace them with an Anisotropic BSDF node, and renames that node to "Glossy BSDF".

That way, when you open a new file in an older version, all the nodes show up as Anisotropic BSDF nodes and render correctly.

This is a bit ugly internally since we need to preserve the old `idname` which now no longer matches the UI name, but that's not too bad.

Also removes the "Sharp" distribution option and replaces it with GGX, sets Roughness to zero and disconnects any input to the Roughness socket.

Pull Request: #104445
buildbot/vdev-code-daily-coordinator Build done. Details
b34ece48f8
Fix #106484: Show all rotations with same precision
Increase precision of some rotational inputs so that they all show the
same precision.  And have the arrows change in full degrees.

Pull Request: #106515
buildbot/vdev-code-daily-coordinator Build done. Details
40ccc37fc6
VSE: Add go to current frame operator to view menu
buildbot/vdev-code-daily-coordinator Build done. Details
dad9e8e621
Fix #102574: Don't Show "Rename" for Volume and & System lists
For File Browser "System" and "Volumes" lists, the item names cannot be
changed by users yet the tooltip says "Double click to rename". This PR
just removes that text for these non-editable lists.

Pull Request: #106873
c7a508be50 Cleanup: pass boolean to text_drawcache_tag_update
Also remove redundant CTX_wm_space_text(C) calls.
381fae91b1 Geometry Nodes: Keep loose vert/edge tags for extrude and split edges
If there are no loose vertices or edges, it's basically free to
propagate that information to the result and save calculating
it later in case it's necessary. I observed a peformance increase
from 3.6 to 4.1 FPS when extruding a 1 million face grid.
buildbot/vdev-code-daily-coordinator Build done. Details
71d22331b1
Cleanup: Rename mesh loose edges tag function
To match the more recently added `tag_loose_verts_none`.
buildbot/vdev-code-daily-coordinator Build done. Details
ec8a4cfcb7
Merge branch 'blender-v3.6-release'
712d177aa3 Cleanup: avoid strcpy for initializing ID names
While strcpy is safe in this case, it's use requires extra scrutiny
and can cause problems if the strings are later translated.

Also move the ID code assignment into material_init_data
as the ID-code is more of an internal detail.
buildbot/vdev-code-daily-coordinator Build done. Details
3db0bde21d
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
9af19822f0
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
9e5e06136a
Fix motion tracking not tracking at all
A mistake in the recent ImBuf API refactor: the Libmv image accessor
was copying destination to destination (possibly using the wrong
number of channels as well).

Pull Request: #108070
buildbot/vdev-code-daily-coordinator Build done. Details
e620ae054f
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
3a286a735f
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
51923c09e2
Cycles: implement faster #make_orthonormals()
Pull Request: #106053
buildbot/vdev-code-daily-coordinator Build done. Details
2a56403cb0
Mesh: Move bevel weight to generic attribute
Store bevel weights in two new named float attributes:
- `bevel_weight_vert`
- `bevel_weight_edge`

These attributes are naming conventions. Blender doesn't enforce
their data type or domain at all, but some editing features and
modifiers use the hard-coded name. Eventually those tools should
become more generic, but this is a simple change to allow more
flexibility in the meantime.

The largest user-visible changes are that the attributes populate the
attribute list, and are propagated by geometry nodes. The method of
removing this data is now the attribute list as well.

This is a breaking change. Forward compatibility is not preserved, and
the vertex and edge `bevel_weight` properties are removed. Python API
users are expected to use the attribute API to get and set the values.

Fixes #106949

Pull Request: #108023
buildbot/vdev-code-daily-coordinator Build done. Details
8cc22d2809
Workaround Cycles regression test failures
The failure happens since the recent changes in the make_orthonormals.

The only difference is the underwater caustics test file, and the
difference seems to be a noise floor.

There seems to be nothing wrong with the math in the function itself:
the return values are all without quite small epsilon when comparing
Linux with M2 macOS. The thing is: the very first input is already a
bit different on different platforms. So the difference is already
somewhere else.

For now increase the threshold to avoid confusion of the rest of the
team, and to allow builds to be deployed.

Pull Request: #108080
buildbot/vdev-code-daily-coordinator Build done. Details
560e9c654b
UI: Edit Mode Options panel cleanup
AutoMerge is a property of transform operations, so it seems more
convenient to have this option bundled with transform settings.

Another thing is that the 'Live Unwrap' option has no real relation to
Transform.

Therefore, remove the 'AutoMerge' sub-panel and create two sub-panels
for the Options Panel:
- Transform
- UVs

Merge the 'AutoMerge' settings into the 'Transform' sub-panel.

Move 'Live Unwrap' to the 'UVs' sub-panel.

Pull Request: #108056
b40b59935d Metal: Force Compute shaders workgroup max thread count
This forces the max thread count to be inlined with what
blender expects. While this will make some shaders less
eficient it avoid crashes / assert on shaders that
could not compile. The performance impacts can be fixed
by tackling the individual cases.
buildbot/vdev-code-daily-coordinator Build done. Details
8bca0e1075
Cleanup: Format python after recent changes
Pull Request: #108086
buildbot/vdev-code-daily-coordinator Build done. Details
c435d2f856
Metal: Always add GPU_TEXTURE_USAGE_ATTACHMENT flag
Texture clearing is done using framebuffer clear.
To avoid adding the flag everywhere we add it as part
of the texture creation process.

This should have no performance impact.
buildbot/vdev-code-daily-coordinator Build done. Details
f17ea1f2a7
Geometry Nodes: Remove realize instances legacy behavior
The option was added f5ce243a56 when the node was
rewritten to add support for propagating instance attributes.
buildbot/vdev-code-daily-coordinator Build done. Details
552c262cee
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
2ce365efc7
View 3D: new utility to provide navigation in operators
Implements a new API consisting of:
- `ED_view3d_navigation_init`,
- `ED_view3d_navigation_do` and
- `ED_view3d_navigation_free`,

With these functions, any operator can create their own navigation
context and navigate in the 3D View without having to use
`PASS_THROUGH`.
buildbot/vdev-code-daily-coordinator Build done. Details
33c13ae6e3
Transform: support navigation while transforming in 3D view
Implements a new option in keymap settings:
- "Navigate during Transform"

Note that with the option enabled, the keymap changes as follows:

|Modal Map (Blender):| Conflict: | Current: | New:
|---|---|---|---
| Increase Proportional Influence | VIEW3D_OT_zoom | Wheel Down | Alt Wheel Down
| Decrease Proportional Influence | VIEW3D_OT_zoom | Wheel Up | Alt Wheel Up
| Adjust Proportional Influence | VIEW3D_OT_rotate | Mouse/Trackpad Pan | Alt Mouse/Trackpad Pan
| Increase Max AutoIK Chain Length | VIEW3D_OT_zoom | Wheel Down | Alt Wheel Down
| Decrease Max AutoIK Chain Length | VIEW3D_OT_zoom | Wheel Up | Alt Wheel Up
| Automatic Constraint | VIEW3D_OT_rotate | Middle Mouse | Alt Middle Mouse
| Automatic Constraint Plane | VIEW3D_OT_move | Shift Middle Mouse | Shift Alt Middle Mouse

Design Task: #106008
Pull Request: #105764
buildbot/vdev-code-daily-coordinator Build done. Details
8783a51583
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
8925ea1890
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
f637b8c095
UI: Rename Copy Vertex Group to Duplicate Vertex Group
Change display name of OBJECT_OT_vertex_group_copy to "Duplicate Vertex
Group" from "Copy Vertex Group". The word "duplicate" is a better
unambiguous descriptor of this operation.

Pull Request: #107691
buildbot/vdev-code-daily-coordinator Build done. Details
43d66f6760
Cleanup: Fix copyright date in new bke header
Pull Request: #108112
buildbot/vdev-code-daily-coordinator Build done. Details
57f593b7ca
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
f6d824bca6
BLI: move tbb part of parallel_for to implementation file
Previously, `tbb::parallel_for` was instantiated every time `threading::parallel_for`
is used. However, when actual parallelism is used, the overhead of a function
call is negilible. Therefor it is possible to move that part out of the header
without causing noticable performance regressions.

This reduces the size of the Blender binary from 308.2 to 303.5 MB, which is
a reduction of about 1.5%.
buildbot/vdev-code-daily-coordinator Build done. Details
b58cfde48a
BLI: improve IndexRange
Defining `operator-` for the iterator allows it to be used in more generic
iterator code. The `index_range` method is the same that exists on many
other containers like `Vector`.
buildbot/vdev-code-daily-coordinator Build done. Details
8c6908eba5
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
737f582329
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
fd887bcb15
Merge branch 'blender-v3.6-release'
92512f224d BLI: support keeping track of how much memory a linear allocator uses
This is useful when debugging how much memory a particular function
allocates from this allocator. The change also reduces the size of
`LinearAllocator`.
2b49d4eeea BLI: support transferring ownership of buffers between linear allocators
This can be useful when e.g. each thread has its own `LinearAllocator`,
but in the end they are combined into one.
7725bacd6a BLI: support aligned parallel reduce
Alignment here means that the size of the range passed into callback
is a multiple of the alignment value (which has to be a power of two).
This can help with performance when loops in the callback are are
unrolled and/or vectorized. Otherwise, it can potentially reduce
performance by splitting work into more unequally sized chunks.
For example, chunk sizes might be 4 and 8 instead of 6 and 6 when
alignment is 4.
buildbot/vdev-code-daily-coordinator Build done. Details
64c33871bd
Cleanup: add missing inline
This is necessary for correctness of the code to avoid duplicate symbols.
In practice, this wasn't necessary yet, because usually we pass lambdas
into these functions which cause every instantiation to have a different
signature.
buildbot/vdev-code-daily-coordinator Build done. Details
7f4aa0b553
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
eb3e32b653
Fix #108136: Regression : Texture paint is broken
Mistake in the 406cfd214a which was calculating the offset wrongly.

Pull Request: #108138
buildbot/vdev-code-daily-coordinator Build done. Details
a440386654
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
2decfe4f00
I18n: Add translation contexts to properties declared from Python
Some property labels need a context to disambiguate them from others
which have the same name.

The only way to show the proper text currently for such properties is
to override it in the UI code with a translation context, like:

```python
    layout.prop(obj, "area", text="Area",
                context=i18n_contexts.amount)
```

Python properties already store a translation context though, but this
context cannot be chosen from a Python script.

For instance, typing:

```python
bpy.types.Scene.test_area = bpy.props.BoolProperty(name="Area")
print(bpy.context.scene.bl_rna.properties['test_area'].translation_context)
```

will print `*`, the default context for Python props.

This commit allows specifying a context in this manner:

```python
from bpy.app.translations import contexts as i18n_contexts
bpy.types.Scene.test_number_area = bpy.props.BoolProperty(
    name="Area", translation_context=i18n_contexts.amount
)
print(bpy.context.scene.bl_rna.properties['test_number_area'].translation_context)
```

will now print `Amount` and can be translated differently from other
labels. In this instance, the word for a surface area measurement,
instead of a UI area.

-----

This is what translated properties look like using the existing ("Area", "") and ("Area", "Amount") messages:
![python_prop_contexts_test.png](/attachments/b0d9737e-4b31-4c91-a08e-b347db31225f)

The panel can be generated with this script:
[python_prop_contexts_test.py](/attachments/ab613cdc-8eba-46bc-8f3c-ad0a97e7a6e5)

Pull Request: #107150
0af41365e6 Cleanup: remove translation headers from node files
After 22f641e7f8, translation macros were removed and thus in many
files inclusion of the translation header is no longer needed.

Pull Request: #107986
buildbot/vdev-code-daily-coordinator Build done. Details
1ab265f535
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
2164515fab
DrawManager: Fix Incorrect Resource Binding Hair/Curves
In the DrawManager a dummy texture was attached to the a, au, c, ac
binding points. In the shader those binding points are actual texture
buffers.

The reason for the dummy texture was to work around some OpenGL driver
bugs. In Vulkan (and expected also in Metal) it is not allowed to attach
a texture as a texel buffer. Fixing this would require copying buffers into a
buffer during binding.

This patch will remove the binding of the textures and use the vbos
instead. Also it fixes an issue where a platform does support compute
shaders, but don't support transform feedback. This is currently the
case for the Vulkan backend.

Pull Request: #108139
buildbot/vdev-code-daily-coordinator Build done. Details
e70051ae3d
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
6cce149144
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
7d416ece82
Cleanup: fix compiler warnings
c93bb9f323 LibOverride: Minor improvement to recent liboverride API changes.
Avoid two GHash lookups when deleting an override property by its RNA
path.
buildbot/vdev-code-daily-coordinator Build done. Details
5eab240f7f
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
ae405639e7
Metal: Stencil texture view support
Adds stencil texture view support for Metal, allowing reading of
stencil component during texture sample/read.

Stencil view creation refactored to use additional parameter in
textureview creation function, due to deferred stencil parameter
causing double texture view creation in Metal, when this should
ideally be provided upfront.

Authored by Apple: Michael Parkin-White

Pull Request: #107971
buildbot/vdev-code-daily-coordinator Build done. Details
f85fb56a4a
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
6609ca4593
UI: Shapekey pin tooltip change
Use correct terminology "value" vs strength
buildbot/vdev-code-daily-coordinator Build done. Details
c06e8f6549
UI: Change tooltip for edit mode display shapekey
Change terminology from Apply to Display.
Apply suggests a destructive change to
the base mesh.

Display is also used in modifiers.
buildbot/vdev-code-daily-coordinator Build done. Details
2c1338f67b
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
c440efb23a
Fix invalid buffer size used in ED_asset_handle_get_full_library_path
Relatively harmless as the length was shorter, however all callers
used the larger size.
5659e83e04 Cleanup: remove incorrect use of the `r_` prefix, use sized argument
Rename `r_dir` to `dirpath` as this isn't a return only argument.
Also add the maximum size in the argument as a hint for the maximum size.
buildbot/vdev-code-daily-coordinator Build done. Details
63074dddb1
Merge branch 'blender-v3.6-release'
7fbac7e235 UI: set the waiting cursor from pack/unpack operators
Remove the guimode argument which used to set the cursor back in v2.4x.
buildbot/vdev-code-daily-coordinator Build done. Details
9357f7b606
PyAPI: remove deprecated blf.size() dpi argument
Scripts can be updated by scaling the font size, e.g.

blf.size(id, size, dpi) -> blf.size(id, size * (dpi / 72.0))
buildbot/vdev-code-daily-coordinator Build done. Details
ab5fc46872
PyAPI: remove deprecated Mesh.calc_normals
ac263a9bce PyAPI: remove context override argument from bpy.ops
Remove deprecated context override argument to operator execution and
poll() method in favor of context.temp_override().
buildbot/vdev-code-daily-coordinator Build done. Details
d1cc16913d
PyAPI: use faster argument parsing for internal bpy.ops call & poll
No functional changes.
472e6563b0 Cleanup: replace strncpy calls with BLI_strncpy
Prefer BLI_strncpy as it ensures the string is null terminated.
buildbot/vdev-code-daily-coordinator Build done. Details
345fc2b1f6
PyAPI: remove deprecated bpy.app.version_char
7bc34283ea PyAPI: Operator.bl_property no longer defaults to "type"
This hard-coded assumption meant that operators would behave as if
bl_property = "type" was assigned in the operator - when the variable
wasn't found.

Remove the hard coded name. Operators that depended on this now need
to assign bl_property = "type" in the operator class explicitly.

Remove this because it wasn't documented as means operator behavior
could change unexpectedly when renaming a property.
fd68f977e0 PyAPI: remove dpi from BLF doc-string
Missed from recent removal of the argument.
buildbot/vdev-code-daily-coordinator Build done. Details
9a8fd2f1dd
PyAPI: remove deprecated 2D_/3D_ prefix for built-in shader names
Names passed to gpu.shader.from_builtin()
no longer skip the 2D_/3D_ prefix.
buildbot/vdev-code-daily-coordinator Build done. Details
495e4f2d0e
PyAPI: remove deprecated 2D_/3D_ prefix (update docs)
a5677d225b Refactor Render Result to allow implicit buffer sharing
Allows to share buffer data between the render result and image buffers.

The storage of the passes and buffers in the render result have been
wrapped into utility structures, with functions to operate on them.

Currently only image buffers which are sharing buffers with the render
results are using the implicit sharing. This allows proper decoupling of
the image buffers from the lifetime of the underlying render result.

Fixes #107248: Compositor ACCESS VIOLATION when updating datablocks from handlers

Additionally, this lowers the memory usage of multi-layer EXR sequences
by avoiding having two copies of render passes in memory.

It is possible to use implicit sharing in more places, but needs
some API to ensure the render result is the only owner of data before
writing to its pixels.

Pull Request: #108045
buildbot/vdev-code-daily-coordinator Build done. Details
793446cbdc
BLI: Replace some macros with inlined functions for C++
Covers the macro ARRAY_SIZE() and STRNCPY.

The problem this change is aimed to solve it to provide cross-platform
compiler-independent safe way pf ensuring that the functions are used
correctly.

The type safety was only ensured for GCC and only for C. The C++
language and Clang compiler would not have detected issues of passing
bare pointer to neither of those macros.

Now the STRNCPY() will only accept a bounded array as the destination
argument, on any compiler.

The ARRAY_SIZE as well, but there are a bit more complications to it
in terms of transparency of the change.

In one place the ARRAY_SIZE was used on float3 type. This worked in the
old code because the type implements subscript operator, and the type
consists of 3 floats. One would argue this is somewhat hidden/implicit
behavior, which better be avoided. So an in-lined value of 3 is used now
there.

Another place is the ARRAY_SIZE used to define a bounded array of the
size which matches bounded array which is a member of a struct. While
the ARRAY_SIZE provides proper size in this case, the compiler does not
believe that the value is known at compile time and errors out with a
message that construction of variable-size arrays is not supported.

Solved by converting the field to std::array<> and adding dedicated
utility to get size of std::array at compile time. There might be a
better way of achieving the same result, or maybe the approach is
fine and just need to find a better place for such utility.

Surely, more macro from the BLI_string.h can be covered with the C++
inlined functions, but need to start somewhere.

There are also quite some changes to ensure the C linkage is not
enforced by code which includes the headers.

Pull Request: #108041
buildbot/vdev-code-daily-coordinator Build done. Details
4997748e5e
Vulkan: Select Compatible Render Surface
In previous implementation the first available render surface was
selected. For NVIDIA platform this was the correct one, but for
AMD and Intel GPUs this was incorrect. This PR goes over all the
available render surfaces and selects a compatible one.

For now when no compatible render surface is found it will still select
the first available one. With the expectation that the screen is drawn
incorrectly and users would report a bug so we can investigate.

Pull Request: #108169
07c59041ac GPU: Add `packed_int3` for SSBO/UBO struct alignment
MSL require to use packed_int3 for compatibility
with GLSL memory layout.
buildbot/vdev-code-daily-coordinator Build done. Details
e54a20b2a2
Cleanup: Remove unused collection pointer from depsgraph builder
Pull Request: #108177
94f5ea9731 Refactor instanced collection relation builder in depsgraph
Move the instancing related code to a dedicated function, leaving
the generic `build_collection()` dedicated to the building of the
collection itself.

Should be no functional changes: the code paths should effectively
still be the same. This is because non-instancing cases were passing
object as a null pointer, disabling the non-generic code path.
buildbot/vdev-code-daily-coordinator Build done. Details
61ed5b3d24
Depsgraph: Add explicit object collection hierarchy tracking
The practical problem this change addresses is ability to have base
flag dependent functionality in Cycles without re-setting the render
on selection. This problem initially arose during the Cycles light
linking project.

The original review happened there:

    #105837

Pull Request: #108182
3d895f6e7a Cleanup: Clear Space in the render log
I found the small dent on the log to be bothersome and unnecessary. Although modifying the Blender output may cause some parsing issues, they can be quickly resolved.

Before:
```
22-05 16:26:02 (debug) Fra:96 Mem:3130.54M (Peak 11196.17M) | Time:11:58.38 | Remaining:00:09.02 | Mem:2890.45M, Peak:9039.80M | Scene | ViewLayer | Finishing
22-05 16:26:34 (debug) Saved: 'd:\sheep_gpu\sheepit\208726392_0096.png'
22-05 16:26:34 (debug)  Time: 12:30.28 (Saving: 00:31.08)
```
After:
```
22-05 16:26:02 (debug) Fra:96 Mem:3130.54M (Peak 11196.17M) | Time:11:58.38 | Remaining:00:09.02 | Mem:2890.45M, Peak:9039.80M | Scene | ViewLayer | Finishing
22-05 16:26:34 (debug) Saved: 'd:\sheep_gpu\sheepit\208726392_0096.png'
22-05 16:26:34 (debug) Time: 12:30.28 (Saving: 00:31.08)
```

Pull Request: #108187
9ae2dd577a Overlay-Next: Initial implementation
This contains the basis of the new overlay engine.
Only a few overlays are ported for proof of concept of the new design.

This new design unifies the selection drawing with the overlay-next engine.
It now becomes responsible of selection in object mode.
For this we create a dedicated shader module that patches the shaders
for selection.

Note that the gizmo selection still uses the occlusion queries and edit-mode
the current selection engine (select_engine.c).

Related task #102179
Related task #102177

Co-authored-by: Clément Foucault <foucault.clem@gmail.com>
Pull Request: #107734
buildbot/vdev-code-daily-coordinator Build done. Details
683f7d3f74
Merge branch 'blender-v3.6-release'
c0e61afc05 GPU: Make ShaderInterface.debug_print const
Method didn't modified the ShaderInterface but wasn't usable when trying
to debug a const reference to the ShaderInterface. This PR just adds the
const to the method.

Pull Request: #108190
buildbot/vdev-code-daily-coordinator Build done. Details
1d9aaf7a4d
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
5142d8c831
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
0d13b0e50d
Depsgraph: add generic way for modifiers to check user-edited flags
This implements the design described in #108174.

Pull Request: #108181
buildbot/vdev-code-daily-coordinator Build done. Details
ec1349c62d
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
574a9a9c8f
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
14e6a5c44c
Cleanup: Remove #pragma once in .cc files
buildbot/vdev-code-daily-coordinator Build done. Details
abdb2bd6e9
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
0f87bdfd8f
Merge branch 'blender-v3.6-release'
fa8351486f Cleanup: Remove template in vertex color transform operators
Replace a template with a FunctionRef, reducing Blender's
binary size by 63 KB, with a negligible performance impact.
buildbot/vdev-code-daily-coordinator Build done. Details
e704ebaba4
Cleanup: Remove unnecessary template in curve subdivide node
The Catmull Rom curve subdivision arguments use runtime-typed spans,
so the template doesn't help anyway. Makes Blender 27 KB smaller.
buildbot/vdev-code-daily-coordinator Build done. Details
37b6ba7616
Cleanup: Fix build error on Windows
48d146fb5c Fix potential buffer overflows in USD export & OpenEXR
- Don't use the source string length +1 as the size of the destination
  (USD export & IMB_exr_get_handle_name).
- Correct undersized buffer being passed into imb_exr_insert_view_name.
buildbot/vdev-code-daily-coordinator Build done. Details
f5ea30985e
Cleanup: misleading/incorrect argument to BLI_path_to_display_name
The strlen() was passed in as a size argument, in this case it
couldn't have caused an overflow because the source & destination
happened to be the same size.

Also reduce the destination buffer size as this is used for an ID name.
buildbot/vdev-code-daily-coordinator Build done. Details
44d9a5eb72
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
a6eae61b52
Fix: Windows build error in template code
`using namespace blender` didn't make it into the lambda,
likely because of a compiler bug.
buildbot/vdev-code-daily-coordinator Build done. Details
8be8960738
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
a4217d8a71
Merge branch 'blender-v3.6-release'
4ac66828cf Cleanup: remove use of strcat
While these uses seemed safe, strcat is error prone enough that other
functions are preferable.
buildbot/vdev-code-daily-coordinator Build done. Details
9e8cfabb8a
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
57501d899d
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
4d841e1b35
Mesh: Reimplement and unify topology maps
Combine the newer less efficient C++ implementations and the older
less convenient C functions. The maps now contain one large array of
indices, split into groups by a separate array of offset indices.
Though performance of creating the maps is relatively unchanged, the
new implementation uses 4 bytes less per source element than the C
maps, and 20 bytes less than the newer C++ functions (which also
had more overhead with larger N-gons). The usage syntax is simpler
than the C functions as well.

The reduced memory usage is helpful for when these maps are cached
in the near future. It will also allow sharing the offsets between
maps for different domains like vertex to corner and vertex to face.

A simple `GroupedSpan` class is introduced to make accessing the
topology maps much simpler. It combines offset indices and a separate
span, splitting it into chunks in an efficient way.

Pull Request: #107861
buildbot/vdev-code-daily-coordinator Build done. Details
60d97fb5fa
Fix man-page generation when ASAN_OPTIONS included strict_init_order
The install target would fail when ASAN_OPTIONS was set for the
environment that launched the build.

Resolve by explicitly overriding these settings.
buildbot/vdev-code-daily-coordinator Build done. Details
ba3f26fac5
Cycles: light and shadow linking
With light linking, lights can be set to affect only specific objects in the
scene. Shadow linking additionally gives control over which objects acts a
shadow blockers for a light.

Usage:
https://wiki.blender.org/wiki/Reference/Release_Notes/4.0/Cycles

Implementation:
https://wiki.blender.org/wiki/Source/Render/Cycles/LightLinking

Ref #104972
Co-authored-by: Brecht Van Lommel <brecht@blender.org>
buildbot/vdev-code-daily-coordinator Build done. Details
c9dac7e77c
BLI: Add utility to find true/false mix in boolean array
This is useful for #108014, when determining whether there
are any sharp faces and edges in a mesh.
buildbot/vdev-code-daily-coordinator Build done. Details
9acff4edab
Merge branch 'blender-v3.6-release'
2cfcb8b0b8 BLI: refactor IndexMask for better performance and memory usage
Goals of this refactor:
* Reduce memory consumption of `IndexMask`. The old `IndexMask` uses an
  `int64_t` for each index which is more than necessary in pretty much all
  practical cases currently. Using `int32_t` might still become limiting
  in the future in case we use this to index e.g. byte buffers larger than
  a few gigabytes. We also don't want to template `IndexMask`, because
  that would cause a split in the "ecosystem", or everything would have to
  be implemented twice or templated.
* Allow for more multi-threading. The old `IndexMask` contains a single
  array. This is generally good but has the problem that it is hard to fill
  from multiple-threads when the final size is not known from the beginning.
  This is commonly the case when e.g. converting an array of bool to an
  index mask. Currently, this kind of code only runs on a single thread.
* Allow for efficient set operations like join, intersect and difference.
  It should be possible to multi-thread those operations.
* It should be possible to iterate over an `IndexMask` very efficiently.
  The most important part of that is to avoid all memory access when iterating
  over continuous ranges. For some core nodes (e.g. math nodes), we generate
  optimized code for the cases of irregular index masks and simple index ranges.

To achieve these goals, a few compromises had to made:
* Slicing of the mask (at specific indices) and random element access is
  `O(log #indices)` now, but with a low constant factor. It should be possible
  to split a mask into n approximately equally sized parts in `O(n)` though,
  making the time per split `O(1)`.
* Using range-based for loops does not work well when iterating over a nested
  data structure like the new `IndexMask`. Therefor, `foreach_*` functions with
  callbacks have to be used. To avoid extra code complexity at the call site,
  the `foreach_*` methods support multi-threading out of the box.

The new data structure splits an `IndexMask` into an arbitrary number of ordered
`IndexMaskSegment`. Each segment can contain at most `2^14 = 16384` indices. The
indices within a segment are stored as `int16_t`. Each segment has an additional
`int64_t` offset which allows storing arbitrary `int64_t` indices. This approach
has the main benefits that segments can be processed/constructed individually on
multiple threads without a serial bottleneck. Also it reduces the memory
requirements significantly.

For more details see comments in `BLI_index_mask.hh`.

I did a few tests to verify that the data structure generally improves
performance and does not cause regressions:
* Our field evaluation benchmarks take about as much as before. This is to be
  expected because we already made sure that e.g. add node evaluation is
  vectorized. The important thing here is to check that changes to the way we
  iterate over the indices still allows for auto-vectorization.
* Memory usage by a mask is about 1/4 of what it was before in the average case.
  That's mainly caused by the switch from `int64_t` to `int16_t` for indices.
  In the worst case, the memory requirements can be larger when there are many
  indices that are very far away. However, when they are far away from each other,
  that indicates that there aren't many indices in total. In common cases, memory
  usage can be way lower than 1/4 of before, because sub-ranges use static memory.
* For some more specific numbers I benchmarked `IndexMask::from_bools` in
  `index_mask_from_selection` on 10.000.000 elements at various probabilities for
  `true` at every index:
  ```
  Probability      Old        New
  0              4.6 ms     0.8 ms
  0.001          5.1 ms     1.3 ms
  0.2            8.4 ms     1.8 ms
  0.5           15.3 ms     3.0 ms
  0.8           20.1 ms     3.0 ms
  0.999         25.1 ms     1.7 ms
  1             13.5 ms     1.1 ms
  ```

Pull Request: #104629
buildbot/vdev-code-daily-coordinator Build done. Details
adb87dd080
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
41e49d7ece
Refactor: group multiple floats to `float2` or `float3`
Multiple random numbers were passed around separately, making some
argument lists unnecessarily long.
No functional changes expected.

Pull Request: #108236
buildbot/vdev-code-daily-coordinator Build done. Details
9cf77efaa0
UI: Updated Windows File Registration
Windows file associations using ProgID, needed because of the launcher.
This fixes "pin to taskbar" and Recent Documents lists, allow per-
version jump lists and an "Open with" list with multiple versions.

Pull Request: #107013
buildbot/vdev-code-daily-coordinator Build done. Details
0e8419246d
UI: Text cursor behavior for Apple Devices
MacOS-specific behavior for arrow keys, delete, and backspace. Alt/Opt
modifier to jump by word, CMD modifier to jump to beginning/end.

Pull Request: #107522
buildbot/vdev-code-daily-coordinator Build done. Details
f37f60937a
UI: Updated Windows File Registration Correction
Removal of thumbnail via regsvr32 requires /s argument to be silent
to not show any messageboxes during WIX uninstallation

Pull Request: #107013
buildbot/vdev-code-daily-coordinator Build done. Details
b567b249d4
Merge branch 'blender-v3.6-release'
2d3bb2787c Fix: Spreadsheet selection filter UI inactive in curves edit mode
Curves edit mode does select the selection filter feature.
d049e622bd Cleanup: Corrections in IndexMask comments
Also use "values" and "indices" instead of elements, since they're
more specific terms.
6bf3831b2c Fix: IndexMask slice and offset ignores offset
The mask was sliced, but the original mask was used from before the
slicing, causing an unsliced mask to be used with the new offsets.
This caused a crash in the hair styles demo file.
379a8b700b Cleanup: Simplify iteration in align euler to vector node
- Handle multithreading in caller, consistent with other multi-functions
- Simplify IndexMask iteration (avoid logarithmic lookup)
1b19f62917 Curves: Improve IndexMask usage in curves sculpt brushes
Unify the handling of masks for affected curves in a few of the sculpt
brushes. In the grow shrink brush, replace a more custom "influences
per thread" solution. In the puff brush, use a full array of weights,
and build the mask earlier. In the snake hook brush, use the selection
properly (I observed a 2-3x improvement with a small selection).
5063f7a725 Cleanup: Simplify IndexMask usage in two geometry nodes
Use the weird but at least consistent "from_groups" method in the sample
curves node, and avoid one logarithmic lookups when merging points.
4a7cfa18e2 Cleanup: Rename loose edge and loose vert variables in draw code
"ledge" and "lvert" sound very word, and "ledge" is also a word. It's
clearer to use the full word and abbeviate the obvious part, "index."
buildbot/vdev-code-daily-coordinator Build done. Details
23862ec60e
Cleanup: quiet RNA warnings from a trailing '.'
buildbot/vdev-code-daily-coordinator Build done. Details
6eebc06c36
Clenup: remove strcat use
buildbot/vdev-code-daily-coordinator Build done. Details
9182ebdfde
Cleanup: replace strcat with BLI_strncat
buildbot/vdev-code-daily-coordinator Build done. Details
21b2393eb2
Fix off by 1 error in BLI_uniquename* clipping an extra character
When the new name was clipped to make room for the number,
the string was clipped by the number size (including the null byte).

Store the length in `numlen` instead of the size (including null byte).
buildbot/vdev-code-daily-coordinator Build done. Details
0e7b81dd32
Metal: Fix MSL compilation warning
buildbot/vdev-code-daily-coordinator Build done. Details
f669f6cd8c
Fix #108243: Crash when save before close with modified image
A mistake in the recent API refactor for the buffer sharing.

Pull Request: #108259
buildbot/vdev-code-daily-coordinator Build done. Details
f5d159b2a4
Vulkan: Extract Vendor/Driver/Device Information
Extract vendor, driver and device information from the physical device
properties.

Note that driver version is implementation dependent and might fail as
it is unclear which driver is being used. An open source driver could
store the driver version in a different way than a closed source driver.
But as it is not clear which driver version is being used it might
extract the incorrect version.

To solve this issue we check if the extracted version makes sense
depending on the version schema of the driver and if they don't match we
use another approach.

Pull Request: #107872
5e2f73df30 Fix crash doing viewport animation render
A user-counter mistake caused by shallow-copy of the render result
during its duplication.

Pull Request: #108265
4758299d86 Cleanup: rename functions relating to MNEE light sample update
The original names were `...update_position()`, but no update in
position is performed in these functions, rather, the entries in
`LightSample` are updated. Also make clear that the functions are used
by MNEE.
buildbot/vdev-code-daily-coordinator Build done. Details
01595ee807
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
1c3e0f3585
Fix #108250: Cycles: Light Linking disabled after modifying object
The runtime backup/restore logic was slightly wrong: it is possible that
an object requires light linking runtime but does not need light linking
itself. This is typical configuration for the receivers/blockers.

Modified the logic so that the evaluated object light linking is allocated
if there was a runtime field needed.

This required to make it so light linking evaluation takes care of feeing
the light_linking if it is empty. The downside of this approach is a
redundant allocation from the object backup when removing light linking
collection from emitter. But this is not a typical evaluation flow, and
the more typical flows are cheap with this approach.

Pull Request: #108261
4d2ed350bc Fix #108240: Cycles fails on macOS and AMD GPU
The recent light linking commit changed some includes order,
making compilation to fail on platforms where certain features
are disabled.

Pull Request: #108264
buildbot/vdev-code-daily-coordinator Build done. Details
1c88721442
Fix: Crash entering vertex paint mode
SculptSession now contains non-trivial types that must be initialized.
buildbot/vdev-code-daily-coordinator Build done. Details
de2c8416a0
Fix #108258: Sculpt mode crash after remesh
4d841e1b35 incorrectly removed the clearing
of mesh topology maps when the object is reevaluated.
buildbot/vdev-code-daily-coordinator Build done. Details
a50768616f
Build: fix OpenBSD error in guardedalloc
Pull Request: #108252
986ff5a3a4 Cleanup: Remove IndexRange::as_span() static array and cache
After 2cfcb8b0b8 this was only used in one place that
was easily replaced. In practice this avoids creating a statically
allocated array after the split edges code is called.

Pull Request: #108249
buildbot/vdev-code-daily-coordinator Build done. Details
a31875dab6
Cleanup: Fix warnings in Overlay Next
2fce65ecfb RNA: improve compatibility of generated code with C++
The goal here is to get us closer to using C++ in RNA code.

Pull Request: #108277
393da5df78 Cleanup: Remove redundant object fetch in MNEE
The intersection already has proper object assigned.

Pull Request: #108275
buildbot/vdev-code-daily-coordinator Build done. Details
fc854fc252
Transform: remove precision modification upon starting navigation
In order to execute the navigation of type "VIEW3D_OT_move," the user
is required to press both the `Shift` and `MMB` keys.

However, pressing `Shift` also activates the precision modifier for the
transform.

Consequently, while the `MMB` is unpressed, the transform operation
unintentionally remains in precision mode, altering the mouse position.

To address this issue, the solution was to eliminate the precision
changes immediately after the navigation is initiated.

Unfortunately, we have no way of knowing whether the user actually
unintentionally enabled precision, so this solution serves as a
workaround. Ideally, keymap conflicts should be avoided.
0897be8bb7 EEVEE Next: Ensure correct material settings are used
Add Material::blend_flags to Shaderkey,
to ensure Materials with different settings but the same shader
don't end up using the same pass.

Pull Request: #108283
buildbot/vdev-code-daily-coordinator Build done. Details
55b20cef43
Workbench Next: Add missing texture usage flags
buildbot/vdev-code-daily-coordinator Build done. Details
c89461a2bc
Fix recent change in transform code
fc854fc252 caused the precision modification to be removed after
navigation was complete.

The ideal is when starting navigation.

This is because the precision button can be released during navigation,
thus confirming the precision change.
buildbot/vdev-code-daily-coordinator Build done. Details
c18cafe748
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
72309be398
Mesh: Avoid position copying in corrective smooth modifier
This is a place where copying mesh position is not needed. See #103789.

Pull Request: #108291
buildbot/vdev-code-daily-coordinator Build done. Details
e98c26dece
Audaspace: porting changes from upstream.
buildbot/vdev-code-daily-coordinator Build done. Details
99df159ce0
Fix #108098: GPencil: Prevent overwriting `mvalo`
There are other events besides `MOUSEMOVE` that's passed in during modal
handling, causes the `tgpi->mvalo` variable to be overwritten without
moving the stroke in the first place, this results in inaccurate offsets
during mouse/pen grabbing in primitive gizmo `IN_MOVE` mode. Now fixed.

Also fixed the operator hint to include the grab functionality.

Pull Request: #108172
buildbot/vdev-code-daily-coordinator Build done. Details
393d4a6e14
Cleanup: duplicate words in comments
Also use doxygen-comments in files where this is already the convention.
buildbot/vdev-code-daily-coordinator Build done. Details
cd09c91f69
Cleanup: deduplicate code to create menu for flip region
Ref !108302.
buildbot/vdev-code-daily-coordinator Build done. Details
ad6fa96041
BLF: use BLI_path_cmp when comparing path names
There is no reason to use case-sensitive path lookups on MS-Windows.

Also replace BLI_str_endswith with BLI_path_basename since ends-with
checks don't ensure a preceding path separator.
adef3a4556 Animation: Remove collection hotkeys from pose mode
We have been chatting in the Animation&Rigging module meeting that the collection hotkeys (1, 2, 3 etc.) in Pose Mode are unwanted and could be replaced with something more useful.
This patch only removes the hotkeys, we can later decide what should be in their place.

Pull Request: #105120
buildbot/vdev-code-daily-coordinator Build done. Details
dfb3e0d262
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
786c599404
Fix assert in light linking when making an asset
Simple steps to reproduce: mark the default cube as an asset.

Pull Request: #108306
c6aa0217ac Fix #108125: Cycles generates NaN in render passes with low roughness
Slightly increase threshold to avoid division by zero.
buildbot/vdev-code-daily-coordinator Build done. Details
5e971e8d7f
Fix hiding receiver disabling light/shadow linking
Turns out it is not enough to check for the receiver/blocker set,
as the object might be hidden. This should not change the light
behavior.

Pull Request: #108307
buildbot/vdev-code-daily-coordinator Build done. Details
d6db9e4193
Cycles: Store light name
Similar to objects, store the name of Blender's side light name
on the Cycles side. This allows to have readable logs where a
name and property is logged (while previously in the logs all
lights will be called lamp).

There is no user-measurable change.

Pull Request: #108310
buildbot/vdev-code-daily-coordinator Build done. Details
4ca39297ab
Fix specialized light tree building for distant lights
On a user level this fixes configuration when a spot light is
linked to an object, and a sun light is not linked to anything.
It used to be making non-linked receivers to be very noisy.

This is because the distant light did not update the node's
light linking settings when they are added to the node.

A simple demo file will be added to the tests suit as
light_link_distant_tree.blend.

Pull Request: #108311
buildbot/vdev-code-daily-coordinator Build done. Details
d36c329e16
Fix crash when selecting all bones in armature
Pressing 'A' to select all pose bones in an armature caused a segfault,
as `id->override_library->runtime->tag` was checked while
`id->override_library->runtime` was `nullptr`. An extra check resolved
the crash.
buildbot/vdev-code-daily-coordinator Build done. Details
0f3682a88a
Merge branch 'blender-v3.6-release'
4492fe3080 Cleanup: rename gpencil rna function to legacy
Renames `RNA_def_main_gpencil` to `RNA_def_main_gpencil_legacy`.
buildbot/vdev-code-daily-coordinator Build done. Details
074abff87e
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
cc25a37bee
Fix #108315: Illegal CUDA address with shadow-linked mesh emitters
A mistake in the intersection picking logic: if a mesh was hit at
least one intersection is to be recorded.

Pull Request: #108320
buildbot/vdev-code-daily-coordinator Build done. Details
82e8f1129c
Cleanup: Spelling in Cycles light tree
Pull Request: #108324
buildbot/vdev-code-daily-coordinator Build done. Details
9c15058d0b
Merge branch 'blender-v3.6-release'
0b0b6a687a Cleanup: Move offset size copying utility to generic header
This shows more clearly that there's nothing specific to curves here.
f63cfd8e28 Curves: Optmize and simplify point and curve deletion
Using the new index mask implementation, things can be a bit simpler.
It's also simpler to use `complement` instead of `to_ranges_invert`,
which just made everything less standard. Also create the new curve
offsets in place instead of copying, and use implicit sharing to share
attributes when no curves were deleted.

With a version of `IndexMask::complement()` optmized locally, I observed
the following speedups with a 1.2 million point curve system:
- Delete points: 29 FPS -> 45 FPS
- Delete curves: 48 FPS -> 49 FPS
- Delete tip points: 25 FPS -> 32 FPS

Also add a method to apply the "gather" function to all attributes,
mostly as a continued experiment of consolidating attribute propagation.
This can be used more elsewhere in the future.
d7e671028c Curves: Use simpler index mask logic in various places
In several nodes, and sculpt brushes, use the proper `IndexMask` type
instead of a span of ranges to encode a selection. This allows deleting
the duplicate data copying utilities using the second format.
865f14c641 Curves: Avoid inverting selection when deleting elements
Pass the curves and points to keep instead of delete. In the same test
file as the previous commit, this gave an increase from 50 to 60 FPS
when deleting curves.
buildbot/vdev-code-daily-coordinator Build done. Details
ea937b304d
Cleanup: Standardize delete geometry code
- Avoid using geometry sets from a different abstraction level
- Deduplicate basic attribute copying propagation code
- Allow more use of implicit sharing when data arrays are unchanged
- Optimize for when a point cloud delete selection is empty
- Handle face corners generically for "only face" case
6ba0346797 Python API: add bpy.context.property, for property under the mouse cursor
This can be useful for example to add custom operators to the property
context menu.

Pull Request: #107280
buildbot/vdev-code-daily-coordinator Build done. Details
93a2e5dbfa
Cleanup: Consolidate public point cloud/mesh conversion functions
Exposing these direct conversions separately just confuses
the API, and they're not used anywhere else anyway.
buildbot/vdev-code-daily-coordinator Build done. Details
07dbdd01e8
UI: Temporarily Disable Apple-specific Text Modifier Support
Disable recently-added support for some Apple-specific key modifiers
when  editing UI text. Only until we can add support for same for text
objects, console, and text editor. Keeping consistent between areas.

Pull Request: #108333
d044b9f80c Docs: Move --debug-freestyle to the correct place
It bothered me that in the Blender manual the `--debug-freestyle` was in the `Other Options` category.
Now it should appear correctly in `Debug Options`.
https://docs.blender.org/manual/en/3.6/advanced/command_line/arguments.html#other-options

Pull Request: #108179
buildbot/vdev-code-daily-coordinator Build done. Details
082766bfa4
Docs: Make Cycles Args visible in --help
The Cycles-specific command line arguments are currently hidden
on this page [1]. To make the command visible in the manual [2] and
in `blender --help`, I added this patch.

[1] https://docs.blender.org/manual/en/3.6/advanced/command_line/render.html#cycles
[2] https://docs.blender.org/manual/en/3.6/advanced/command_line/arguments.html#argument-order

If this gets merged, please merge blender/blender-manual#104455 as well.

Pull Request: #108232
buildbot/vdev-code-daily-coordinator Build done. Details
d133d622c1
Merge branch 'blender-v3.6-release'
a5fe656c84 Build: add WITH_CYCLES define for creator
Recently added cycles options weren't included in the help message.

Also quiet extra token warning.
f2e83f1ad1 Cleanup: avoid multiple newlines in --help printing
A minor change that makes text a little easier to follow for developers.
ffe12465c2 Cleanup: remove comment for O_DIRECT in animation playback loading
This flag isn't used, even going back to the initial commit.
8e9c105819 Cleanup: use BLI_str_endswith
The in-line ends-with check could read before the string began, as it
happens this wouldn't have caused problem (based on the memory layout),
nevertheless, out of bounds buffer access is best avoided.
buildbot/vdev-code-daily-coordinator Build done. Details
45bd9b58b9
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
9371349281
BLI_path: add BLI_path_is_win32_drive_only check
823685db76 Cleanup: consistent doxygen comment blocks
Also remove doxygen block for comments in a functions body.
buildbot/vdev-code-daily-coordinator Build done. Details
d9ffa2dfc4
Test: add string.StrCat test
buildbot/vdev-code-daily-coordinator Build done. Details
9ad7ad4323
Revert "Cleanup: consistenly use rnaindex -1 to mean the no or entire array"
This reverts commit 9a9209d8e0.

This commit caused an assert on factory startup,
needs further investigation.
buildbot/vdev-code-daily-coordinator Build done. Details
3a5ba15c79
PyAPI: add bpy.app.help_text() for accessing output from `--help`
Simplify help text extraction which may be used by the manual &
man-page generation.
buildbot/vdev-code-daily-coordinator Build done. Details
28b8ceea7c
ByAPI: add "all" argument to bpy.app.help_text, to show all help text
Optionally extract all help text, even for options not available
on the current platform or with the current build options.

Useful so it's possible to extract help text for the user-manual
which doesn't depend on the blender build used for extraction.
buildbot/vdev-code-daily-coordinator Build done. Details
61d99d450e
manpage: use bpy.app.help_text() for manual text extraction
Call Blender directly to generate the man-page,
instead of relying on the systems Python which called Blender twice and
processed it's output.
buildbot/vdev-code-daily-coordinator Build done. Details
8ed65fe6de
Cleanup: consistently use rnaindex -1 to mean the no or entire array
Re-apply [0] with the assert on startup resolved & doc-string updated.

[0]: 9ad7ad4323.
ba29fb9717 Fix building WITH_PYTHON=OFF
Missed when adding bpy.app.help_text()
buildbot/vdev-code-daily-coordinator Build done. Details
6e40c8d61b
Cleanup: quiet uninitialized warning for headless build
buildbot/vdev-code-daily-coordinator Build done. Details
4a0f2b576c
CMake: don't suppress stderr with manpage generation
Quiet ASAN leak reports so this isn't an issue.
buildbot/vdev-code-daily-coordinator Build done. Details
52015737c9
Fix #108316: CUDA error rendering Attic scene
The light tree dependent on the first threshold to evaluate to 1
when picking up an emitter.

Pull Request: #108323
buildbot/vdev-code-daily-coordinator Build done. Details
0a004fbad4
Metal: Improve GPU debugger support
This patch improves how debug groups are displayed
within captures. Passes are now split to align with
debug groups, such that navigation of captures is
more intuitive.

To closer represent useful information, debug groups are now
deferred to align with passes, with the addition of Macros to
control capture display options.

METAL_DEBUG_CAPTURE_MAX_NESTED_GROUPS limits debug
group nesting, and METAL_DEBUG_CAPTURE_HIDE_EMPTY allows
hiding of debug groups which do not contain any commands.

Authored by Apple: Michael Parkin-White

Pull Request: #108287
buildbot/vdev-code-daily-coordinator Build done. Details
e99a2fb61c
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
ab73a8abba
Help text: corrections & minor changes for the user manual
- BLENDER_STARTUP_FILE was included as a literal instead of expanding
  into 'startup.blend' as intended.
- Single quote cycles device (matching image formats).
- Include all GPU back-ends from bpy.app.help_text(all=True)
- Minor changes to simplify conversion to RST.
buildbot/vdev-code-daily-coordinator Build done. Details
db43b27227
Merge branch 'blender-v3.6-release'
d958a5dd24 Refactor: split file loading into its own function
Function naming made it seem main_args_setup might need to call
main_args_setup_post, when this was in fact only needed for handing
final arguments.

Call BLI_args_parse directly and expose main_args_handle_load_file
as a public function. Move handle_load_file into a separate function
which is called by --open-last.
buildbot/vdev-code-daily-coordinator Build done. Details
1f3a0fbad8
Command line argument --open-last exists if the file isn't found
Don't create a new empty file when --open-last is used.
buildbot/vdev-code-daily-coordinator Build done. Details
d6b9df2737
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
0542705218
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
30a25a42e6
Move versioning file 2.8 to C++
Changes:
1. `NULL` -> `nullptr`.
2. Cast `void *` to `T *` by using `static_cast`.
3. Using `LISTBASE_FOREACH` instead of manual for-loops.
4. `eNTreeDoVersionErrors` now is `enum class : int8_t`.
5. `eNTreeDoVersionErrors` declaration moved to global scope.
6. `ENUM_OPERATORS` for `eNTreeDoVersionErrors`.

See: #103343
Pull Request: #108100
buildbot/vdev-code-daily-coordinator Build done. Details
c3b58b5f67
Fix #108356: Group Console with App on Taskbar
Set App Id for the process so our console is grouped on the Task Bar.

Pull Request: #108397
buildbot/vdev-code-daily-coordinator Build done. Details
d28fe16693
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
65cc4cd774
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
99acfea0c4
Cleanup: avoid term 'str' or 'string' for string variables
Use: path, filepath or label instead.
3ba28a1961 Cleanup: rename wmWindowManager::initizlied to init_flag
This read like a boolean, also rename enum members to use a shared
`WM_INIT_FLAG_*` prefix.
buildbot/vdev-code-daily-coordinator Build done. Details
3e5a860a16
Merge branch 'blender-v3.6-release'
d7d1c524e3 Cleanup: pass the exit-code to WM_exit
Callers to WM_exit needed to set G.is_break for a predictable exit-code.
This is error prone as G.is_break may be set based on the user having
pressed escape during event handling.

Instead, pass the exit code as an argument.
buildbot/vdev-code-daily-coordinator Build done. Details
9a4fb83fdb
Merge branch 'blender-v3.6-release'
c803ddab29 Fix saving a quit.blend on exit when a file failed to load
When a file passed in from the command line failed to load,
blender would exit & save the quit.blend.

Resolve by adding a `do_user_exit_actions` to WM_exit_ex which is
false in backgrounds mode or when an error has occurred.
buildbot/vdev-code-daily-coordinator Build done. Details
c5e9ccba7a
Cleanup: minor adjustment to WM_exit_ex
Clarify the purpose of ED_editors_flush_edits and that file save
runs even when its return value is false.
buildbot/vdev-code-daily-coordinator Build done. Details
cb0c4f04d4
Fix material copy-buffer memory leak on exit
Commented [0] (2.5x refactor that disabled many free functions),
for some reason this call was never re-enabled.
Add back the free call along with other clipboard buffers.

[0]: a1c8543f2a
d979d535a6 WM: restore support for calling WM_exit with a NULL context
While currently the context is never null, a null context is meant
to be supported. Apply minor changes needed for this to work again.
buildbot/vdev-code-daily-coordinator Build done. Details
0a5d0c0ef6
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
1be9d9cb63
Externals: update fast_float to latest version (5.0.0) to fix some compile warnings
The library is used by OBJ/STL/PLY importers
buildbot/vdev-code-daily-coordinator Build done. Details
122c48aed0
Externals: update fmtlib to latest version (10.0.0)
The library is used by OBJ/PLY exporters, and asset_catalog_tree_view.
Performance of OBJ/PLY export seems to be the same. Blender executable
gets a tiny bit smaller (-5kb) on windows.
3aaacd6e30 GPencil 3.0: Initial commit
Adds the initial stage for the grease pencil 3.0 project.

This patch includes:
* New ID and new object type.
* New DNA structures.
* New drawing engine for grease pencil (gpencil-next).
* Tests for the new grease pencil data-type.
* A few operators for conversion, switching modes and (simple) drawing.

Exposed to the user:
* An experimental option to switch to the new grease pencil.
   * This will switch the grease pencil render engine to gpencil-next which can only render the new object type.
     Current grease pencil objects will no longer render.
   * Changing this option currently requires a restart of blender (for the keymap to update).
* A conversion setting in the `Object` > `Convert To` operator.
* A drawing operator in `Draw Mode`.

Pull Request: #106848
buildbot/vdev-code-daily-coordinator Build done. Details
d21f4efc8e
Cleanup: formatting
buildbot/vdev-code-daily-coordinator Build done. Details
5a44922937
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
14fdd92067
Merge branch 'blender-v3.6-release'
84cb112b4e Vulkan: Restart Index
This PR adds support for restart indices. Restart indices are for
example used during hair rendering where an index buffer contains
multiple hair strands. When in the index buffer a restart index is
added, a new line will start, instead of continuing extending the
previous line.

Pull Request: #108421
821b53942e Vulkan: Color Blend State for Multi Attachment Framebuffer
Current implementation of the Color Blend State worked for framebuffers
with a single attachment. This PR adds support for Color Blend State for
multiple attachments. It is assumed that the Blend State is the same for
all attachments.

NOTE: Integer based attachments aren't yet supported. In OpenGL it is
assumed that Integer based attachments aren't blended. It is currently
to early to tell if this is also the case for Vulkan. If this assumption
is incorrect we should use multi blend state.

Pull Request: #108419
589044a637 Vulkan: Detect AMD Vendor
This PR improves the vendor detection for AMD GPUs. Previously only
older AMD GPUs where detected (ATI). This PR adds support for newer
cards as well.

Pull Request: #108417
a08652b56c Vulkan: Area Readback of Framebuffer Textures
This PR adds the ability to only read back an area of a framebuffer
texture. It also adds the ability to read back from the depth
attachment.

Also reduces the amount of needed memory and reduces the CPU cycles
by reading back directly into the memory provided by the user. The
previous implementation wasn't able to do so as the `VKTexture::read`
function always returned a new buffer. The introduced
`VKTexture::read_sub` works on a pre-allocated buffer.

Pull Request: #108418
2cc0f94d68 Vulkan: Fix Out of Resources Crash
When a descriptor pool cannot allocate a descriptor set in stead
of resulting `VK_ERROR_OUT_OF_POOL_MEMORY` it is adviced that
drivers will return `VK_ERROR_FRAGMENTED_POOL`.

Before this PR the Vulkan Backend crashed as it only checked the
out of pool memory. According to the Vulkan specification it is
adviced to driver developers to report fragmented pool.

The crash happened as no new pool was allocated and no descriptor
set could be allocated anymore.

This change improved the reliability of the vulkan backend to be
able draw an animation in the 3d viewport for half an hour without
crashing. Before this change Blender would crash in a few seconds.

Pull Request: #108416
e0ad6f1fd8 Vulkan: Missing Compile Directives
MakesRNA uses WITH_VULKAN_BACKEND, but it wasn't included in the
CMakeLists.txt. Also added WITH_METAL_BACKEND. Metal is currently
included as a global compilation directive. We might want to sanitize
that according in a different patch.

This PR makes sure that Vulkan backend can be selected via the PythonAPI.
Note that the changes to user preference UI isn't added to this patch as
the Vulkan backend isn't usable to end users.

`bpy.context.preferences.system.gpu_backend = 'VULKAN' should now be
possible. After saving the user preference and restarting Blender it should
initialize the Vulkan backend.

Pull Request: #108414
3f89ec2866 Vulkan: Copy Between Textures
This PR adds support for copying between two textures.

Pull Request: #108413
b762f8da9c Modeling: Improve Suzanne's UV map
This fixes issues in Suzanne's UV map, making it more symmetrical and adding
the missing face on the ear.

Pull Request: #106652
buildbot/vdev-code-daily-coordinator Build done. Details
004ce8fc4e
Vulkan: Add Support For Texture Buffers
Texture buffers are vbos that can be sampled as textures inside shaders.
This adds support for them to the Vulkan Backend.

Pull Request: #108193
db98d9816c Fix #108342: Regression: Cycles: Light group does not work
A couple of mistakes since the light linking commit:

- The +1 got missed in some of the refactors in the branch
- The order of arguments to the shadow path split was wrong

Pull Request: #108420
buildbot/vdev-code-daily-coordinator Build done. Details
ec7c1a6e0a
Add light group tests category to Cycles
Pull Request: #108424
buildbot/vdev-code-daily-coordinator Build done. Details
d3d91b79e0
Fix error from recent refactor failing to save user data on exit
The check from [0] flipped background mode check.

[0]: c803ddab29
960b53dbbb EEVEE Next: Image rendering and render passes fixes/improvements
* Fix image rendering.
* Fix AOV rendering.
* Merge all render passes and AOV textures into 2 arrays (one for colors and one for values).
* Make AOVsInfoData std140 compliant.
* Remove surface color from Diffuse Light and Specular Light passes.
* Add Environment pass support.
* Add Shadow pass support.

Pull Request: #108239
buildbot/vdev-code-daily-coordinator Build done. Details
51d10f4400
Fix #108161: Transform affected by off constraints
A missing `CONSTRAINT_OFF` check in `transform_convert.c` causes the
inverse matrix of that constraint to be added on top of the translation,
causing weird translation response in the viewport. Now fixed.

Pull Request: #108217
buildbot/vdev-code-daily-coordinator Build done. Details
644dd14e26
Fix: Compilation error after 960b53dbbb
5c25277f6c Fix #108374: Sun light linking issue on direct sampling
This is a continuation of a fix from the last week in #108311.
The issue was not fully fixed due to a mistake in the regression
test file.

There are two major things which left to be fixed since the
previous patch:

1. Root nodes can not be shared, even if the local and distant
lights belong to the same light set. If the root node is shared
then the flattening will use the same node index for specialized
trees, which is not a desired behavior.

2. The node type needs to be preserved when a new node is
created for a subset of emitters. This is because tree sampling
in kernel will handle distant and local lights differently for
nodes where there are multiple emitters.

Pull Request: #108427
buildbot/vdev-code-daily-coordinator Build done. Details
de10126b1f
Fix: Build Warning of Unused Variable
Removing unused variable in GHOST_SystemWin32.cc

Own code, introduced in #108397
buildbot/vdev-code-daily-coordinator Build done. Details
2d91ebe780
Merge branch 'blender-v3.6-release'
9b946aeecb Fix #108363: Light linking does not work when linked to self
The code which was preventing this originated to an early days of the
light linking project where bits accumulation was done as part of the
graph evaluation. Since then it was changed to be pre-calculated at
the graph build time.

The updates of the receivers is ensured via the HIERARCHY nodes and
relations between them.

Also made it explicit that the emitter is updated with the tag of
the collection: before it was relying on implicit Copy-on-Write
component tag.

Pull Request: #108425
37f6af9e2c Cleanup: Remove unnecessary assert
With `bool` as a proper type in C++, this is unnecessary.
buildbot/vdev-code-daily-coordinator Build done. Details
fbd2bd8154
Particles: remove Halo, Line and Path render options
For emitter particle systems, these were never rendered anyways, Path is
kept for hair systems of course.

As a consequence, the new default for particle systems is:
- render as None (users have to explicitly set this to object/
collection)
- display as point

When changing to Hair type, this automatically gets set back to
- render as Path
- display as Render

Changing back to emitter, will use points as display again (and render
as None -- same here, users have to explicitly set this to object/
collection)

Not sure if this is still for 3.6, patch is for 4.0 for now.

"Fixes" #80197

Pull Request: #108231
buildbot/vdev-code-daily-coordinator Build done. Details
0fb3dbba20
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
23afc6161c
IO: remove OBJ and PLY Python add-ons (#104503, #104504)
With C++ based built-in implementations having both more features
and way better performance, it's time to retire the add-ons. Implements
#104503 and #104504.

Pull Request: #108440
243f20ec10 Revert "Particles: remove Halo, Line and Path render options"
broke tests, will check again tomorrow

This reverts commit fbd2bd8154.
buildbot/vdev-code-daily-coordinator Build done. Details
e64b3c8212
Refactor: Remove pre-2.8 function to reevaluate a single object
This function replaced the evaluated mesh with a new one with the given
custom data type mask. That doesn't work in general anymore for a few
reasons: the increased dependence on named attributes (a opposed to
custom data types), and the "all or nothing" approach to reevaluating
the depsgraph. Other objects might depend on the object's evaluated
geometry, so it shouldn't just be replaced. Pushed a bit further, this could
give nice simplifications to mesh modifier evaluation.

There are two breaking changes, `bmesh_from_object` and BVH tree
`FromObject` require the source object to have a proper evaluated
mesh now.

If this causes a regression, it's likely that the object is missing
an update tag when a mode is entered that requires extra evaluated data.

Pull Request: #106186
buildbot/vdev-code-daily-coordinator Build done. Details
66d20c8723
Cleanup: Simplofy use of modifier eval context flags
buildbot/vdev-code-daily-coordinator Build done. Details
286edd6b2a
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
aa679b3e35
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
3f253af0fb
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
bd23eb4742
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
4408fea092
Cleanup: use EXIT_SUCCESS/FAILURE from calls to exit()
buildbot/vdev-code-daily-coordinator Build done. Details
bdc79caf0e
Cleanup: use EXIT_SUCCESS/FAILURE from calls to exit()
Missed from 4408fea092.
buildbot/vdev-code-daily-coordinator Build done. Details
86b54a3015
Merge branch 'blender-v3.6-release'
e2cb52594a code_clean: add 'remove_struct_qualifier' edit
Removes struct qualifier when it's not needed.
buildbot/vdev-code-daily-coordinator Build done. Details
f80e2c9f93
Cleanup: remove redundant struct qualifiers in 'uvedit'
623a40b9d0 UV: move editor files to C++
For the most part this simply resolves build warnings for C++
although BLI_array.h has been replace by blender::Vector.
buildbot/vdev-code-daily-coordinator Build done. Details
397663a7cb
Fix #107956: Simulation reset on fps change
Resets simulation cache when frame rate changes, so we don't get
inconsistent accumulations when frame rate is changed in the middle of
the simulation.

Pull Request: #108004
buildbot/vdev-code-daily-coordinator Build done. Details
37e8147da0
Cleanup: clang-tidy files in uvedit
buildbot/vdev-code-daily-coordinator Build done. Details
eae0a24afb
Merge branch 'blender-v3.6-release'
1706ce032f Fix #108456: Missed declaration function in Shortest Edge Paths node
2ffd08e952 introduced new system to control attribute life time.
Some specific function for that system is missed in `Shortest Edge Paths`.
This pull request add this functions:
1. `reference_pass_all` for socket declarations.
2. `for_each_field_input_recursive` for field input nodes.

Pull Request: #108460
buildbot/vdev-code-daily-coordinator Build done. Details
fdc3ed798d
Geometry Nodes: Add Corners of Edge node
Adds the "Corners of Edge" topology node to geometry nodes.
Combining this node with the "Face of Corner" node allows getting
informations about the faces connected to an edge. The behavior is
slightly non-obvious-- the node only gives the corner neighbors
that come *before* the current edge in directly neighboring faces.
This allows the operation to be easily reversed and reduces
redundancy between nodes.

See the devtalk thread: https://devtalk.blender.org/t/29379

Pull Request: #107968
buildbot/vdev-code-daily-coordinator Build done. Details
5251f9d877
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
c1bc70b711
Cleanup: Add a copyright notice to files and use SPDX format
A lot of files were missing copyright field in the header and
the Blender Foundation contributed to them in a sense of bug
fixing and general maintenance.

This change makes it explicit that those files are at least
partially copyrighted by the Blender Foundation.

Note that this does not make it so the Blender Foundation is
the only holder of the copyright in those files, and developers
who do not have a signed contract with the foundation still
hold the copyright as well.

Another aspect of this change is using SPDX format for the
header. We already used it for the license specification,
and now we state it for the copyright as well, following the
FAQ:

    https://reuse.software/faq/
eb9209c1f5 Cleanup: Deprecation warning in the FFmpeg
Since avuitl 57.30.100 the pkt_duration is deprecated, and
the duration is to be used instead.

The units seems to match, and also from the avcodec decoder.c
the `frame->pkt_duration = frame->duration;` so does not seem
we need to do any conversion.

The change in FFmpeg is from 2022, which is a bit recent, so
the access to the duration is hidden behind a compatibility
API.

Pull Request: #108451
buildbot/vdev-code-daily-coordinator Build done. Details
83ffc108e4
Merge branch 'blender-v3.6-release'
ad50eedb16 Cleanup: Remove unused argument in recursive function
Was just passing this to its own recursive call.
49b48209e7 BLI: Improve IndexMask::complement() performance
IndexMask::complement() is often used in geometry processing
algorithms when a selection needs to be inverted, mostly just in
curves code so far.

Instead of reusing `from_predicate` and lookup in the source mask,
scan the mask once, inserting segments between the original indices.

Theoretically this improves the performance from O(N*log(N)) to O(N).
But with the small constant offset of the former, the improvement is
generally just 3-4 times faster. However in some cases like empty
and full masks, the new code takes constant time.

![image](/attachments/d2f6b0be-f195-4206-9bf4-c0ab20041d1b)

Pull Request: #108331
buildbot/vdev-code-daily-coordinator Build done. Details
06be652055
Cleanup: Clang-format
buildbot/vdev-code-daily-coordinator Build done. Details
e18325b2b9
GPencil: Fix memory leak when creating layers
Use `MEM_new` and `MEM_delete` to allocate and free the memory.
buildbot/vdev-code-daily-coordinator Build done. Details
b14cdb440a
GPv3: Add operator to create new grease pencil object
This adds the operator `OBJECT_OT_grease_pencil_add` to create a new grease pencil object.

Currently it supports the `EMPTY` and `STROKE` type.
This also replaces the add menu for the legacy grease pencil type in the Shift+A menu when the experimental option is enabled.

Pull Request: #108462
buildbot/vdev-code-daily-coordinator Build done. Details
f63c3075cb
Outliner: Port mesh elements to new tree-element code design
No user visible changes expected.

Part of #96713, continuation of work started in 249e4df110 and 2e221de4ce.
Refer to these for a motivation and design overview.

Adds a new tree-element class for mesh IDs.

Pull Request: #108437
buildbot/vdev-code-daily-coordinator Build done. Details
a63c0a8fca
Fix: Crash in 2.8 versioning after recent cleanup
Fix a mistake in 30a25a42e6.

Pull Request: #108476
buildbot/vdev-code-daily-coordinator Build done. Details
69ae7500d0
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
63f2114759
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
532560eba3
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
d3e5c1bfa6
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
f957fd227e
Fix: Avoid windows.h min/max macro definition in BLI_winstuff.h
When moving io_allembic to c++, the compiler would throw the error
`type "unknown-type" unexpected`.

Pull Request: #108471
buildbot/vdev-code-daily-coordinator Build done. Details
8374208a57
Outliner: Port curve elements to new tree-element code design
No user visible changes expected.

Part of #96713, continuation of work started in 249e4df110 and 2e221de4ce.
Refer to these for a motivation and design overview.

Adds a new tree-element class for curve IDs.

Pull Request: #108498
buildbot/vdev-code-daily-coordinator Build done. Details
c5694fdf10
Cleanup: Use unique_ptr, references for UV aabb islands
Using unique_ptr is typically the better practice since it makes memory
management automatic and makes ownership clear. Also use references
when retrieving items from the span, and don't unnecessarily specify
specific lambda captures.

Pull Request: #108510
50bfe1dfe3 Geometry Nodes: Rewrite mesh delete geometry node
Replace the implementation of the separate and delete geometry nodes
for meshes. The new code makes more use of the `IndexMask` class, which
was recently optimized. The main goal is to make more of the work scale
with the size of the result mesh rather than the input. For example,
instead of keeping a map from input to output elements, the maps used
to copy attributes go from output to input elements.

The new implementation is generally 2-4x faster, depending on the mode
and the number of elements selected. The new code is also able to skip
more work when nothing is removed.

This also allows using more existing attribute interpolation code,
allowing the overall removal of over 300 lines. Some of the attribute
utilities from a similar change for curves (f63cfd8e28) are
reused directly.

The indices of the result changes, so the test file needs to be updated.

Pull Request: #108435
98d48c16a3 Paint: Add loop select for faces
Add loop selection identical to the behavior of ALT+Click in Edit Mode.

* ALT click: select loop
* ALT Shift click: add loop while retaining current selection
* ALT Shift Ctrl click: deselect loop

Pull Request: #107653
buildbot/vdev-code-daily-coordinator Build done. Details
355f4164b6
Fix: action's actual users and recorded user count could diverge
The user count decrement and unassigning the action were split
between two different conditionals, which weren't guaranteed
to both execute/not-execute together.
9e9e0bf6d0 Geometry Nodes: Copy no loose vert/edge status in delete geometry node
When the loose edge and vertex status are cached in the source mesh and
the combination of selection domain and mode don't add loose elements,
copy the cache status to avoid recomputation. In a test with a 1 million
face grid:
- All: 23 -> 30 FPS
- Only faces: 22 -> 23.5 FPS
- Only edges and faces: 24 -> 27 FPS

Also remove unnecessary includes and fix a build error introduced in
the last commit to this area from an inconsistent forward declaration.
buildbot/vdev-code-daily-coordinator Build done. Details
c08282f468
Fix invalid UI panel bit-flag value
These bit-flags were passed around in `short`s which can hold 16 bits
usually, but the enum defined 17 flags.
buildbot/vdev-code-daily-coordinator Build done. Details
95f1d8289c
GPv3: "Add Suzanne" option in Add operator
This patch moves the "Add Suzanne" option to the new data structure.

Pull Request: #108503
b95cf5ff0f Animation: Update NLA "TAB" tweak mode to be full stack evaluation
This PR updates the key mapping (TAB) for Tweak mode (Lower stack) to Full stack for the NLA editor

[Issue](#108026)

Pull Request: #108050
612f6fd8d3 Add credit for static data
Credit the author of the default grease pencil Suzanne.
82d3bf01d4 Deps_builder: Fix USD debug build on windows
Two issues there

- it was picking up release mode libs for oiio/tbb
- TBB had both debug and release libs in a variable that should only
have a single library causing a cmake error.
b1b8091667 Fix 106976: Crash when setting custom asset preview
When the temporary File Browser uses a maximized editor, it reuses the
File/Asset Browser under the cursor. When the file browsing action is
confirmed, the old editor state is restored but the file-list cleared,
so it fails to find the active asset and the ID it represents in
context.

Work around this by getting the ID before spawning the File Browser from
the operator.
buildbot/vdev-code-daily-coordinator Build done. Details
a58e5ccdec
UI: File Save Incremental Operator
Operator for the TopBar File Menu that saves the currently open file
with a numerically incremented name.

Pull Request: #104678
buildbot/vdev-code-daily-coordinator Build done. Details
83047bed26
Correction to b1b8091667: Use utility function
Avoid duplicated query.
buildbot/vdev-code-daily-coordinator Build done. Details
7372b3bdda
Fix Build Warning of Unused Function
My prior commit omitted the assignment of an operator callback setting
a custom description.

Introduced in #104678
buildbot/vdev-code-daily-coordinator Build done. Details
5177e2f20b
Fix #108495: Pasting a material crashes
References to data-blocks in a material were stored in-memory and could
crash if the data-blocks referenced by the material no longer existed
when pasting.

Resolve by using a blend-file for material copy/paste, matching how the
clipboard works in the 3D view-port.

Currently there is no support for including indirectly linked
data-blocks when pasting the material. Instead, data-blocks are restored
by name, by inspecting the current file.

This also fixes a crash where the `SpaceNode::nodetree` could point to
freed memory when pasting a material.

Ref !108496.

Includes contributions by @mont29.
118a47b7f6 Cleanup: quiet warnings
Resolve undeclared function & dangling reference warning.
buildbot/vdev-code-daily-coordinator Build done. Details
c2846f6b81
Transform: Remove 'Resize' fallback from 'Shrink/Fatten'
There are no relevant functional changes.

This commit removes the `Resize` fallback from `Shrink/Fatten`
operation.

This fallback is supposedly executed when the operation is called in a
mode other than mesh editing.

But even the `poll` of the `transform.shrink_fatten` operator restricts
its operation only for edit mode.

Furthermore, the fallback scenario is hardly encountered. To trigger
the fallback, the user would need to explicitly define, in the global
keymap, the `transform.transform` operator with the `Shrink/Fatten`
mode on and call it in a mode other than mesh editing.
(Although `transform.resize` could be used instead).

Therefore, considering the lack of benefits in using this resource, it
is better to remove it and prevent its use. Thus, simplifying the code.
buildbot/vdev-code-daily-coordinator Build done. Details
58a08f9ea1
Cleanup: use local utility functions for clipboard file-paths
Also rename pose paste `tmp_bmain` to match the name used in copying.
64aa96d421 Fix failure to paste material color alpha & paste line-art
Error in [0] excluded these members from pasting.

[0]: 5177e2f20b
a83a0a811f Transform: Remove internal mode 'TFM_TIME_DUPLICATE'
No functional changes.

`TFM_TIME_DUPLICATE` is basically the `TIME_TRANSLATE` or `TRANSLATE`
modes.

The difference is that `TFM_TIME_DUPLICATE` merge duplicates keyframes
at the end of the operation.

It is an unexposed mode in python and promotes code duplication.

It has a similar initialization to `TIME_EXTEND` which redirects to
`TIME_TRANSLATE` or `TRANSLATE` depending on the spacetype.

As it is dependent on other modes (as well as `TIME_EXTEND`), it makes
things a bit more confusing.

There's no real benefit to creating a new internal mode just to
indicate this small change (merge duplicates).

So indicate in another way (by properties) that you want to merge
duplicate keyframes.
buildbot/vdev-code-daily-coordinator Build done. Details
553e221c76
PlayAnim: display that a buffer fails to load instead of exiting
Failure to load an image-buffer during animation playback would exit,
display a text warning instead because it could potentially
exit during user interaction/playback.
buildbot/vdev-code-daily-coordinator Build done. Details
240a1edfa1
UI: add text editor zoom in/out to view menu
Ref !108430.
buildbot/vdev-code-daily-coordinator Build done. Details
a4249588cd
Vulkan: Debug Messages
This change will register a callback to Vulkan debug messaging
allowing us to filter out messages and log them using CLog.

This change only provides the initial changes, and more tweaks
are expected to on formatting and filtering.

Pull Request: #107635
buildbot/vdev-code-daily-coordinator Build done. Details
30de07199a
Vulkan: Some tweaks to the messenger
- Removal of Vulkan version number
- Removal of object counts
- Put objects next under the message

Pull Request: #108531
e73b9c95f5 Refactor: Bidirectionality on Graph Editor Sliders
This PR changes the ranges of some of the operators in the Graph Editor to be more logical

The following operators have been modified to with a range of -1/1 with the default of 0
*  Blend to Neighbor
* Breakdown
* Ease

This is a breaking change because python calls to these operators will now yield different results
(e.g. Blend To Neighbor at 0 does nothing now, while before it did blend to the left neighbor)

Pull Request: #107173
buildbot/vdev-code-daily-coordinator Build done. Details
2d0bd33eda
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
457f423719
Fix #108537: Incorrect early return in delete geometry node
Fix after 50bfe1dfe3. Early return can be for unchanged
all geometry domains only.

Pull Request: #108540
buildbot/vdev-code-daily-coordinator Build done. Details
c4a4a89ef5
Transform: refactor modes by reorganizing their data in 'TransModeInfo'
No functional changes.

This commit reorganizes the transform mode functions by bundling them
into a struct called `TransModeInfo` in the file.

This structural change enhances the readability of the transform code
and simplifies the process of adding or removing modes.

Furthermore, this refactor allows for the inclusion of other essential
mode-specific values, such as 'input', which cannot be separated from
the code.

Overall, this commit improves the maintainability and extensibility of
the transform functionality.

Pull Request: #108467
32982dda26 GPv3: Add initial edit mode overlay support
This PR adds basic overlay support for `OB_GREASE_PENCIL`.
Currently it only renders the points and their selection status based on the ".selection" attribute.

Pull Request: #108511
buildbot/vdev-code-daily-coordinator Build done. Details
d4068e375f
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
c8bd998944
Vulkan: Fix Debug Messenging
In the specification of validation layers it is mentioned that
the messenger should always return VK_FALSE. When this isn't the
case VK_ERROR_VALIDATION_FAILED_EXT will be returned and the
API command will fail.

This PR will always return false.

Pull Request: #108545
buildbot/vdev-code-daily-coordinator Build done. Details
97d9bbbc97
Cycles: more efficient and better-behaved sampling of spherical triangles
uses less inverse trigonometric functions and normalizations.
Also `q` is now guaranteed to be smaller than or equal to 1.

Pull Request: #108380
buildbot/vdev-code-daily-coordinator Build done. Details
c033e434c5
UI: Allow Opacity for Theme Outline Colors
Allow setting opacity with color for uiWidgetColors outline and for
tab_outline.

Pull Request: #108248
buildbot/vdev-code-daily-coordinator Build done. Details
6d215b87ce
VSE: Freeze frame feature for retiming tool
Freeze frames can be added now using retiming tool with no need to hold
splitting strips or using hold offsets. To use this feature, add
retiming handle where you want to freeze the frame, hold ctrl key and
drag the handle. It is not possible to freeze frame of transition handle
and it is not possible to add transition to or from freeze frame.
Retiming system would handle these cases, but they are not useful in
practice.

When freeze frame is created, start handle of frozen segment is flagged
as `FREEZE_FRAME`. Most handling is similar to `SPEED_TRANSITION`
type handle. For evaluation, there is no special case for this type, as
it's just 2 handles with same `retiming_factor` value. It is possible to
recreate this behavior without using freeze frame feature by adding
handle between 2 consecutive content frames, but this would not be
recognized by UI or treated as freeze frame segment/handle.

Eventually this feature should replace hold offsets, leaving `Sequence`
struct with single offset type, see PR 105620 for reference.
buildbot/vdev-code-daily-coordinator Build done. Details
4fad870c4d
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
4a81c417c1
Cleanup: Fix build warnings
buildbot/vdev-code-daily-coordinator Build done. Details
c1edeb573b
Fix unused function after c4a4a89ef5
`applyTrackballMatrix` was unused after c4a4a89ef5.

Trackball supports `transform_matrix_fn` although currently not being
used.

This callback is used in the drawing of gizmos.
buildbot/vdev-code-daily-coordinator Build done. Details
05d3eb5eea
Geometry Nodes: Parallelelize a delete geometry selection conversion
Parallelize the conversion of an edge selection to a vertex selection,
which makes it approximately twice as fast (0.6 ms -> 0.3 ms).
In another test the whole node operation became about 17% faster,
from 6.9 to 5.9ms. This only applies to the "All" mode with the
edge selection domain.

Similar to 3d209d1619

Pull Request: #108541
buildbot/vdev-code-daily-coordinator Build done. Details
74dd0ed09e
Cleanup: remove redundant struct qualifiers
buildbot/vdev-code-daily-coordinator Build done. Details
0c0cd10e55
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
3010f1233b
Transform: new feature to edit the 'Snap Base'
This commit implements a new modifier key (`B`) for the transform
operators.

This new key allows changing the 'Snap Base' of a transform by snapping
it to a defined point in the scene.

Ref #66424

# Implementation Details

- This feature is only available in the 3D View.
- This feature is only available for the transform modes:
  - `Move`,
  - `Rotate`,
  - `Scale`,
  - `Vert Slide` and
  - `Edge Slide`.
- The `Snap Base Edit` is enabled while we are transforming and we
  press the key `B`
- The `Snap Base Edit` is confirmed when we press any of the keys:
 `B`, `LMB`, `Enter`
- During um operation, if no snap target is set for an element in the
  scene (Vertex, Edge...), the snap targets to geometry Vertex, Edge,
  Face, Center of Edge and Perpendicular of Edge are set automatically.
- Constraint or similar modal features are not available during the
  `Snap Base Edit` mode.
- Text input is not available during the `Snap Base Edit` mode.
- A prone snap base point is indicated with an small cursor drawing.

Pull Request: #104443
buildbot/vdev-code-daily-coordinator Build done. Details
1e81d35138
Node Editor: Don't change size of resize area for frame nodes with zoom
Change the active area along the perimeter of frame nodes to have a more
consistent width independently of the zoom level so frame nodes can more
easily be grabbed and resized when zoomed out.

Pull Request: #108359
buildbot/vdev-code-daily-coordinator Build done. Details
a4043286d9
Fix compilation error on Linux
```
error: conflicting types for ‘transform_mode_snap_source_init’;
have ‘void(TransInfo *, struct wmOperator *)
```
buildbot/vdev-code-daily-coordinator Build done. Details
ab6860f3de
Geometry Nodes: Improve delete geometry performance with vertex groups
In the "All" mode, handle vertex group data separately from other
attributes, which allows copying all vertex groups at once. In a file
with 172 vertex groups, the node became about 12 times faster, from
25.8 to 2.2 ms. With fewer vertex groups the change will be smaller.

Theoretically a similar optimization would work elsewhere, but ideally
we would have a more generalized concept of sparsely stored attributes
first. In the meantime this is a simple way to improve some common
rigging use cases.
buildbot/vdev-code-daily-coordinator Build done. Details
68256a1da7
Cleanup: remove unused argument
e82ca9b5ff Cleanup: rename ParticleSettings.child_nbr to child_percent
The old name was only kept to avoid breaking compatibility.
buildbot/vdev-code-daily-coordinator Build done. Details
85e5d3325c
Cleanup: replace 'sz' abbreviation with 'size'
buildbot/vdev-code-daily-coordinator Build done. Details
3a81a93ecf
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
f4708831ea
Fix Principled Hair Absorption Coefficient when using OSL
The additional SocktType::VECTOR argument was being interpreted as flags,
which caused the OSL compiler to skip the input (since the Vector type enum
happens to align with the INTERNAL flag), which caused the OSL shader to
always use the hardcoded default absorption regardless of what was entered.
buildbot/vdev-code-daily-coordinator Build done. Details
888bdc1419
Cycles: Remove MultiGGX code, replace with albedo scaling
While the multiscattering GGX code is cool and solves the darkening problem at higher roughnesses, it's also currently buggy, hard to maintain and often impractical to use due to the higher noise and render time.

In practice, though, having the exact correct directional distribution is not that important as long as the overall albedo is correct and we a) don't get the darkening effect and b) do get the saturation effect at higher roughnesses.

This can simply be achieved by adding a second lobe (https://blog.selfshadow.com/publications/s2017-shading-course/imageworks/s2017_pbs_imageworks_slides_v2.pdf) or scaling the single-scattering GGX lobe (https://blog.selfshadow.com/publications/turquin/ms_comp_final.pdf). Both approaches require the same precomputation and produce outputs of comparable quality, so I went for the simple albedo scaling since it's easier to implement and more efficient.

Overall, the results are pretty good: All scenarios that I tested (Glossy BSDF, Glass BSDF, Principled BSDF with metallic or transmissive = 1) pass the white furnace test (a material with pure-white color in front of a pure-white background should be indistinguishable from the background if it preserves energy), and the overall albedo for non-white materials matches that produced by the real multi-scattering code (with the expected saturation increase as the roughness increases).

In order to produce the precomputed tables, the PR also includes a utility that computes them. This is not built by default, since there's no reason for a user to run it (it only makes sense for documentation/reproducibility purposes and when making changes to the microfacet models).

Pull Request: #107958
87ff8ee09a Cleanup: disambiguate the term 'path'
Use filepath or dirpath, unless the contents might be either,
in that case note that the contents could be both.
Use `rna_path*` in some cases too.
buildbot/vdev-code-daily-coordinator Build done. Details
efa4179982
PyAPI: rename filename to filepath for RNA API functions
- Depsgraph.debug_relations_graphviz
- Depsgraph.debug_stats_gnuplot
- RenderLayer.load_from_file
- RenderResult.load_from_file
- bpy.app.icons.new_triangles_from_file
7d56c8fe1d BLI_string: add BLI_strchr_or_end
Returning the pointer to the null byte when the character isn't found
is useful when handling null terminated strings that contain newlines.

This means the return value is never null and the line span always ends
at the resulting value.
aada2800fd Cleanup: use BLI_strchr_or_end to simplify new-line stepping
- DRW_draw_region_engine_info:

  - Remove duplicate line drawing for the last line.
  - Remove string copying, pass the length to BLF_draw_default instead.
  - Resolve a potential buffer overflow as the source string length was
    used to define the destinations maximum size.

- CONSOLE_OT_paste:

  - Remove the need to null-terminate each line.
  - Buffer stepping uses const values
  - console_line_insert no longer strips the string it inserts.

- CONSOLE_OT_insert:

  - New lines in the middle of text now reports an error,
    new lines at the end of text is stripped (as before).
buildbot/vdev-code-daily-coordinator Build done. Details
6a1aead6d1
Metal: Silence Console Output
This PR silences console output during statup phase of blender. During
startup logging isn't yet initialized and print statements where used.
Logging is initialized during the first construction of a Metal Context.

The console prints are now hidden by behind the '--debug-gpu' command
line option.

Pull Request: #108593
buildbot/vdev-code-daily-coordinator Build done. Details
0e20e2320b
Fix compiler error on Metal
buildbot/vdev-code-daily-coordinator Build done. Details
8eb75deb46
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
cdd4beeb5e
Cleanup: Use C++ functor for button pushed query callback
C-style callbacks often rely on `void` pointer arguments that are unsafe
because of the removed type. C++ functors allow passing arbitrary data
along the callback, plus convenient features like defining the callback
using a lambda.

Didn't port the `typedef` because it doesn't add much in this case, just
hides the type from the reader who has to look it up first.

Note that this function isn't used in the main branch currently.
buildbot/vdev-code-daily-coordinator Build done. Details
ebb5643e59
Readfile: Refactor several parts of the process
This commit affects:
* Reading undo steps from memfile (aka 'Global Undo');
* Handling of UI IDs (WindowManager, Workspaces and Screens) when
  opening a .blend file.

While no major changes are expected from a user PoV, there may be some
unexpected changes in rare edge-cases. None has been identified so far.

Undo step loading should be marginally faster (`setup_app_data` itself
is 2-3 times faster, as it does not do remapping anymore, which makes the
whole 'read undo step' process about 20% faster - but the most
time-consuming step on undo is the depsgraph processing, which remains
unchanged here).

This commit also solves some bugs (crashes) in some relatively uncommon
cases, like e.g. if the WM had an IDProperty pointing at an object and
UI is not loaded when opening a new .blend file with the 'Load UI' option
enabled (as in previous code on file opening WM ID would never be
remapped).

From a more technical side, this commit aims mainly at cleaning things
up, in preparation for the introduction of new 'no undo, no readfile'
type of handling (as part of the Brush Assets project):
  - Prevent WM code from doing (too much) horrible ID 'management' on
    its WM when opening a new file. It used to remove current WM from
    the Main database, store it in a temporary own list, and then free
    it itself...
  - Trying to make the complex logic behind WM handling on file reading a
    bit more easy to follow, at least way more documented in code.
  - Keep the handling of 'IDs being re-used from old Main' in a single
    place, as much as possible:
    -- Readfile code itself in undo case (because it's more efficient,
       and undo case is in a way simpler than actual .blend file
       reading case). The whole `blo_lib_link_restore` block of code
       is also removed.
    -- (Mostly) setup_app_data code in actual file reading case.
  - Sanitize the usage of the 'libmap' in readfile code in undo case
    (waaaaay too many pointers were added there, which was hiding some
     other issues in the related code, and potentially causing (in
     rare cases) memory addresses collisions.

Pull Request: #108016
d54fe40807 Cleanup: EEVEE: Simplify computation in #ltc_evaluate_disk_simple
The existing code was copied from the ellipse light case. But
this computation simplifies for the disk case, removing the
need of `inversesqrt`.

Pull Request: #108616
buildbot/vdev-code-daily-coordinator Build done. Details
c18ee2e84d
Fix compile error on MSVC
Caused by cdd4beeb5e.
buildbot/vdev-code-daily-coordinator Build done. Details
5ea2c80e7f
Fix #108574: Error when trying to move a keyframe
Error due to a typo in c4a4a89ef5

_translate > _timetranslate
buildbot/vdev-code-daily-coordinator Build done. Details
e7cc266c92
EEVEE-Next: Fix shader buildtime validation
The `eevee_render_pass_out` needs to be added
at runtime only because test shaders do not
define the `node_tree` UBO.
8d0b10bbc7 Fix: GP brush stroke operator name and description
These were still the ones copied from the curves operator.
buildbot/vdev-code-daily-coordinator Build done. Details
90a0f39c02
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
27184c4643
Merge branch 'blender-v3.6-release'
251614c39c Transform: Include "allow_navigation" option in "Shrink/Fatten"
No functional changes from user's point of view.

"Shrink/Fatten" is used in macros for some extrude operations.

These operations may rely on the type of mesh selection.

While some of these operations are combined with the "Move" function,
which already permits navigation, others are combined with
"Shrink/Fatten", which currently lacks navigation capabilities.

To ensure consistency and enable navigation in all extrude operations,
this commit introduces the option to enable navigation for the
"Shrink/Fatten" operator.
05b8cfec5e Transform: Allow navigation with "release_confirm"
This limitation was added to avoid conflicts with tools.

But since we now have the "allow_navigation" option on transform
operators, there is no real benefit to having this limitation.
17d12522be Cleanup: Simplify Extrude menu code
This commit simplifies the "Extrude" menu layout code.

This should make future modifications and maintenance easier.

Refs:
33b1cbf06d
46b0e90cf6
db4a205fa0
buildbot/vdev-code-daily-coordinator Build done. Details
260125aed0
Transform: Allow navigation for operator when called from macro or menu
Extrude and duplicate operators now support navigation
(if enabled in preferences).
73d921a0c6 Cleanup: Avoid curve to mesh conversion in some deform modifiers
Some modifiers used `MOD_deform_mesh_eval_get` to make sure they had
a mesh to retrieve vertex groups from. But since curves don't support
vertex groups anyway, and since the curve to mesh conversion is handled
by the (legacy) curve object modifier stack anyway, this is confusing
and unnecessary. This shouldn't give any behavior changes, but some
deform modifiers on legacy curve objects might be faster if they used
to do the conversion.
102c015306 Cleanup: Remove argument from deform modifier utility function
This was only used in the particle system modifier.
c2430e55c8 Cleanup: Remove disabled code from particle system modifier
This comment referenced a special case for modifier evaluation in edit
mode. With replacements on the horizon, this won't be added anymore.
buildbot/vdev-code-daily-coordinator Build done. Details
5ee22dd490
Cleanup: Use const for modifier utility function
buildbot/vdev-code-daily-coordinator Build done. Details
f31dfa9b74
Merge branch 'blender-v3.6-release'
bdd189f593 Cleanup: replace BLI_strncpy with memcpy
Prefer memcpy when exact sizes have been calculated as this removes the
implication that the string might be smaller than the length argument.

Further, passing in `len + 1` to BLI_strncpy without clamping by the
destination buffer size is reads like a common mistake,
where the length of the source may exceed the destination buffer size.

While using `std::min(sizeof(dst), len + 1)` would avoid the confusion
it's complicating a statement which can use memcpy instead.
buildbot/vdev-code-daily-coordinator Build done. Details
0824ef7e91
Cleanup: remove TODO's from console_ops.c
As some of these require discussion (addition of undo/redo for e.g.),
this is better suited to a task #108641.
buildbot/vdev-code-daily-coordinator Build done. Details
05b8242e45
Cleanup: use \n for line endings (run dos2unix)
buildbot/vdev-code-daily-coordinator Build done. Details
b664de2c8e
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
bca3839749
Revert "Cleanup: consistently use rnaindex -1 to mean the no or entire array"
This reverts commit 8ed65fe6de.

Fix #108553: Alt + value change doesn't work for various inputs
Fix #108621: Driven values are no longer marked in purple
f12e9f32b5 Fix #32022, #43188, #100373, Armature modifier - Preserve volume + Scale
Fixes armature deformation bug when Preserve Volume is enabled and deforming bones are both rotated and scaled.

The bug happens because Preserve Volume uses Quaternion to interpolate rotations.  A bone has 3 parts of data describing its deformation: Quaternion(w,x,y,z) rotation (`quat`), Translation(w,x,y,z) (`trans`), and Scaling(4x4 matrix) (`scale`). To calculate deformed position of a vertex `r`, it will be firstly scaled by `scale`, then rotated and translated by `quat & trans`.

The 4x4 scaling matrix `scale` has a 3x3 part `S33` about scaling and shearing along 3 axes, and a vector part `ST3` that further translate the scaled position. i.e. `scale@r = S33@r + ST3`. This enables scaling about an arbitrary "pivot" (a point `r0` satisfies `scale@r0 = r0`).

However, when blending influence of multiple bones, different bones have different scaling pivot (their head position). Since quaternion rotation and translation/scaling are not commutative operations, this is what I believe causing this bug.

How this is fixed:

Note that the translational part `ST3` of the scaling matrix is redundant in functionality with Translational part `trans` in deformation data. There exists an equivalence transformation that simultaneously change `trans` and `ST3`, while keeping the deformation unchanged.

I applied this equivalence transformation to move the pivot to the vertex that the bones are deforming, before blending multiple bone transformations. Note that now the vertex is the pivot, so scaling transformations will not change its position. Further blending/applying of scaling matrices can be avoided.

Pull Request: #108134
buildbot/vdev-code-daily-coordinator Build done. Details
b84eedbb74
GPv3: Set default tool in draw mode
Default tool ("Draw") is not selected in draw mode due to typo

Pull Request: #108652
buildbot/vdev-code-daily-coordinator Build done. Details
8e64030a40
Assets: Remove unnecessary poll condition in "Open Blend File" operator
Since ccc9eef1b9, the asset-library-reference isn't required anymore to
get the full path of an asset. So don't check for this in the `poll()`
method of the operator.
buildbot/vdev-code-daily-coordinator Build done. Details
cbefcacdf3
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
fa0fe6f55e
Refactor: Pass deformed positions to curve selection
This refactor pulls the call to get the `deformation` data from inside the selection function to the outside.
Instead, the deformed positions are now passed directly to the selection functions.

This means that the selection functions become more independent of the object type, which was the original intent.
Otherwise, using these functions with e.g. Grease Pencil will crash.

Pull Request: #108650
buildbot/vdev-code-daily-coordinator Build done. Details
b29ba95cae
GPv3: Add "(De)select All" operator and keymap
This adds the `GREASE_PENCIL_OT_select_all` operator as well as a new keymap for edit mode for the new grease pencil objects.

Pull Request: #108628
buildbot/vdev-code-daily-coordinator Build done. Details
a741749a5c
Fix crash in some tests after bpy.context.property addition
This was masked by the cleanup commit that was done right after.

Ref #107280
buildbot/vdev-code-daily-coordinator Build done. Details
6c7354a69a
Merge branch 'blender-v3.6-release'
a29f6c854d GPU: Move texture attachment usage flag into Metal backend
This is a backend related workaround and doesn't belong to
the GPU layer.

Authored by Apple: Michael Parkin-White

Pull Request: #108151
buildbot/vdev-code-daily-coordinator Build done. Details
3db231189d
Metal: Remove command buffer error file
This file isn't useful anymore with all the other debug tools.

Authored by Apple: Michael Parkin-White

Pull Request: #108268
buildbot/vdev-code-daily-coordinator Build done. Details
708dfbb91b
Fix: Compile error in main after recent fmt usage
In the 3.6 branch we use `FMT_HEADER_ONLY`,
but that was changed in main by 0d38fa2422.
79ec23b25f Metal: Use CLOG macros with working log level
This avoid flooding the console with infos that are
generally not important.
3ecb301a20 Metal: Remove empty lines in log messages
There produce unneeded empty lines in the
console. They are just relic from the time
these message were using printf.

Also remove some redundant informations in
the messages themselves.
c5ddf63a4a Outliner: Port metaball elements to new tree-element code design
No user visible changes expected.

Part of #96713, continuation of work started in 249e4df110 and 2e221de4ce.
Refer to these for a motivation and design overview.

Adds a new tree-element class for metaball IDs.

Pull Request: #108654
2ab020cc3c Cycles: enable normal transformation of lights in Vector Transform node
This is added so that some texture pipeline with point light and spot
light could work as before. Some people use the Normal socket from
Texture Coordinate node for texturing light, however the Normal there is
actually the incoming light direction and should be corrected. Using the
Parametric socket from Geometry node + normal transform from world to
object with Vector Transform node delivers the same result as using the
Normal socket from Texture Coordinate node.

Currently for lights only normal transformation works, because only
there we fetch light transform properly. This is a confusing behaviour,
but testing if it's a lamp in all relevant functions could have bad
impact on the performance. A more proper solution would be to change
lights to real objects, which is planned for the future.

![Geometry_Vector_Transform](attachments/fe38895e-85b3-4e7a-873f-12068237f790)

Pull Request: #108666
buildbot/vdev-code-daily-coordinator Build done. Details
8dc70b9e2e
Cleanup: Correcting default cases in node.cc
Add all other enum items to switch statements instead of using default.

Pull Request: #107339
buildbot/vdev-code-daily-coordinator Build done. Details
8e059b569b
UI: move 'Face Nearest' snap option to another section
The snap mode called "Face Nearest" (and the "Increment" but that's for
another time) doesn't behave like the other snap modes.

Unlike the other snap modes, "Face Nearest" does not act on a Snap
Base (or Snap Source).

It always acts on the origin of individually transformed elements, (such
as each vertex individually).

It works just like the "Project Individual Elements" option.

So this commit makes the following changes:
- `Snap With` was moved to the beginning of the popover
- `Align Rotation to Target` and `Backface Culling` have been moved closer to the snap targets
- `Snap With`, `Target Selection` and `Align Rotation to Target` are no longer hidden by varying the mode and options
- `Project Individual Elements` has been replaced with the `Face Project` option
- `Face Nearest` has been moved to stick together with the `Face Project` option

Co-authored-by: Germano Cavalcante <germano.costa@ig.com.br>
Pull Request: #108555
buildbot/vdev-code-daily-coordinator Build done. Details
cf967f8e08
Transform: Remove Indication of the Transformed Snap Base
This commit removes the transformed `Snap Base` symbol (white target)
and displays only the untransformed `Snap Base` symbol (X) when
confirming the Snap Base Edit operation.

The usefulness of the white target icon representing the transformed
`Snap Base` is debatable since it represents the snap target itself
(orange circle) during the Move operation or the direction between the
pivot and the snap target during the Rotation operation.

Having multiple symbols on the screen can clutter the interface and may
not be intuitive.

Therefore, further discussion is required.

Ref.
#108669
buildbot/vdev-code-daily-coordinator Build done. Details
7dc85e68fe
Cleanup: Fix comment warning
When compiling on Ubuntu this comment could generate
thousands of warning lines, the comment is fixed now.

Introduced by 8e059b569b

Pull Request: #108676
buildbot/vdev-code-daily-coordinator Build done. Details
fb348137d5
Cleanup: Move IO files to C++
Changes:
1. `UNUSED` AND `UNUSED_VARS`   ->   `/*arg*/`
2. `NULL` -> `nullptr`
3. `Function style cast` for `enums` values
4. `void *` -> `static_cast<T*>`
5. Use standard includes `#include <file.h>` ->`#include <cfile>`
6. Replace designated initializers with member assignment
7. `typdef struct N{...} N; ` -> `struct N{...}`

See: #103343

Pull Request: #108477
buildbot/vdev-code-daily-coordinator Build done. Details
3b634d6f7f
Merge branch 'blender-v3.6-release'
e16ec95a16 UI: Add a custom text editor preference
Add a user preference to set up a custom text editor for editing text
files with the "Edit Source" action in the UI context menu.

- An operator TEXT_OT_jump_to_file_at_point has been added.
- A custom editor can be set in the user preferences.
- A preset has been included for "Visual Studio Code".
- When the editor is not set, use Blender's internal editor.

Ref !108299.
buildbot/vdev-code-daily-coordinator Build done. Details
0a891184fa
Fix #107789: Prevent area maximizing when dragging
Calling screen maximize while dragging could lead to UI layout change
which affects context, this lead to crashes in the icon drawing and
selection code. This patch prevents maximize operator from running if
dragging is in progress.

Might need to look into why `drag->imb->rect` is None immediately after
calling maximize, we might want it to work since it's sometimes
more convenient to drag then put into a big recieving box. But since
`wmDropBox` is predetermined, this can be a somewhat problematic.

Pull Request: #107803
1251b7c400 Text: always use TEXT_OT_jump_to_file_at_point for jumping to source
Now the operator is used for both the internal & external editor,
so there is no need for the caller to call this operator only when
the preferences are set.
buildbot/vdev-code-daily-coordinator Build done. Details
dfb8ff00fb
Fix attribute error running TEXT_OT_jump_to_file_at_point
Resolve Python exception running this operator without a filepath set,
outside a text-space.
934111caf6 Eevee-next: Fix Background When Not On Origin
Backgrounds in Eevee-next were different compared to Eevee-legacy.
Only when viewed from the world origin the background matched.

This change will make sure that the results of both engines matches.

Pull Request: #108509
buildbot/vdev-code-daily-coordinator Build done. Details
b7963d247c
Vulkan: Low Precision Float Conversion
This PR adds conversion template to convert between Low Precision float
formats. These include Binary32 floats and lower. It also adds support
to convert between unsigned and signed float formats and float formats
with different mantissa and exponents.

Additionally overflows (values that don't fit in the target float
format) will be clamped to the maximum value.

**Reasoning**:
Up to now the Vulkan backend only supported float and half float
formats, but to support workbench, 11 and 10 unsigned floats have to be
supported as well. The available libraries that support those float
formats targets scientific applications. Where the final code couldn't
be optimized that well by the compiler.

Data conversion for color pixels have different requirements about
clamping and sign, what could eliminate some clamping code in other
areas in Blender as well. Also could fix some undesired overflow when
using pixels with high intensity that didn't fit in the texture format
leading to known artifects in Eevee and slow-down in the image editor.

**Future**
In the future we might want to move this to the public part of the GPU
module so we can use this as well in other areas (Metal backend), Imbuf clamping
See 3c658d2c2e for a commit that uses
this and improves image editor massively as it doesn't need to reiterate over
the image buffer to clamp the values into a known range.

Pull Request: #108168
buildbot/vdev-code-daily-coordinator Build done. Details
96bfcd0597
Cleanup: rename __SOCK_MESH to SOCK_MESH_DEPRECATED
Double underscores didn't communicate that this was deprecated,
and are typically for internal or platform defined identifiers and
shouldn't be used for public API's.
buildbot/vdev-code-daily-coordinator Build done. Details
9ef62fb13a
Fix: missing grease pencil select menu
3aaacd6e30 renamed the greasepencil select
menu (but didnt do in places where it is actually called).

Pull Request: #108690
buildbot/vdev-code-daily-coordinator Build done. Details
288460aded
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
ace8875014
Merge branch 'blender-v3.6-release'
5399c7a79f BlendFile versioning: Fix mistake (inconsistency) in 8e059b569b.
File version was bumped to (400, 5), but new doversion check was done
against (400, 4).
e3697710d0 Cycles: make light UV available for Texture Coordinate node
The input socket of Image Texture node is connected with the UV output
of Texture Coordinate node by default, the later reads the geometry UV,
which is not available for lights because they have no real geometry.
The current implementation simply retrieves UV from shader data.

Pull Request: #108691
buildbot/vdev-code-daily-coordinator Build done. Details
eb7ae2fb82
Merge branch 'blender-v3.6-release'
7285f13163 Cycles: Fix Principled BSDF tooltip for MultiGGX
In a recent commit the MultiGGX code was changed, and along with it
the tool tip for MutliGGX. This commit fixes the issue where the
tooltip was not updated for the MultiGGX option in the Principled BSDF.

Pull Request: #108589
buildbot/vdev-code-daily-coordinator Build done. Details
6704881708
Cleanup: spelling in comments
db43a8fb57 Refactor: realtime compositer context changes for render compositing
* Provide render data, node tree and color management directly instead
  of going through scene, as these may be modified by the render pipeline.
  Also better for cached texture hits this way.
* Change legacy pass type to pass name.
* Skip file output node when not doing final render.
* Gracefully handle incomplete render results.

Pull Request: #108629
65fc10bd33 Compositor: first steps to use realtime compositor for renders
* Enable "Experimental Compositors" in preferences, then choose
  Realtime GPU execution mode in node editor sidebar.
* Only supports combined pass input and Render Result combined output.
* No viewer nodes, no file output nodes, and no node previews yet.

Pull Request: #108629
8dd1a6d91b Fix keymap versioning mistake in 3010f1233b
The file version was bumped to (4, 0, 4), so the new version check
should be done against (4, 0, 3).
decf089e06 Cleanup: Remove unused deprecated socket type
"SOCK_MESH" was used for a particle nodes experiment,
never in a released version of Blender as far as I know.
f06929766b Realtime Compositor: Implement Movie Distortion node
This patch implements the Movie Distortion node for the realtime
compositor. The distorted coordinates are computed and cached for a
particular tracking camera distortion parameters. So for expensive
distortion models, the first run will take some time to compute, but
subsequent runs will be fast.

An alternative implementation would be to implement each of the
distortion modes in the shader, but that was decided against for a few
reasons:

1. We want to hide the implementation details of the distortion models,
   since it is provided through an external library (Libmv).
2. Some distortion models are expensive to solve accurately, and can be
   quite slow to solve each time the shader runs.
3. The typical usage of the node does not involve interactive editing of
   the distortion parameters, rather, the parameters are computed during
   camera calibration, so caching seems most fitting in that case.

Pull Request: #108230
buildbot/vdev-code-daily-coordinator Build done. Details
963f8893a5
Merge branch 'blender-v3.6-release'
db3a96492f BLI: Use math:: functions for per-element vector operations
Use math functions from blender::math for those operations, which
allows to device vectors of non-standard types.
buildbot/vdev-code-daily-coordinator Build done. Details
97197bd53e
BLI: Add more per-element functions for vectors
This includes square root and reciprocal, and their safe versions.

For the reciprocal use name rcp, which matches Cycles and allows
to implement the same function for per-element operation on matrices.

Pull Request: #108705
cb75792c4c Merge branch 'blender-v3.6-release'
Conflicts:
	source/blender/blenkernel/BKE_blender_version.h
	source/blender/blenloader/intern/versioning_300.cc
buildbot/vdev-code-daily-coordinator Build done. Details
08d2c17478
Merge branch 'blender-v3.6-release'
67193e4e32 UI: Remove duplicate subsequent separators in Properties Navbar Tabs
Remove duplicate subsequent separators between tabs in Properties Navbar

Pull Request: #107693
buildbot/vdev-code-daily-coordinator Build done. Details
5f8391ca2d
Fix anisotropic BSDF versioning code being in the wrong place
Ref #104445
32bbfbb06e Fix #108643: Blender window does not open to full dimensions of the desktop.
When opening 'homefile' (i.e. startup or factory startup) at Blender
start (i.e. when there is no existing WM yet), the size of the windows
in the newly read WM is reset to zero, which will then cause `WM_check`
to re-size them the the maximum possible size on current monitor.

Regression from ebb5643e59.
ff7dc64234 Cleanup: remove unused USD plugin path registration
It is now in a location where USD automatically picks it up.
buildbot/vdev-code-daily-coordinator Build done. Details
3ca1e828e2
Cleanp: compiler warnings
989b5de8e9 Cleanup: remove unused window states, add doc-strings
Note that the GHOST_TWindowState is stored in DNA & that
values shouldn't be changed.
47189c5253 Docs: improve doc-strings for window size & startup file
Document the purpose of zero sized window & when wm_init_state is used.
Noticed when looking into #108643.
abca216a1d Cleanup: use C++ comments for disabling code
[0] used doxygen comment to disable code. Use '//' instead &
move the old doc-string to the newly added flag.

[0]: 7dc85e68fe
buildbot/vdev-code-daily-coordinator Build done. Details
7a1e2c4d0c
Cleanup: spelling in code
a89aa0c731 Merge branch 'blender-v3.6-release'
Slightly messed-up history due to a push conflict on
blender-v3.6-release, sorry about that.
buildbot/vdev-code-daily-coordinator Build done. Details
c9988ffc6a
Cleanup: format
buildbot/vdev-code-daily-coordinator Build done. Details
b9ddf2aec6
CMake: quiet uninitialized warning in fmtlib
This can be removed after the next upgrade.
116cbcbc86 Fix #108229: Wider tolerance shuffling NLA strips
In `transdata_get_time_shuffle_offset_side`, the tolerance for
terminating the loop is too tight, sometimes it will lead to a infinite
loop due to non-integral start/end values. Now fixed.

Pull Request: #108257
buildbot/vdev-code-daily-coordinator Build done. Details
55f9abfd3c
Merge branch 'blender-v3.6-release'
f9e0f873bd Cleanup: move text editor files to C++
A workaround for over 128 else-if's in a row was needed for MSVC
as it caused error C1061.
buildbot/vdev-code-daily-coordinator Build done. Details
52b6a37845
Cleanup formatting.
buildbot/vdev-code-daily-coordinator Build done. Details
2231b819a5
Vulkan: Workaround for 24bit depth component
Some vulkan platforms don't support 24bit depth components. In this
case we will allocate float depth component. During readback the data
should be converted back to what is expected.

Pull Request: #108698
c71d198dfd Vulkan: Mipmap Generation
Implement Mipmap generation for the Vulkan backend.
This patch implements `GPU_texture_update_mipmap_chain`.

Pull Request: #108699
buildbot/vdev-code-daily-coordinator Build done. Details
398b8428dd
Merge branch 'blender-v3.6-release'
0a0a451b4d Vulkan: Fix Unbinding All Images
When unbinding all images, all textures where unbound. This was
incorrect. This PR fixes this.

Pull Request: #108740
8f988206de Vulkan: UBYTE to SRGBA8 Texture Format
Adds support to create SRGBA8 textures using UBYTE as input data.
It is assumed that the UBYTE are already converted to SRGB and no
conversion actually needs to happen.

Pull Request: #108741
db4cd61001 Vulkan: Unbind Uniform Buffers When Destroyed
When Uniform buffers are destroyed they need to be removed from the
state manager. Otherwise Vulkan points to unallocated memory and leads
to artifacts.

Pull Request: #108742
4faee0b26e Vulkan: Set Debug Name For Descriptor Layout
This makes tracking shaders easier across the pipeline. Durring logging
and debugging the vulkan driver now remembers the shader associate to
the descriptor and provides this information in its messages.

Pull Request: #108743
buildbot/vdev-code-daily-coordinator Build done. Details
b6f8b50dd9
Fix using incorrect struct when unbinding images.
42fe8de6f9 Assets: allow copying asset data from one ID to another
Asset data can now be copied in Python via assignment to
`id.asset_data`, so for example `dest.asset_data = source.asset_data`.
This copies the description, license, author, etc. fields, as well as
the tags and the asset catalog assignment.

This is intended to be used in the pose library, when updating a pose by
simply creating a new asset and having that replace the old one.

This is intentionally taking a copy, even though the above use case
could have sufficed with a higher-level 'move' function. By exposing
this as a copy, it can be used in a wider range of situations, from
whatever Python code wants to use it. This could include copying the
asset data from the active asset to all the other selected ones.

Any pre-existing asset data is freed before the copy is assigned. The
target ID MUST be marked as asset already for the assignment to work.
Assigning `None` to clear the asset status is not allowed. Instead
`.asset_mark()` resp. `.asset_clear()` should be used. This limitation
is in place to simplify the API, and to ensure that there is only one
way in which assets are marked/cleared, making it easier to change the
internals of the asset system without API changes.

Example code:

```python
src = bpy.data.objects['Suzanne']
dst = bpy.data.objects['Cube']

dst.asset_mark()
dst.asset_data = src.asset_data
```

Pull Request: #108547
7f4f771442 GPv3: Add "Select Box" operator
This implements the `VIEW3D_OT_select_box` for the new grease pencil data-block.

Note that this also adds a `get_evaluated_grease_pencil_drawing_deformation` function, but there are TODOs left.
This will have to be updated once the modifier logic is in place.

Pull Request: #108661
buildbot/vdev-code-daily-coordinator Build done. Details
10b0ed58f8
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
40473db599
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
cfcf2cc3fa
Merge branch 'blender-v3.6-release'
3ca67a7a5d GPv3: Add "Select lasso" operator
This patch implements the `VIEW3D_OT_select_lasso` operator for lasso selecting points and curves in the new Grease Pencil v3 object.
Resolves #108663.

Pull Request: #108726
buildbot/vdev-code-daily-coordinator Build done. Details
7f218277c3
GPv3: Add "Select pick" operator
This patch implements the `VIEW3D_OT_select` operator for selecting points and curves in the new Grease Pencil v3 object.
Resolves #108660.

Pull Request: #108717
47ce7bbecc Fix: Face loop select toggle behaviour in paint mode
As pointed out by @pablovazquez the selection behavior
of the face loop selection in paint modes was missing the toggle feature.

The logic goes like this:
If any of the 2 adjacent faces to the selected edge are selected,
deselect instead of select.

There is still an inconsistency which I left in for this patch,
but is up to discussion.
CTRL+ALT+SHIFT click does an actual deselect in paint mode.
In edit mode it does toggle as well, just as ALT+SHIFT click

I can remove that feature if it isn't wanted

Pull Request: #108753
buildbot/vdev-code-daily-coordinator Build done. Details
b550d0be23
Cleanup: Move anim_filter.c to C++
In order to use the new grease pencil structure in this file, it will be useful to have it in C++.
Resolves #108693.

See #103343

Pull Request: #108715
f6249cc93b Fix: Crash when using loop select on edge that has only 1 face
The code assumed that the edge to poly map returns 2 polys,
which of course is not always the case, e.g. the border edges on a plane

Now the code assumes there is at least 1 face
which should be true since the code picks a face to begin with.

Pull Request: #108759
9ddc8504fa Realtime Compositor: Implement Sun Beams node
This patch implements the Sun Beams node for the realtime compositor.
The implementation is not identical to the existing CPU implementation,
but is very close. The new implementation is a higher quality one and
resolves some of the artefacts in the existing implementation. This is
achieved by doing a simple line integration toward the source pixel,
while having a number of integration steps that is invariant of the
angle to the source.

Pull Request: #108718
a20162392e Cleanup: Typo in constant name
No functional changes.

Pull Request: #108764
buildbot/vdev-code-daily-coordinator Build done. Details
a2bd080cf3
Cleanup: renaming of GPU contexts for clarity
* opengl_context -> system_gpu_context. This is the operating system OpenGL,
  Metal or Vulkan context provided by GHOST.
* gpu_context -> blender_gpu_context. This is the GPUContext provided by
  the Blender GPU module, which wraps the GHOST context and adds some state.
* Various functions create/destroy/enable/disable both contexts, these have
  just gpu_context in the name now.

Pull Request: #108723
513250051e Vulkan: Image Views
The ownership of image views depends on how they are used. When used as
an framebuffer attachment the image view is owned by the framebuffer.
When used as a image/texture in a shader the ownership of the image view
is the texture itself.

Pull Request: #108765
buildbot/vdev-code-daily-coordinator Build done. Details
f3cb157452
Compositor: add new node: Kuwahara filter
The filter is used to reduce noise while preserving edges. It can be used to create a cartoon effect from photorealistic images.

It offers two variations:
1) Classic aka isotropic kuwahara filter: simple and faster computation. Algorithm splits an area around a single pixel in four parts and computes the mean of the region with the lowest standard deviation.
2) Anisotropic Kuwahara filter: improves the classical approach by considering the direction of structures of regions

This patch implements both approaches above as multi-threaded operations for the full-frame and tiled compositor.

Co-authored-by: Sergey Sharybin <sergey@blender.org>
Pull Request: #107015
72987941e7 Metal: EEVEE-Next: Fix light and shadow OOB issues
Addressing a number of small issues and OOB reads/writes occuring in
EEVEE Next shadows + lighting passes. Improving correctness for unit
tests. Shadows are not yet working overall, but this unblocks progress
towards unit tests.

Authored by Apple: Michael Parkin-White

Pull Request: #108768
buildbot/vdev-code-daily-coordinator Build done. Details
2e8317873f
Metal: DrawManager-Next: Fix Object bounds and infos
Ensure float3 data types are marked as packed where appropriate for
ObjectInfos and instead update ObjectBounds during resource
finalization using local resource to reduce global memory thrashing.

Authored by Apple: Michael Parkin-White

Pull Request: #108766
0c202993f1 Fix #108745: Crash in debug build when deleting object
`totitem_added` should be used instead to add `RNA_enum_item_end`

Pull Request: #108762
buildbot/vdev-code-daily-coordinator Build done. Details
133c395336
Fix string buffer size for asset library path query
`FILE_MAX` is enough here, since the returned string will only be the
path to the .blend file, not the full path into the .blend library.
buildbot/vdev-code-daily-coordinator Build done. Details
179a2421ca
Refactor: Better context override for text button activate API function
No user visible change expected.

It wasn't clear that the caller of `UI_textbutton_activate_rna()` would
have to override the context region for it to work correctly. This is
only the case because UI internals happen to require it.

Instead of implicitly requiring the caller to do the context override so
UI internals work, do the override inside of the API function in
question.
a7644fd5bb Cleanup: Use references in the motion tracking code
Used for arguments which are not supposed to be nullptr.

Pull Request: #108767
buildbot/vdev-code-daily-coordinator Build done. Details
84863dae89
Fix light texture invisible when looking at a light
`sd->type` was set to `PRIMITIVE_TRIANGLE` when it should be
`PRIMITIVE_LAMP`.

Function #lights_intersect_impl sets `isect->prim` to `lamp`, which is
passed to function #shader_setup_from_sample. There `prim != PRIM_NONE`
is evaluated to `true`, thus setting `sd->type` to `PRIMITIVE_TRIANGLE`
erroneously. This fix checks `lamp != LAMP_NONE` first, as in all other
usages of #shader_setup_from_sample `LAMP_NONE` is passed as the value
of `lamp`.

Pull Request: #108769
56f4610a50 Cleanup: Make asset-list function static
The function has static behavior, i.e. doesn't depend on an `AssetList`
instance, so its APIs should reflect that.
buildbot/vdev-code-daily-coordinator Build done. Details
a4faea2df6
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
4394de611f
Asset system: Add public functions for asset identifier query
No user visible changes expected.

This is needed in #104831 but makes sense to expose publicly in the
asset system APIs either way. So committing this to the main branch
already.
buildbot/vdev-code-daily-coordinator Build done. Details
a7a3c00f76
Cleanup: Get asset ID via asset representation, not via file
It is preferred to get asset data via the asset representation now,
since this should replace the file based asset handle design.
buildbot/vdev-code-daily-coordinator Build done. Details
fcc9828141
Merge branch 'blender-v3.6-release'
4d6da30d16 Cleanup: Remove unsupported mode from macro 'SCE_SNAP_MODE_GEOM'
`SCE_SNAP_MODE_FACE_NEAREST` is actually not supported as one of the
geometry snap modes.

It is not used for either the snap cursor or the `Set Snap Base` mode.
buildbot/vdev-code-daily-coordinator Build done. Details
631e5d5d4f
Asset system: Store ID type in asset representation
No user visible changes expected.

This brings us another step closer to replacing the temporary asset
handle design with the proper asset representation design. I held off
with this a bit because we eventually want to support non-ID assets, but
for now it is fine to consider all assets to be IDs. In future the asset
system can make the necessary distinctions still.

Now only the preview is handled via asset handle still.
buildbot/vdev-code-daily-coordinator Build done. Details
38eb063c0c
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
38833a20a6
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
65d294c385
Geometry Nodes: Use smaller grain size for sampe nearest surface node
This increases the framerate in a production file from about 2.3 to 2.5
FPS, and reduces gaps in a profile where the CPU was waiting for just
a few threads to finish the BVH tree lookups. If BVH lookups become
faster in the future, this grain size could be increased.
04422064fb Cleanup: Fix mistaken dependency between rotation headers
The quaternion header depended on the old C header where it doesn't
need to with a better alternative in the newer C++ types. Also remove an
unused function in another header.
buildbot/vdev-code-daily-coordinator Build done. Details
65d8cfd82d
BLI: Add hash function to quaternion type
Just reuse the 4D vector hash.
This allows creating a CPPType for math::Quaternion.
buildbot/vdev-code-daily-coordinator Build done. Details
2ed675c3fb
Cleanup: move bmesh_interp.c to c++
buildbot/vdev-code-daily-coordinator Build done. Details
55c05e037b
Fix error building from missing includes
0ed8195486 Fix assert failing after 4d6da30d16
Assert can be triggered if only `SCE_SNAP_MODE_FACE_NEAREST` is used.
buildbot/vdev-code-daily-coordinator Build done. Details
b7d2ff61bc
Fix building with MSVC (address errors)
buildbot/vdev-code-daily-coordinator Build done. Details
2f1899a7fa
Cleanup: spelling in comments
buildbot/vdev-code-daily-coordinator Build done. Details
0050a67c7a
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
03e4c4b26d
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
31c986998b
Metal: Fix operator precedence bug
buildbot/vdev-code-daily-coordinator Build done. Details
884b1e8cc3
BLI: Add math::exp() function
Covers both arithmetic and vectorized types.

Pull Request: #108793
buildbot/vdev-code-daily-coordinator Build done. Details
7ef8389dad
Fix #108746: Defaults / Save startup file don't save the window size.
Hopefully now the behavior is fully consistent with before the refactor,
current implemented one by this commit:

- When loading factory settings file on startup, go full-screen.
- In all other startup cases, use size as stored in the startup .blend
  file.

Regression from ebb5643e59 and 32bbfbb06e.
d154ebfa83 RNA: support compiling rna files as C++ code
Compiling files in `makesrna` as C code is often a bit annoying when converting
other files to C++ (#103343). That's because one often had to introduce additional
C wrappers.

The goal of this patch is to support compiling rna files as C++ code. This mostly
required changes in `makesrna.c` to make the generated code compatible with C
and C++. The cmake code had to change a bit as well because we need to pass
different compiler options for C++ code to avoid some warnings.

This commit also converts a few rna files to C++ already, although that is mostly
just for testing. The rest of the files are expected to be converted after this patch
is merged.

It's possible, even likely, that `makesrna.c` has to change a little bit more to
support C++, but that is hard to know without converting all files first.

Co-authored-by: Lukas Tönne <lukas@blender.org>
Co-authored-by: Ray Molenkamp <github@lazydodo.com>

Pull Request: #108290
buildbot/vdev-code-daily-coordinator Build done. Details
f5dd7d5e6c
Vulkan: Fix Workbench Normals
Workbench normals where inverted resulting to drawing artifacts like:
- Black pixels during matcaps (normals contained NAN values)
- Studio light inverted

The root cause for this was that Vulkan default to determine if a
primitive is facing the camera should be switched. The default was still
incorrect.

Although this fixes it, a better solution is to determine the front
facing based on if the viewport should be switched. As all rendering
occurs when the viewport is inverted it doesn't matter at this moment.

Pull Request: #108797
6452eccc80 #107126: Make FCurve.update() also deduplicate keys
The RNA function `FCurve.update()` now also deduplicates keys. This is done
in a way that is independent of key selection; simply the last key in the
list of keyframes 'wins' and overwrites earlier ones. It is exactly the
same as `FCurve.keyframe_points.deduplicate()`.
c70a1595ef Fix uninitialized alpha channel in classic Kuwahara filter
Was only happening for the tiled compositor implementation.

This is likely to be the source of flackey tests on the
buildbot.

Also, the reference image was empty because of this, so
it needs to be re-generated.

Pull Request: #108800
0044c93e84 Cleanup: Use ID type enum instead of unsafe integer
Adds type safety and removes need for explicit casts.
buildbot/vdev-code-daily-coordinator Build done. Details
e682133d2d
Fix use of nullptr field to calculate array size
Is probably harmless in practice, but the ASAN was generating an
error about it:

  draw_manager_data.cc:187:59: runtime error: member access within null pointer of type 'struct DRWUniformChunk'

Pull Request: #108798
46cf093270 Mesh: Remove face map list, convert to integer attribute
Face maps were added as a prototype of a new rigging solution during
2.8 development. Their storage is redundant with the newer generic
attribute system (specifically with integer face attributes), and
they were never used much. This commit removes the face map list
and converts the storage to an attribute with the name `face_maps`.
There is nowhere to store the face map names anymore, so those
are not kept.

It probably still makes sense to have a feature like mesh face gizmo
selection for rigging. But the design and implementation woulds likely
have to change significantly, including possibly changing the storage
type, and making use of the generic attribute system instead of a
special type.

See #105317 for more discussion.
2f88b12fc5 Fix missing versioning for 4d6da30d16
The lack of versioning caused the Placement Tool's "Snap To" to appear
as a white field.
5621154185 Transform: Remove current 'Snap Base' in 'Set Snap Base' mode
The current `Snap Base` was available and displayed to allow snapping
to `Edge Perpendicular`.

However, the usefulness of perpendicular snapping in `Set Snap Base`
mode is questionable and can sometimes cause inconvenience.

Also, removing the current `Snap Base` indicator (the `X` drawing)
makes the intention of the operation more apparent.

Therefore, this commit removes both the indicator and the effect of the
current `Snap Base` in `Set Snap Base` mode.

Pull Request: #108776
9b83e9b60c Refactor: Get rid of asset handle in most asset-list iterators
`AssetHandle` is meant as temporary design and should be replaced by
`AssetRepresentation`. This moves us another step closer to that.

There's now an iterator for the asset-list that provides an asset
representation instead of an asset handle. Use that whenever the
representation provides all necessary data (i.e. when no preview image
access is required).
buildbot/vdev-code-daily-coordinator Build done. Details
2efb3fc91a
Fix build error with non-unity build
03258f2847 Cleanup: Fix strict compilation warnings
Some code is not used anymore since the face map lists removal.

Pull Request: #108803
92ff750bbf Refactor: Get rid of asset handle for drag & drop
`AssetHandle` is meant as temporary design and should be replaced by
`AssetRepresentation`. This moves us another step closer to that.

Rather than taking data from the volatile asset handle and storing that
in the drag data, store the (more persistent) asset representation there
and access data from it where needed.
f2720bd8e9 Asset system: Remove unused asset handle API functions
These are now unused and it's not worth keeping them. There are some
other unused functions that are simple data getters, I'm keeping them in
in case they become useful again. The full asset handle API will be
removed as part of #108806.
eff642cd19 BPY / Asset System: Remove deprecated parameter in asset path query
This parameter was deprecated and ignored since ccc9eef1b9. Removing
this as part of breaking 4.0 changes, see #102877.
buildbot/vdev-code-daily-coordinator Build done. Details
5400fe941e
Realtime Compositor: Support Viewer nodes
This patch adds support for Viewer and File Output nodes to the realtime
compositor. The experimental render GPU compositor was also extended to
support viewers. While support for File Output nodes was added, it
remains unimplemented.

This is just an experimental implementation, the logic for viewers will
probably be changed once #108656 is agreed upon. Furthermore, the recalc
NODE_DO_OUTPUT_RECALC flags need to be taken into account to avoid
superfluous computations.

Pull Request: #108804
2ee2ae93fb Vulkan: Initial Cube(Array) Support
This PR adds initial cube (array) support. Depending on how the texture
is used a different image view is created. When used as a framebuffer
attachment only a single side of the cubemap is attached. The image
view is attached as a 2d texture array. When used as a shader resource
the image view is a cubemap.

Also adds test cases to test both scenarios.

Pull Request: #108794
26bad3b187 Curves: Add separate start and end amounts to Select Ends operator
This commit renames the `curve.select_end` operator to `curves.select_ends` and replaces the properties with a `amount_start` and `amount_end` property.

Pull Request: #108799
buildbot/vdev-code-daily-coordinator Build done. Details
b1b74eb335
Cleanup: make format
9879e3a84d UI: Quiet warning when setting panel type description from C
No user visible changes expected.

Assigning a string literal to `PanelType.description` would give a
warning, because ISO C requires these to be `const char *`. Wasn't used
so far, but will be with #104831.
250c9ccc10 Cleanup: Avoid using custom data type enum incorrectly
The data transfer code stored values not in the `eCustomDataType`
enum in this variable, so the type was incorrect. Instead use a cast
when we expect the value to be a valid enum value.
buildbot/vdev-code-daily-coordinator Build done. Details
11f1265066
Assets: Ignore ID type filter when not set
When no ID type filter is set, all ID types should be visible. Otherwise
there's no way to make all ID types visible when the filtering must be
called (e.g. because filtering by tags is to be applied).
b3356b1799 Mesh: Remove unnecessary mesh position copying
Remove unnecessary mesh position copying in the following places:
1. hair dynamics
2. shrinkwrap remesh target project
3. normal projection calculation in shrinkwrap (hidden copying)
4. multires modifier: reshape from object
5. vertex weight proximity modifier remesh

See #103789.

Pull Request: #108721
buildbot/vdev-code-daily-coordinator Build done. Details
823514fd6f
Fix #108778: Crash when rendering multiple view layers
The rendering pipeline will re-use dependency graph and request
for re-building its relations for every new view layer, and try
to re-use as much evaluation as possible.

This could potentially run into situation when a content of
collection is changed: due to the difference in the per-view
layer visibility. If the evaluated collection has an object cache
this will make the cache to get out-of-sync with the actual
content. The cache on the evaluated collection might be created
when instancing system iterates over the collection.

This change makes it so the cache is freed when the dependency
graph relations are updated. This might be a bit too intrusive.
There might be ways to somehow ensure the content of the collection
is still the same as it was before the relations update, but this
is much more complicated task. Perhaps the performance is already
good enough.

This is a collaboration with Jacques Lucke, who was looking into
the same report, bouncing some ideas back and forth, and helped
testing the patch.

Pull Request: #108816
buildbot/vdev-code-daily-coordinator Build done. Details
95ca04dc20
Text Editor: remove support for syntax highlighting LUA
Removed because support for languages which Blender it's self doesn't
support seems unnecessary.

Ref !108689
buildbot/vdev-code-daily-coordinator Build done. Details
744dd79ea1
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
451751380c
Deps_builder: Move Windows build from MinGW/GCC to msys2/MSVC
Currently, Windows some dependencies are built with MinGW/GCC 3.x
this commit removes that, in favor of building them with MSVC
via msys2. This will make it easier in the future to offer Win/Arm64
builds of blender.

Notable changes:

- This change drops support for the external libxvid library in favor
of ffmpegs built in support for this format. This has been done with
permission from the VFX module.

Pull Request: #105502
buildbot/vdev-code-daily-coordinator Build done. Details
b7b2e08dcb
Revert "Deps_builder: Move Windows build from MinGW/GCC to msys2/MSVC"
This reverts commit 451751380c.

Seems like this broke linux/mac, likely needs to detect of libxvid
is there or not. For now revert until we sort this out.
691c0fc43a Fix saving a blend file that's FILE_MAX length failing to version
While a corner case, saving FILE_MAX length files should be supported.
buildbot/vdev-code-daily-coordinator Build done. Details
9520dba066
Cleanup: naming & return value for writefile's do_history
- Rename name -> filepath.
- Rename hisnr -> version_number.
- Return true on success.
buildbot/vdev-code-daily-coordinator Build done. Details
9e706deaf6
Fix #108688: GPv3 Crash at ended of drawing operation.
The problem was that the attribute layers may not exist when the operator ran.

The fix is to use `lookup_or_add_for_write_span` instead of `lookup_for_write_span`.

Pull Request: #108851
buildbot/vdev-code-daily-coordinator Build done. Details
825d2d301b
GPv3: "Select More" and "Select Less" operators
Adds `GREASE_PENCIL_OT_select_more` and `GREASE_PENCIL_OT_select_less` operators for the new grease pencil system.

Resolves #108752.

Pull Request: #108847
buildbot/vdev-code-daily-coordinator Build done. Details
126bff3099
GPv3: "Select Linked" operator
This adds `GREASE_PENCIL_OT_select_linked` operator for the new grease pencil data.

Resolves #108750.

Pull Request: #108829
buildbot/vdev-code-daily-coordinator Build done. Details
f4d6edd476
VSE: Add "Set Speed" gizmo to retiming tool
This gizmo is now responsible for drawing labels with speed of retimed
segments. By clicking on the value it is possible to type in new speed,
which is more convenient, than dragging handles by hand.

Note: Due to granularity of frames, the precise value may not be
respected.

Pull Request: #108422
buildbot/vdev-code-daily-coordinator Build done. Details
a05dfdbadf
Cleanup: Make format
buildbot/vdev-code-daily-coordinator Build done. Details
84f1c4e16c
Merge branch 'blender-v3.6-release'
buildbot/vdev-code-daily-coordinator Build done. Details
2beb1bc38f
Merge branch 'blender-v3.6-release'
Lukas Tönne force-pushed reset_socket_shapes_on_copy from cf1d9e9fcd to d39bc7aaa2 2023-06-12 12:01:08 +02:00 Compare
Lukas Tönne added 1 commit 2023-06-12 12:24:43 +02:00
Author
Member

Sorry for the noise, i accidentally merge main intermittently. git reset --hard cleaned it up, but gitea still shows all those commits.

Shape reset only happens when copying now.

Sorry for the noise, i accidentally merge main intermittently. `git reset --hard` cleaned it up, but gitea still shows all those commits. Shape reset only happens when copying now.
Lukas Tönne requested review from Jacques Lucke 2023-06-12 12:31:01 +02:00
Hans Goudey changed title from Fix #108376: Copy from geometry to other node tree types resets shapes. to Fix #108376: Copy from geometry to other node tree types resets shapes 2023-06-12 13:28:55 +02:00
Member

I think this socket shape reset should be specific to copy & paste. Right now it's happening whenever any socket is copied, which doesn't seem right.

I think this socket shape reset should be specific to copy & paste. Right now it's happening whenever any socket is copied, which doesn't seem right.
Lukas Tönne added 1 commit 2023-06-12 14:01:31 +02:00
Hans Goudey approved these changes 2023-06-12 14:19:32 +02:00
Lukas Tönne merged commit f09d465a6d into blender-v3.6-release 2023-06-12 14:21:56 +02:00
Lukas Tönne deleted branch reset_socket_shapes_on_copy 2023-06-12 14:22:00 +02:00
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 Assignees
4 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#108412
No description provided.