For a while now OptiX had support for 28-bits of instance IDs, instead of the initial 24-bits (see also
value reported by OPTIX_DEVICE_PROPERTY_LIMIT_MAX_INSTANCE_ID). This change makes use of
that and also adds an error reported when the number of instances an OptiX acceleration structure is
created with goes beyond the limit, to make this clear instead of just rendering an image with artifacts.
Manifest Tasks: T81431
There is no need to first copy weights to a separate array,
or create the data layer if it doesn't exist. The threaded
code can retrieve the weight directly from the layer.
Differential Revision: https://developer.blender.org/D10015
While using the Sample Weight tool in Weight Paint mode, user eyedropper mouse cursor.
Differential Revision: https://developer.blender.org/D9431
Reviewed by Pablo Vazquez
While using the Sample Weight tool in Weight Paint mode, show weight value in tool header.
Differential Revision: https://developer.blender.org/D9432
Reviewed by Pablo Vazquez
Instances are created with an "index" parameter used for persistence over
time through animation. Currently the geometry nodes instancer passes
the index in the array for this value, but the arrays created by the
"Point Distribution" node aren't necessarily stable in this way when
the input mesh is deformed. In D9832 we already mostly solved this
problem with an `id` attribute. The solution here is to create instances
with this attribute as well.
It's important to note that deforming the instanced points *after*
distribution will usually be a better solution for this problem. This
solution is likely still important though.
Differential Revision: https://developer.blender.org/D10024
The hair mirroring code seems to expect that hair is emitted from faces.
The PE_mirror_x contains the following expression: mirrorfaces[pa->num * 2].
This only makes sense when pa->num is a face index.
The simplest short term solution is to disable the mirror operator when
the particles haven't been emitted from faces.
Diffferential Revision: https://developer.blender.org/D10002
Changing which node group a group node references needs a depsgraph
relations update in some cases.
Differential Revision: https://developer.blender.org/D10018
- Use the name "Point Cloud" instead of "Pointcloud"
- Fix a typo in UV_OT_smart_project.
- Use the name "Install Light" to for the installation
operator for MatCaps, HDRIs, and Studio Lights.
Fixes T83585, T65291, and T54921
Differential Revision: https://developer.blender.org/D9867
BPY_context_dict_clear_members_array used PyDict_DelItemString
which raised & cleared the exception when the key didn't exist.
Even though setting/clearing the exception is supported,
it's worth avoiding where possible as it adds some overhead as well as
overwriting the previous error which can free PyObject's which are
unrelated to the code being executed.
Possible fix for T82552, crashing on Windows when setting the exception.
Since the introduction in rB2221389d6e8e, baking to vertex colors would
still check for the existence of a valid UVMap (as if baking to image
textures).
Now check for vertex colors instead if target is
R_BAKE_TARGET_VERTEX_COLORS.
Maniphest Tasks: T84416
Differential Revision: https://developer.blender.org/D10006
Since there is a specific icon to represent the 3D cursor it makes sense
to add it to the RNA struct. This struct's icon is only displayed in the
Data API section of the outliner.
When using "Make Links"->"Materials" regular materials could be linked
onto grease pencil objects. This caused a number of issues.
The fix changes the `allow_make_links_data` function to make sure that
if one object is of type `OB_GPENCIL`, the other has to be aswell.
Reviewed By: antoniov
Maniphest Tasks: T84420
Differential Revision: https://developer.blender.org/D10014
'Caused'/revealed by rBd29a720c45e5: Operators that fully re-create the
mesh would previously rely on `sculpt_update_object` called from update
code to get required sculpt-specific data layers re-added to the new
mesh.
Now instead put all code adding data to orig mesh for sculpt purpose
into a new util function (`BKE_sculpt_ensure_orig_mesh_data`), and call
that function when entering sculpt mode, and from voxel remesher code.
This is contonuing effort to more clearly separate orig data from evaluated
data handling/usage in sculpt code.
TODO: there are likely other code paths that would need to call that
new function?
Reviewers: @sergey, @pablodp606
Subscribers:
Note that this is fairly fragile still, especially in cases like paint
cureve undo, which actually does not use context in most cases (and can
be called with a NULL context), but do need it in one case. This will
need a proper rework at some point.
Rename it to mark it is only for `encode` callbacks, fix `encode`
callback of text undo to early fail in case it gets a NULL context, add
an assert to `BKE_undosys_step_push_with_type` that context is not NULL
when undotype requires a valid one.
Note that in practice this should not change anything, currently it
seems that we always get a valid context in
`BKE_undosys_step_push_with_type`?
Steps to reproduce were:
* Drag object icon from the Outliner into the 3D view (or an object asset from
the Asset Browser)
* Open the "Adjust Last Operation" panel
* Edit options in there - the object would move to the mouse location
The same issue happens with collection instance and object data adding (e.g.
via drag & drop). This patch addresses them too.
The operator used the event state stored in the window. This shouldn't be
accessed from the operator execute callback generally which happened here.
Especially not if the operator supports editing properties.
confirmation
Deleting keyframes in the dopesheet or graph editor always required
confirmation, even if used ouside of the "Delete" menus.
Now add a "confirm" option [same as for deleting objects], which can be
disabled for immediate keyframe deletion.
This will also change the default behavior and bring this in line with
how object deletion works so there is one shortcut for bringing up the
menu/confirmation and another shortcut to delete immediately without
requiring confirmation / another click:
- Blender Default keymap: "X" for menu, "Del" for immediate
- Industry Compatible: "Backspace" for menu, "Del" for immediate
Maniphest Tasks: T70316
Differential Revision: https://developer.blender.org/D9651
The issue is that `UI_GetThemeColorBlendShade4fv()` creates a color
with alpha, but there is not any background underneath to blend in with.
The solution is just to draw an opaque background first, which also
halves the number of rects to draw. Note that the brighter rows get
very slightly darker after this change.
Differential Revision: https://developer.blender.org/D9947
This was caused when the BKE_pbvh_draw_cb function was used with
update_only_visible set to false. In that case, all nodes with the flag
were updating, but the update flag was only cleared for visible nodes.
This was causing constant updates per redraw in no visible nodes until
they enter the view frustum and their flag was cleared.
In order to fix this and prevent it from happening again:
- Updating the buffers, flushing the updates and clearing the flags are
now part of the same function. It does not make sense to do these in
separate places.
- The BKE_pbvh_draw_cb function was refactored so the
pbvh_update_draw_buffers is only called once. It should now be easier to
understand what the function does when it is used to update only visible
nodes or all nodes.
Reviewed By: mont29
Maniphest Tasks: T79146
Differential Revision: https://developer.blender.org/D9935
The issue can be simply resolved by moving the primitives and plus
icons slightly. They still bump up against the top and bottom of the
header but it looks much better now.
Rendering on the CPU uses the Embree BVH layout, whether the OptiX denoiser is enabled or not.
This means the "build_bvh" function gets a "BVHEmbree" object to fill and not a "BVHMulti" as it
was assuming before, which caused crashes due to memory geting overwritten incorrectly. This
fixes that by redirecting Embree BVH builds to the Embree device.
Manifest Tasks: T83925
Changing the geometry in the current scene caused the primitive offsets for all geometry to
change, but the values would not be updated in all bottom-level BVH structures. Rendering
artifacts and crashes where the result. This fixes that by ensuring all BVH structures are
updated when the primitive offsets change.
Since the introduction in rB4de7c0c3105a, the option is only used in the
compositor, it has no effect elsewhere [texture nodes, shader nodes].
Now only show the option for the compositor.
Maniphest Tasks: T84389
Differential Revision: https://developer.blender.org/D10005
{D9211} introduced pre-multiplying the color for the keying node. This
pre-multiplication should also be done by other keying nodes and should be
the default operation for alpha node.
This patch will change the logic of keying nodes (Cryptomatte Node,
Channel Matte, Chroma Matte, Color Matte, Difference Matte, Distance
Matte, Luminance Matte) and breaks old files.
The Set alpha node has a mode parameter. This parameter changes
the logic to `Apply Mask` the alpha on the RGBA channels of the input color
or only replace the alpha channel (old behavior).
The replace mode is automatically set for older files. When adding
new files the the multiply mode is set.
Reviewed By: Sergey Sharybin
Differential Revision: https://developer.blender.org/D9630