- Add `DNA_DEPRECATED` macros, and comments noting when the fields were
deprecated
- Improve other comment clarity
- Other small casing fixes and tidying of the file.
Error in 96e549c092.
The order of colors passed into `BLI_mix_colors` is significant in cases
where the alpha being used is 0. The intent of this line is that the
temporary stroke buffer should have the value of mixing the brush color
with the current buffer value.
Pull Request: https://projects.blender.org/blender/blender/pulls/143972
Adds "Curve Data" panel analogous to "Active Spline" in legacy curves.
This allows setting values both for single and multiple selected curves.
If a particular field's value differs among selected curves, the mean
value is shown in inactive field. The field is modifiable and input
value is set to all selected curves.
Pull Request: https://projects.blender.org/blender/blender/pulls/141572
This PR scales the VFont placeholder character so that it is always
approximately en width. It is currently too wide and scales the size
and line width incorrectly for different font dimensions.
Pull Request: https://projects.blender.org/blender/blender/pulls/143812
Caused by 5f6e94ca58
When there are more than 2^16 points, the GPU index buffer code tries
to compress the indices to uint16 because we passed the incorrect max
index. In general that optimization just isn't worth the complexity
of precalculating the max index in this situation. There are other
potential optimizations here that would be vastly more helpful.
So just pass INT_MAX to disable the compression.
The W channel in quaternion and axis-angle F-Curves is now themeable
(defaulting to yellow), instead of incorrectly blending the X and Y axis
theme colors.
The original blending math did not take into account that the hue
channel actually wraps around, and so the blended color became blue
instead of the intended yellow.
Instead of fixing the math, the theme has been expanded for this W axis.
The default color is set to the mathematically correct yellow.
Co-authored-by: Sybren A. Stüvel <sybren@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/143211
The behavior of the field inferencing changed slightly. So instead of checking
if the link connects a socket that has a field to one that does not, check the
source is a field and the target does not support one. Note the difference
between "having a field" and "supporting a field".
This was probably broken in 7b7c630018.
Pull Request: https://projects.blender.org/blender/blender/pulls/143975
In case an image editor is open in the same window, entering sculpt mode
could crash. The cause is that the 3d viewport can request the sculpt
data vbo and its batch. But the image editor doesn't need it and removes
the sculpt data vbo, but doesn't remove the batch. Next frame the batch
could point to invalid data.
This fix will not keep the batch around so it is always being
reconstructed. A better solution needs to be found as the removal of the
vbo is done in a strange part, and the vbo should be checked against the
cd needed over time.
Pull Request: https://projects.blender.org/blender/blender/pulls/144013
This was a request of the Blender Studio.
The Attribute color mode is used for more correct display of
materials during animation. The assets are created with
a color attribute that mimics the material.
The issue is that this attribute needs to be set up for every
individual object for it to work in Attribute color mode as
the lack of attribute will default the object to Object color mode.
This patch changes the defaulting to Material color mode
just like when using the Texture color mode.
Pull Request: https://projects.blender.org/blender/blender/pulls/143931
Resetting and recycling of immediate drawing buffers was never done and
would leak memory as the buffers were only destroyed when Blender
exited.
This is solved by not recycling or resetting the buffers and rely on the
discard pools. Additional cleanup of removing unused code-paths is also
part of this change so it can be backported to 4.5.
Pull Request: https://projects.blender.org/blender/blender/pulls/143995
For the "Divide" layer blend mode to work in the viewport, we need to use
a floating point texture format for rendering.
This changes the format to always use floats for the `color` textures,
but still switches the `reveal_tx` to use integers in the viewport, and
only floating point during final render.
Pull Request: https://projects.blender.org/blender/blender/pulls/143993
The issue has been introduced in 7ceb4495c5 by missing implementation
of the is_noop() callback for the CPU processor.
While it was not noticeable perceptually, an exact floating point value
might have changed due to un-premultiplication+premultiplication.
The fix needs to be ported to the Blender 4.5 LTS.
Pull Request: https://projects.blender.org/blender/blender/pulls/143998
The Group Input node can not access viewport compositor passes, this is
because EEVEE only considered render layers node. This fixes that by
also taking root group input nodes into consideration.
Pull Request: https://projects.blender.org/blender/blender/pulls/143996
Cryptomate's init process would access the scene's viewlayers even when
`build_meta_data` was false - and the `CryptomatteSession` constructor
would only ensure valid viewlayers if `build_meta_data` is `true`.
Triggered in a complex setup (BCon25 app template), but suspect this was
reproducible when the compo node tree is used in a non-active scene.
The `start_audio_video_job` function was using `CTX_wm_window`
and `CTX_data_sequencer_scene` which shouldn't be populated when
the callback is called.
The reason for this is that this callback is executed once on drag enter,
but there isn't a vaild context at that moment.
The fix removes the use of the context functions since we don't need
the context members. The window was always `nullptr` anyway and the
`scene` was just _a_ scene, but not necessarily the correct one.
For audio files, we need the scene framerate to compute `strip_len`
which is used to draw a temporary strip in the VSE timeline.
But instead of computing the `strip_len` on drag enter, we compute
it on the fly when drawing the temporary strip since we have the
right context then.
Pull Request: https://projects.blender.org/blender/blender/pulls/143981
Ref: #143441
The Map Value node was removed. During versioning, it gets replaced by
other equivalent nodes.
This PR adds a frame around the newly created nodes with a label that
clarifies the reason these nodes were added.
Pull Request: https://projects.blender.org/blender/blender/pulls/143800
This commit introduces the extension modes to the corner pin node and
further streamlines the node properties by wrapping all props in the node
storage. Therefore, the interpolation mode has been removed from the
custom properties of the node and moved into the node storage.
Right now, the extension modes only work for non-anisotropic filtering.
Pull Request: https://projects.blender.org/blender/blender/pulls/141570
Rewrite `AssetShelfSettings::operator=` and fix `~AssetShelfSettings()`
to address some memory management issues:
- `memcpy` was used to copy a C++ struct, which shouldn't be done: it
can cause undefined behaviour if the class has vtables or internal
padding. This isn't the case here, but GCC nonetheless warns for it.
- `active_catalog_path` was incorrectly freed via `MEM_delete()`; it was
allocated with `BLI_strdup()`, which uses `MEM_malloc_arrayN()` and
thus should be freed with `MEM_freeN()`.
- Self-assignments weren't handled properly, and could cause data loss.
These are now all fixed.
Pull Request: https://projects.blender.org/blender/blender/pulls/143701
In the particular case of the report it creates a rv3d with `dist == 0`.
This causes EEVEE to create an invalid projection matrix when
calling `RE_GetWindowMatrixWithOverscan` with a zero `viewplane`.
To avoid this, we check if `rv3d->dist == 0` and don't compute overscan
in this case. This avoid many issues down the line.
Candidate for backporting to 4.5 LTS.
Pull Request: https://projects.blender.org/blender/blender/pulls/143946
The Inpaint node produces inconsistent results across different GPUs,
where it produces different results on Intel Windows GPU platforms. This
is due to a mismatch between the precision declared for the shader and
that of the allocated textures. To fix this, we make sure the shader
uses the same precision as the allocates results.
Pull Request: https://projects.blender.org/blender/blender/pulls/143793
The issue was the usage of `asset_edit_id_is_editable` which seems to also return
true for external libraries that are not `asset.blend`
The fix is to use `asset_edit_id_is_writable`
Fixes: #142124
Pull Request: https://projects.blender.org/blender/blender/pulls/141942
The recently introduced feature of playhead snapping (#137278)
added a popover menu for snap targets.
This used text to indicate the contents of said popover.
In order to bring it in line with the other snapping menu, this PR adds
icons to indicate the enabled state of snapping.
Part of #135794
Pull Request: https://projects.blender.org/blender/blender/pulls/139271
The Map UV node does not work when the UV input is a single value, where
it is expected that the output will also be single value. This was
simply not implemented for GPU, so this patch does that.
Pull Request: https://projects.blender.org/blender/blender/pulls/143096
Many nodes operate on all the instances that are passed into them. For example,
the Subdivision Surface node subdivides the mesh at the root but also instanced
meshes. This works well for most nodes, but there are a few nodes were the old
`modify_geometry_sets` function was not very well defined and it was tricky to
use correctly.
The fundamental problem was that the behavior is not obvious when a node creates
or modifies instances and how those are integrated with the already existing
instances.
This patch solves this with the following changes:
* Remove the old `GeometrySet::modify_geometry_sets` and related
`*_during_modify` methods.
* Add a new `blender::geometry::foreach_real_geometry` function that is similar
to the old `modify_geometry_sets` but has a more well-defined interface:
* It never passes instances into the callback. So existing instances can't be
modified with it.
* The callback is allowed to create new instances. This will automatically be
merged back with potentially already existing instances. The callback does
not have to worry about accidentally invalidating existing instances like
before.
* A few existing usages used `modify_geometry_sets` to actually modify existing
instances (usually just removing attributes). Those can't use the new
`foreach_real_geometry`, so they just get a custom simple recursive
implementation instead of using a generic function.
Pull Request: https://projects.blender.org/blender/blender/pulls/143898
The goal here is it to make it more obvious how error messages for
shader nodes should be added. Nowever there is a more explicit
block for compositer and geometry nodes.
If the BMesh already has a "custom_normal" attribute with the wrong
type, the call to `BM_lnorspace_update` won't be able to add the
attribute with the expected name, and the bevel code ends up using an
invalid offset to access the data.
For the fix, first just guard against that case. But also make sure the
harden normals functionality still works when the input mesh has free
normals. They will no be converted to tangent space normals as
necessary, in bevel and in other BMesh code that requires that
custom normal storage format.
Pull Request: https://projects.blender.org/blender/blender/pulls/143489
This removes code that adds a line to region edges, used only to add
a slight divider between Top Bar workspace list and the Scene selector.
The replaces that divider with a fade out effect instead.
Pull Request: https://projects.blender.org/blender/blender/pulls/137921
File Browser list, Context Menu, External. On Win32 for items that are
not folders we need to use the list root for "open folder" and for
"command prompt here".
Pull Request: https://projects.blender.org/blender/blender/pulls/143964
This was caused by a mismatch in the conditions that enabled GPU
subdivision. The mesh normals domain for meshes with no faces was
reported incorrectly, causing the code to think there are auto-smooth
style split normals when there actually aren't.
Also the GPU subdiv normals extraction had a crash binding a vertex
buffer that doesn't exist when there are no faces. Add an early return
for the wire-only mesh case to avoid that.
Pull Request: https://projects.blender.org/blender/blender/pulls/143961
This makes it so that operators that function on curves will work if
only handles are selected. For Grease Pencil this also makes it so that
the control points of a stroke will be visible if any handles are
selected.
Part of #121574
Pull Request: https://projects.blender.org/blender/blender/pulls/143867
Generally, node names are expected to be unique within a node tree. However,
`ntree_shader_copy_branch` currently does not enforce this for performance
reasons. This was broken by recent changes in 5b73f798d0 and 9fd877e174 which
allows for passing already unique names and identifiers to the node copy
function.
The main problem here was that the `use_unique` parameter of the `node_copy`
function was not well defined. Now, this function is completely removed in favor
of using `node_copy_with_mapping` directly. This also has a new
`allow_duplicate_names` parameter now which makes the expected behavior more
explicit.
Pull Request: https://projects.blender.org/blender/blender/pulls/143951
This PR makes it easier to delete strip keyframes from the preview.
It works similarly to the 3D viewport and also works with keying sets.
Pressing "alt + I" deletes the keyframe on the current frame of the
selected strips, when a keyset is active it only deletes the keyframes
of the selected keyset.
Pull Request: https://projects.blender.org/blender/blender/pulls/140385
The issue comes from the fact that placeholder IDs where not properly
cleared before writing, leaving all kind of potential broken pointers
once read back.
Also use the `BLO_Write_IDBuffer` for these, with dedicated 'cleanup'
logic since in their case, we want to write almost nothing.
Pull Request: https://projects.blender.org/blender/blender/pulls/143949
For quite a while, for edit mode mesh object evaluation we haven't
put the evaluated edit mesh in the evaluated geometry set. I don't
think the reason for that applies anymore. The code is much simpler
if all the evaluated geometry is a consistent place, so just put it there,
the same way as non-edit-mode evaluation.
Pull Request: https://projects.blender.org/blender/blender/pulls/143896
Function curves::nurbs::calculate_basis_cache() varies the name of the
variable 'last_control_point_index '. Name is also confusing and not
descriptive as it refers to the total number of points including
padded/repeated points for cyclic curves (repeated by wrapping the
index by the size of the array).
Use of 'points_num' generally also refers to the size of the array and
not total number of wrapped points.
Pull Request: https://projects.blender.org/blender/blender/pulls/143921
This refactors the code for world to dome light to be shared between USD and
Hydra, and makes rotations work for Hydra the same way they do in USD.
One small behavior change is that missing image files now render black,
matching Cycles and EEVEE more closely.
Co-authored-by: Brecht Van Lommel <brecht@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/143035