The issue happens due to `out_phase_img` returning wrong values in `eevee_surf_volume_frag.glsl`.
The only workaround I've been able to find is using the same format as the other property textures.
Pull Request: https://projects.blender.org/blender/blender/pulls/125715
The File Output node doesn't provide an option to save byte formats like
PNG in a space that is not sRGB. This is problematic for data images
like normal maps, which need to be saved as non-color.
This patch adds a Color Space option to the File Output node to allows
users to override the assumed color space. This also adds a new global
Save As Render option that is used if Use Node Format is enabled.
Pull Request: https://projects.blender.org/blender/blender/pulls/124238
Directly calculate the transformation matrix by multiplying and
inverting the Domain matrices. This removes a double-invert and
decomposition of the matrices so it should be more accurate, and I think
makes the math a lot easier to figure out.
This also moves the "bias" for Nearest to be done in the input space
rather than output. This should make it select the same pixels from the
input even if the image is rotated 180 degrees.
Co-authored-by: Bill Spitzak <bills@sidefx.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/125543
Classes Speaker, Lattice, Metaball, Prepass refactored to contain one pass.
Stereo camera's connecting line fixed to always be dashed.
Metaball selection fixed in object and edit modes.
Pull Request: https://projects.blender.org/blender/blender/pulls/125684
Align Cycles SVM and EEVEE's rendering of the vector math node
in reflect mode with OSL when the normal vector is 0,0,0.
This is done by using safe_normalize rather than normalize on the
normal vector. Which also fixes a NaN in the reflect mode in this
specific configuration.
Pull Request: https://projects.blender.org/blender/blender/pulls/125688
Code was using the `struct_index` instead of the `type_index` to set the
alignement value for this struct, effectively setting that alignement
value for another struct/type than `mat4fx4f`.
Found while working on naming cleanups of maksdna code.
Pull Request: https://projects.blender.org/blender/blender/pulls/125777
Rename ed_workspace_status_mouse_item to ed_workspace_status_icon_item
as this is not specific to mouse icons. Just a brain-fart because this
function has specific handling of mouse icons because of spacing
issues.
Pull Request: https://projects.blender.org/blender/blender/pulls/125790
PR #125332 made changes to the format of the version string displayed
on the title bar and in status bar. These changes included not showing
the patch level if zero. Unfortunately this also changes the version
as displayed on the command-line with "--version". This particular
change was approved quite hastily so this PR just reverses that, always
shows zero patch level and therefore shows the command-line version as
before. If we want to hide patch zero we can debate this specifically
later.
Pull Request: https://projects.blender.org/blender/blender/pulls/125788
Curve control points are shown quite small regardless of UI scale and
local zooming. This PR increases the minimum, regular, and maximum
sizes so that they are easier to see in all circumstances.
Pull Request: https://projects.blender.org/blender/blender/pulls/125786
Part of #118145.
Instead of storing a separately allocated array for each BVH node
for the temporary "color buffer" colors meant for mixing during a
stroke, just store an array the size of the whole mesh. Though this
is wasteful in terms of memory usage, plenty of other brushes store
mesh-sized arrays already, and it should make more sense as BVH
nodes get smaller too. After this commit, the BVH tree has no
specific code for color attributes anymore.
Pass a single span for both cloth brush init positions and the persistent
base array instead of switching between the two every time. Also only
retrieve the persistent base for base mesh sculpting since AFAIK that's
the only situation where it works properly anyway.
Use the same method for sharing code as elsewhere in the cloth brush:
translate the SubdivCCG and BMesh data structures to the equivalent
vertex indices used by meshes. This commit has to add some more code
for that because we only want to process visible vertices and there are
no factors being used for the typical filtering method used by brushes.
Use less or equal depth comparison for EEVEE and Overlay, since their
depths no longer match.
The main disadvantage of this approach is that material masked
transparency won't work anymore with overlays, so there's still another
(arguably not as bad) regression.
Pull Request: https://projects.blender.org/blender/blender/pulls/125722
The issue occurred when creating a keylist for an FCurve.
Keys outside the given range are ignored, but the call to `update_keyblocks`
still got the full range leading to the assertion.
The fix is to keep track of the index range for which bezt have been added
to the keycolumns. Note that we have to do that within the loop because
the FCurve might not be ordered (e.g. during transforms in the dope sheet)
Pull Request: https://projects.blender.org/blender/blender/pulls/125678
The crash was caused by attempting to write-back to the original data after it
has been removed (`add_data_block_items_writeback`).
This write-back is already disabled when applying a modifier, however the
corresponding flag was only set when applying modifiers on mesh objects. This
patch fixes this issue with two small changes:
* Rename `MOD_APPLY_TO_BASE_MESH` to `MOD_APPLY_TO_ORIGINAL` to make it more
generic.
* Pass this flag into modifier evaluation for other geometry types besides
meshes in `modifier_apply_obdata`.
Pull Request: https://projects.blender.org/blender/blender/pulls/125761
The Translate node leaves empty pixels at the boundary of the image.
This caused by incorrect clipping when sampling the pixels. To fix this,
we adjust COM_MemoryBuffer::read to read using Extend or Repeat using
BLI interpolation, then multiply that by a clipping rectangle. The
read_elem_sampled function is now defined in terms of the read method.
This also coincidentally fixes off by half a pixel error in nearest
neighbour interpolation.
Bake nodes are not supported in a repeat zone. They used to just output
default values when used in a repeat zone, but now they just pass-through
the inputs like an unbaked bake node would.
This makes the behavior more like one would expect when using the same
node group in and outside of a repeat zone that happens to have a bake
node inside (which is not even used).
The reordering of channels didn't work in the following case:
* in the Graph Editor
* Channels outside of a FCurve group
The reason for that was that any channels outside a group get added to a temp group
(sorting somehow depends on groups) and that was missing the `AGRP_EXPANDED_G`
flag. The reason this was only broken in the Graph Editor was that this flag is only used
for the graph editor. The `EXPANDED_AGRP` macro has a special case for that
(used towards the end of `rearrange_action_channels`).
Pull Request: https://projects.blender.org/blender/blender/pulls/125673
Part of #118145.
Since there are so many contiguous arrays used in the cloth brush,
this uses a different method for sharing code between the three
geometry types. For multires and BMesh, a per-node array of
vertex indices is created for the simulation calculation. Then the
results of the simulation are similarly transferred to the geometry.
This should result in more even work distribution between threads.
Without this a thread might encounter just disabled nodes. Though
I'm not sure there will be real-world impacts to this change.
The constraint loop is single threaded, so any computation we can move
elsewhere should improve performance. This also establishes a falloff
calculation function that does more than one value at a time.