Revision f94164d by Hans Goudey September 27, 2021, 18:22 (GMT) |
Geometry Nodes: Do not realize instances in the material assign node Only run the node once for every unique geometry set in the input's instance heirarchy. This can massively improve performance when there are many instances, but it will mean that the result is the same for every instance. For the previous behavior, a "Realize Instances" node can be used before this one. This node can be changed without versioning since the old material assign node was already deprecated and replaced. |
Revision 5d70a4d by Hans Goudey September 27, 2021, 18:04 (GMT) |
Geometry Nodes: Move output attribute names to a subpanel In a sub-panel it will be clearer that they are outputs, since they just look like more inputs now. Unfortunately it is not possible to make sub-panels display conditionally currently, so the output sub-panel will always be visible whether or not it is empty. Differential Revision: https://developer.blender.org/D12653 |
Revision 50b7253 by Brecht Van Lommel September 27, 2021, 17:49 (GMT) |
Cleanup: fix (harmless) uninitialized variable usage |
Revision e6aabca by Brecht Van Lommel September 27, 2021, 17:49 (GMT) |
Fix part of T91516: Cycles not rendering geometry nodes instances Part of the fix is by Jacques. This fixes the most obvious case, but it's still not clear how to deal with non-mesh geometry instances or how to handle motion blur for such instances. |
Revision 8da23fd by Alexander Gavrilov September 27, 2021, 17:45 (GMT) |
Constraints: change default Stretch To rotation type to Swing. As also explained in D6134, in most case of Stretch To usage in rigs, it is desirable to use swing rotation, either via the old method of pairing the constraint with Damped Track, or via the Swing rotation type introduced in 2.82. This is for instance true for all usages of the constraint in Rigify. The reason can be understood by realizing that unlike order- dependent euler rotations, swing is not biased to an axis, and isn't affected by gimbal lock effects at merely 90 degrees of rotation (it has only one singularity at 180 degrees). Thus it makes sense to change the default for newly created constraints to the Swing mode. This has no backward compatibility concerns except for old tutorials and rig generation scripts. Differential Revision: https://developer.blender.org/D12643 |
Revision 8967bcb by Aaron Carlisle September 27, 2021, 17:42 (GMT) |
Update RNA to user manual url mappings |
Revision 847d355 by Julian Eisel September 27, 2021, 16:52 (GMT) |
File/Asset Browser: Don't deselect other items when dragging Basically this enables the select-tweaking behavior as per the guidelines: https://wiki.blender.org/wiki/Human_Interface_Guidelines/Selection#Select-tweaking. We use this in most other other editors that allow selecting and dragging multiple items. But besides the consistency improvement, this is important if we want to support dragging multiple assets (or files) in future. We want to support this at least for dragging multiple assets into an asset catalog for the upcoming asset catalog UI. |
Revision c76ccd8 by Jacques Lucke September 27, 2021, 16:42 (GMT) |
Cleanup: incorrect null check in asset library Found by clang tidy (P2439). |
Revision 11bfbc3 by Hans Goudey September 27, 2021, 16:21 (GMT) |
Revision c75c08a by Hans Goudey September 27, 2021, 16:16 (GMT) |
Geometry Nodes: Distribute points once per instance reference With this commit, the distribute points on faces node runs only once for every unique mesh in its input. That means if there are 100 instances of the same mesh, it will only run once. This basically reverts rB84a4f2ae68d408301. The optimization there didn't end up being worth it in the end, since it complicates code quite a lot. It's also incompatible with this method of dealing with instances, and it breaks field evaluation for instances, where we would have to make sure to handle each instance transform properly otherwise, evaluating the field separately for every instance. Differential Revision: https://developer.blender.org/D12630 |
Revision efa9667 by Sybren A. Stüvel September 27, 2021, 16:14 (GMT) |
Cleanup: Asset catalogs, fix clang-tidy warning Change `auto &catalog` to `const auto &catalog`. No functional changes. |
Revision 10061ee by Sybren A. Stüvel September 27, 2021, 16:14 (GMT) |
Asset Catalogs: write catalogs to disk when saving the blend file The Asset Catalog Definition File is now saved whenever the blend file is saved. The location of the CDF depends on where the blend file is saved, and whether previously a CDF was already loaded, according to the following rules. The first matching rule wins: 1. Already loaded a CDF from disk? -> Always write to that file. 2. The directory containing the blend file has a `blender_assets.cats.txt` file? -> Merge with & write to that file. 3. The directory containing the blend file is part of an asset library, as per the user's preferences? -> Merge with & write to `${ASSET_LIBRARY_ROOT}/blender_assets.cats.txt` 4. Create a new file `blender_assets.cats.txt` next to the blend file. |
Revision aafbe11 by Sybren A. Stüvel September 27, 2021, 16:10 (GMT) |
BLI Path: add function `BLI_path_contains()` Add function `BLI_path_contains(container, containee)` that returns true if and only `container` contains `containee`. Paths are normalised and converted to native path separators before comparing. Relative paths are *not* made absolute, to simplify the function call; if this is necessary the caller has to do this conversion first. |
Revision 90aa0a5 by Sybren A. Stüvel September 27, 2021, 16:10 (GMT) |
BKE Preferences: find asset library containing a path Add `BKE_preferences_asset_library_containing_path(&U, some_path)` that finds the asset library that contains the given path. This is a simple linear search, returning the first asset library that matches. There is no smartness when it comes to nested asset libraries (like returning the library with the best-matching path), although this could be a useful feature to add later. |
Revision 6578db5 by Bastien Montagne September 27, 2021, 16:09 (GMT) |
Fix T91691: Selecting "Remove unused slots" in Materials panel removes slots that are assigned to particle systems/hair. `BKE_object_material_slot_used` would only check obdata usages, but particle settings can also (weirdly enough) use objects' material slots. So now, as its name suggests, `BKE_object_material_slot_used` does take an object as parameter, and also checks for potential slot usage from psys in the object. |
Revision 824733e by Julian Eisel September 27, 2021, 15:49 (GMT) |
Assets: Additions/fixes to the catalog system in preparation for the UI * Fixes missing update of the catalog tree when adding catalogs. * Adds iterators for the catalogs, needed for UI code. * Store catalog ID in the catalog tree items, needed for UI code. * Other smaller API additions for the UI. * Improve comments and smaller cleanups. New functions are covered with unit tests. Differential Revision: https://developer.blender.org/D12618 Reviewed by: Sybren St�vel |
Revision 5bea5e2 by Brecht Van Lommel September 27, 2021, 15:40 (GMT) |
Fix T91728: Cycles render artifacts with motion blur and object attributes |
Revision 0559971 by Jacques Lucke September 27, 2021, 15:35 (GMT) |
Geometry Nodes: add utility to process all instances separately This adds a new `GeometrySet::modify_geometry_sets` method that can be used to update each sub-geometry-set separately without making any instances real. Differential Revision: https://developer.blender.org/D12650 |
Revision 2189dfd by Patrick Mours September 27, 2021, 15:12 (GMT) |
Cycles: Rework OptiX visibility flags handling Before the visibility test against the visibility flags was performed in an any-hit program in OptiX (called `__anyhit__kernel_optix_visibility_test`), which was using the `__prim_visibility` array. This is not entirely correct however, since `__prim_visibility` is filled with the merged visibility flags of all objects that reference that primitive, so if one object uses different visibility flags than another object, but they both are instances of the same geometry, they would appear the same way. The reason that the any-hit program was used rather than the OptiX instance visibility mask is that the latter is currently limited to 8 bits only, which is not sufficient to contain all Cycles visibility flags (12 bits). To mostly fix the problem with multiple instances and different visibility flags, I changed things to use the OptiX instance visibility mask for a subset of the Cycles visibility flags (`PATH_RAY_CAMERA` to `PATH_RAY_VOLUME_SCATTER`, which fit into 8 bits) and only fall back to the visibility test any-hit program if that isn't enough (e.g. the ray visibility mask exceeds 8 bits or when using the built-in curves from OptiX, since the any-hit program is then also used to skip the curve endcaps). This may also improve performance in some cases, since by default OptiX can now perform the normal scene intersection trace calls entirely on RT cores without having to jump back to the SM on every hit to execute the any-hit program. Fixes T89801 Differential Revision: https://developer.blender.org/D12604 |
Revision 7270ba0 by Bastien Montagne September 27, 2021, 14:36 (GMT) |
Fix two issues with recent new Append code. * ID pointer returned by `wm_file_link_append_datablock_ex` was improperly extracted from `WMLinkAppendDataItem` before append step. * Code deleting linked IDs when their local matching version was re-used did not properly clear `LIB_TAG_DOIT` beforehand. |
|