Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-12-25Cleanup: use new c++ guarded allocator APIAaron Carlisle
API added in rBa3ad5abf2fe85d623f9e78fefc34e27bdc14632e
2021-12-25Cleanup: Use consistent order for custom data mesh masksHans Goudey
Loops come last in the struct's definition, use the same order when initializing the common masks in customdata.c (they were switched with the poly masks).
2021-12-24Nodes: Migrate bump shader node to cppAaron Carlisle
Needed for D13496
2021-12-24Cleanup: Remove misleading commentsHans Goudey
Most of these custom data layers weren't BMesh only, and the one that actually looks to be BMesh only has `BM` in its name.
2021-12-24Cleanup: Use vector instead of linked listHans Goudey
2021-12-24Fix T94322: add missing updates after recent refactorJacques Lucke
This was a regression in rB7e712b2d6a0d257d272ed35622b41d06274af8df.
2021-12-24Fix T94162: incorrect handling when there are multiple group outputsJacques Lucke
Typically a node group should only have a single Group Output node. However, currently Blender already supports having multiple group outputs, one of which is active. This wasn't handled correctly by geometry nodes. Differential Revision: https://developer.blender.org/D13611
2021-12-24Cleanup: remove unused button functionSybren A. Stüvel
rB05f900e3466b45a19e13bea6dd641e4f7b8b46e9 removed unused button functions, but since that commit the `uiDefIconTextButBit()` static function sits unused as well. It's now been removed.
2021-12-24Fix T94357: Node Ungroup operator copies current node treeHans Goudey
This was a mistake in rBfdc4a1a590d8befb1ff which copied the parent node tree into itself rather than accessing the node group's nodes.
2021-12-24Fix T94344: Incorrect size for edge vertices node outputHans Goudey
This looks like a copy and paste error from the original commit. The virtual array output used the number of mesh polygons instead of the number of edges.
2021-12-23Cleanup: Remove outdated commentHans Goudey
After rB01df48a983944ab3f8a, this comment no longer applies.
2021-12-23Cleanup: Move hair object type files to C++Hans Goudey
Differential Revision: https://developer.blender.org/D13657
2021-12-23Cleanup: Remove unused UI button definition functionsHans Goudey
These were part of the older buttons API that shouldn't be used in more places at this point. Most layouts should be built with the regular layout system API and RNA properties. This sort of button can still be created though, since these were just shortcuts anyway.
2021-12-23Cache File: use panels to organize UIKévin Dietrich
This adds interface panels to organize the Cache File UI parameters for modifiers and constraints into related components: velocity, time, and render procedural. Properties relating to the three aforementioned components are separated from `uiTemplateCacheFile` into their own functions (e.g. `uiTemplateCacheFileVelocity` for the velocity one), which are in turn called from the specific panel creation routines of the modifiers and constraints (for constraints, the functions are exposed to the RNA). `uiTemplateCacheFile` now only shows the properties for the file path, and in the case of constraints, the scale property. The properties that are only defined per modifier (like the velocity scale), are shown in the proper modifier layout panel if applicable. Reviewed By: sybren Differential Revision: https://developer.blender.org/D13652
2021-12-23Graph Slider Ops: Show error when no valid keys are foundChristoph Lendenfeld
When using graph slider operators like D9374 it showed a warning when no keys were selected. However since that stops the modal operation it should be an Error. Also the message was misleading since it could error for different reasons than stated. Reviewed by: Sybren A. Stüvel Differential Revision: https://developer.blender.org/D13655 Ref: D13655
2021-12-23Cleanup: remove BKE_animdata_driver_path_hackSybren A. Stüvel
The `BKE_animdata_driver_path_hack()` function has had almost no effect since rB51b796ff1528, and basically boils down to: ``` return base_path ? base_path : RNA_path_from_ID_to_property(ptr, prop); ``` Since `base_path` was `NULL` in the majority of cases, it's just been replaced by a direct call to `RNA_path_from_ID_to_property()`. The conditional now just appears in one remaining case. This relates to T91387. Reviewed By: mont29 Differential Revision: https://developer.blender.org/D13646
2021-12-23LibOverride: protect better against using on complex inter-dependency cases.Bastien Montagne
Do not allow 3DView operator to run on the liboverride of an instantiating Empty object. And tweak behavior in the Outliner operations too. Related to T94226. Note that this remains fairly exotic, bad idea not recommended cases, such complex inter-dependencies between different libraries inside a same liboverride hierarchy is just not possible to handle properly.
2021-12-23Fix missing type declaration compile errorKévin Dietrich
rBbd3bd776c893 broke compilation here due to missing type declaration for basic types as the source file is not including this header. In any case, it is the responsibility of header files to include headers for types used by value in function parameters or struct definitions.
2021-12-23Fix: Curve trim node test failureHans Goudey
Caused by 60c59d7d611dfd726. The position wasn't copied into the correct place on each spline. Somehow I didn't catch that in the tests I ran.
2021-12-23Fix T94232: No selection with set material node empty material listHans Goudey
If the input mesh had no materials already, the new material would become the only material on the mesh, meaning the material was added to all of the faces, instead of just the selected faces. The mesh primitive nodes in geometry nodes already add an empty slot by default, so this only affects outside geometry. The fix is just adding an empty slot before the new slot, so the non-selected material indices can still point to an empty slot. Differential Revision: https://developer.blender.org/D13654
2021-12-23Cleanup: Remove spline add_point method, refactor mesh to curve nodeHans Goudey
It's better to calculate the size of a spline before creating it, and this should simplify refactoring to a data structure that stores all point attribute contiguously (see T94193). The mesh to curve conversion is simplified slightly now, it creates the curve output after gathering all of the result vertex indices. This should be more efficient too, since it only grows an index vector for each spline, not a whole spline.
2021-12-23Nodes: Add link drag search support for map range nodeHans Goudey
Previously only the float version of the node was connected to. This adds connection operations for vector sockets, and exposes the "Steps" socket properly when it's selected.
2021-12-23Cleanup: Return earlyHans Goudey
2021-12-23Fix: Extra space at the front of "Sample Curve" node nameHans Goudey
2021-12-23Fix: Wrong node link drag search menu items for attribute statisticHans Goudey
Caused by capturing local variables by reference in a function that outlives the scope it was created in. Also use a more generic function for the first two inputs.
2021-12-23Fix: Potential use after scope in curve to mesh nodeHans Goudey
I don't think this has been visible, since I only ran into it after changing other code that affected this. However, some attributes can keep a reference to the source component to use when tagging caches dirty (like the position attribute tagging the normals dirty). Here, the component was created inside a function, then the attributes were used afterwards. Also add some comments warning about this in the header file.
2021-12-22Fix: Large stack allocation in compositorMichael
When COM_EXPORT_GRAPHVIZ is enabled, DebugInfo::graphviz uses a char[1000000] as local variable. When this function is called this is allocated on the stack, which has a size of just 1MB on mac and may cause a stack overflow. This patch allocates the memory on the heap and frees the memory at the end of the function. Reviewed By: LazyDodo Differential Revision: https://developer.blender.org/D13628
2021-12-22Cleanup: Avoid adding points to splines sequentiallyHans Goudey
This should be faster because it avoids reallocating the internal vectors when the size is known beforehand, but it may also help a potential refactor to a different data structure (see T94193).
2021-12-22Fix: Missing update when toggling node muteHans Goudey
Toggling node mute doesn't cause node trees to reevaluate after rB7e712b2d6a0d257. Toggling a link mute still works though. To fix this, the operator tags the node and node with a new update tag function (that uses an existing tag internally). Differential Revision: https://developer.blender.org/D13653
2021-12-22Fix T93408: Snap performance regression at high poll rateGermano Cavalcante
Caused by {rBfba9cd019f21f29bad1a6f3713370c5172dbc97f}. The snap timer was accidentally modified and damaged.
2021-12-22Nodes: Remove unnecessary node tree socket taggingHans Goudey
`SOCK_IN_USE` is now set in `update_socket_used_tags` in `node_tree_update.cc` when a node tree is changed. It doesn't need to run every single redraw. Removing this results in a small speedup of 0.4 ms when drawing a tree with about 4000 nodes (from about 70 ms total). Differential Revision: https://developer.blender.org/D13645
2021-12-22Mesh: Parallelize bounding box calculation (WIP)Hans Goudey
This replaces the single-threaded calculation of mesh min and max positions with a `parallel_reduce` loop. Since the bounding box of a mesh is retrieved quite often (at the end of each evaluation, currently 2(?!) times when leaving edit mode, etc.), this makes for a quite noticeable speedup actually. On my Ryzen 3700x and a 4.2 million vertex mesh, I observed a 4.4x performance increase, from 14 ms to 4.4 ms. I added some methods to `float3` so they would be inlined, but they're also a nice addition, since they're used often anyway. Differential Revision: https://developer.blender.org/D13572
2021-12-22Cleanup: Remove debug print.Bastien Montagne
2021-12-22Fix (unreported) potential bug in collections parenting update code.Bastien Montagne
Own mistake in rB2ef192a55b2c. Did not seem to have any visible effect though...
2021-12-22Cleanup: Use `LISTBASE_FOREACH_` macros.Bastien Montagne
2021-12-22Fix T93799: Outliner: Remaping objects could result in duplicates in a ↵Bastien Montagne
collection. Fix is similar to how CollectionObject with NULL object pointers are handled. Using one of the 'free' pad bytes in Object_Runtime struct instead of a gset (or other external way to detect object duplicates), as this is several times faster. NOTE: This makes remapping slightly slower again (adds 10 extra seconds to file case in T94059). General improvements of remapping time complexity, especially when remapping a lot of IDs at once, is a separate topic currently investigated in D13615.
2021-12-22Fix part of T93799: Outliner: Remap Users crash (for `ID Type` `Object`).Bastien Montagne
This commit fixes the crash itself, however this can still lead to a same collection 'owning' the same object several time. Issue here was a bad assumption in layer resync code, that would lead to removing valid objects from the viewlayer's `object_bases_hash` in `BKE_layer_collection_sync`, when deleting no-more-used bases, in case of bases duplicate.
2021-12-22Fix: Build issue on 32 bit archsRay Molenkamp
The cast to size_t leads to a build issue on 32 bit archs. cursor_delim_type_utf8 expects an int so an additional cast to size_t is not required. Reported by user frispete on devtalk.
2021-12-22Fix T93999: GPencil Box tool allows decreasing subdiv, but not increaseAntonio Vazquez
The problem was the number of points for each edge of the box was wrong and the wheelmouse effect was anulated. Also fixed the value displayed in the status bar to keep consistency with subdivision value. Reviewed By: lichtwerk Maniphest Tasks: T93999 Differential Revision: https://developer.blender.org/D1363
2021-12-22Nodes: Improve node tree copy performanceHans Goudey
When copying a full node tree, we can avoid an O(n^2) loop finding a unique name for every node if we assume they already have unique names. That is a reasonable assumption, since unique names are verified elsewhere when adding a new node. Copying a node tree with about 4000 nodes took 42 ms before, now it takes 6 ms. Differential Revision: https://developer.blender.org/D13644
2021-12-22Nodes: Refactor to remove node and socket "new" pointersHans Goudey
These pointers point to the new nodes when duplicating, and their even used to point to "original" nodes for "localized" trees. They're just a bad design decision that make code confusing and buggy. Instead, node copy functions now optionally add to a map of old to new socket pointers. The case where the compositor abused these pointers as "original" pointers are handled by looking up the string node names. Differential Revision: https://developer.blender.org/D13518
2021-12-22Geometry Nodes: improve multi socket handling in evaluatorJacques Lucke
Previously, the values passed to a multi-input socket were stored in the order that they arrived in. Then, when the values are accessed, they are sorted depending on the link order. Now, the ordering is determined in the beginning before execution starts. Every value is assigned to the right index directly, avoiding the sort in the end. This makes the ordering more explicit.
2021-12-21Cleanup: Clang tidy, restore alphabetical sortingHans Goudey
2021-12-21Fix T94191: correct (time) translation headers not showing DeltaXGermano Cavalcante
Caused by {rBb0d9e6797fb8} For the header (both Graph Editor case in general `headerTranslation` as well as `headerTimeTranslate`) we are interested in deltas values (not absolute values). Since culprit commit, `snapFrameTransform` was not working with deltas anymore, but we have to compensate for this. For the Graph Editor, this only worked "by accident" in rB7192e57d63a5, since `ival` is still zero at this point. So now, reacquire the delta right after the snap operation. Also use a more appropriate center value in the translate operator. Maniphest Tasks: T94191 Differential Revision: https://developer.blender.org/D13641
2021-12-21Cleanup: use BKE_pose_is_layer_visible in more placesPhilipp Oeser
This was added in rBd13970de8627, now use in more places.
2021-12-21Nodes: Improve performance when freeing a node treeHans Goudey
This commit makes freeing a node tree about 25 to 30 times faster. Freeing a node tree happens whenever it is edited. Freeing a node tree with about 4000 nodes went from 30-50ms to about 2 ms. This was so slow before because for every node that was freed when freeing the node tree, `node_free_node` looped over all other nodes to detach frames, and then looped over all links to remove any links connected to the node. That was all pointless work because everything else is about to be freed anyway. Instead, move that "detaching" behavior to the dedicated function for removing a single node, and to the "local" version of the free function to be safe, since I know less about what that version expects. Differential Revision: https://developer.blender.org/D13636
2021-12-21Fix T93960: Asset Catalogs I/O fails with unicode file paths on WindowsSybren A. Stüvel
On Windows, encode file paths as UTF-16 before trying to open the file for reading/writing. This introduces a new class `blender::fstream`, which wraps `std::fstream` and provides this UTF-16 encoding. This class should also be used in other areas, like the Alembic importer/exporter. Manifest Task: T93960 Reviewed By: JacquesLucke Differential Revision: https://developer.blender.org/D13633
2021-12-21Assets: log message when catalog definitions cannot be loadedSybren A. Stüvel
Log a message (via `CLOG`) when asset catalog definitions cannot be loaded. Reviewed by @jacqueslucke in D13633
2021-12-21Nodes: refactor node tree update handlingJacques Lucke
Goals of this refactor: * More unified approach to updating everything that needs to be updated after a change in a node tree. * The updates should happen in the correct order and quadratic or worse algorithms should be avoided. * Improve detection of changes to the output to avoid tagging the depsgraph when it's not necessary. * Move towards a more declarative style of defining nodes by having a more centralized update procedure. The refactor consists of two main parts: * Node tree tagging and update refactor. * Generally, when changes are done to a node tree, it is tagged dirty until a global update function is called that updates everything in the correct order. * The tagging is more fine-grained compared to before, to allow for more precise depsgraph update tagging. * Depsgraph changes. * The shading specific depsgraph node for node trees as been removed. * Instead, there is a new `NTREE_OUTPUT` depsgrap node, which is only tagged when the output of the node tree changed (e.g. the Group Output or Material Output node). * The copy-on-write relation from node trees to the data block they are embedded in is now non-flushing. This avoids e.g. triggering a material update after the shader node tree changed in unrelated ways. Instead the material has a flushing relation to the new `NTREE_OUTPUT` node now. * The depsgraph no longer reports data block changes through to cycles through `Depsgraph.updates` when only the node tree changed in ways that do not affect the output. Avoiding unnecessary updates seems to work well for geometry nodes and cycles. The situation is a bit worse when there are drivers on the node tree, but that could potentially be improved separately in the future. Avoiding updates in eevee and the compositor is more tricky, but also less urgent. * Eevee updates are triggered by calling `DRW_notify_view_update` in `ED_render_view3d_update` indirectly from `DEG_editors_update`. * Compositor updates are triggered by `ED_node_composite_job` in `node_area_refresh`. This is triggered by calling `ED_area_tag_refresh` in `node_area_listener`. Removing updates always has the risk of breaking some dependency that no one was aware of. It's not unlikely that this will happen here as well. Adding back missing updates should be quite a bit easier than getting rid of unnecessary updates though. Differential Revision: https://developer.blender.org/D13246
2021-12-21Cleanup: clang formatPhilipp Oeser
Missed in rB7c9e4099854a, sorry.