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
2022-09-05IDMAnagement: Add owner ID pointer to embedded ones.Bastien Montagne
Add a dedicated `owner_id` pointer to ID types that can be embedded (Collections and NodeTrees), and modify slightly come code to make handling those more safe and consistent. This implements first part of T69169. Reviewed By: brecht Differential Revision: https://developer.blender.org/D15838
2022-09-03Cleanup: Refactor node add reroute operatorHans Goudey
Use C++ Map that supports the duplication natively. Use vectors instead of linked lists, and adjust naming. Also remove combination of reroutes for input sockets, which doesn't make sense since a reroute isn't allowed to combine multiple input links into one output.
2022-09-03Cleanup: Use separate variables for node socket locationsHans Goudey
This will help if the locations are moved out of DNA and require slightly more complicated access.
2022-09-02Cleanup: Remove unnecessary struct keyword usage in node editorHans Goudey
2022-09-02Cleanup: Use C++ vector types in node editorHans Goudey
2022-09-01Node Editor: Visual tweaks to node linksLeon Schittek
Several visual tweaks to node links to make them overall fit in better with the look of the node editor: - Change the link thickness with the zoom level to a certain degree. - Remove the fuzziness of the node link and its shadow/outline. - The link outline color can now be made transparent. - Add circles at the end of dragged links when connecting to sockets. - Improve the banding of the color interpolation along the link. - Adjust the spacing of dashes along straight node links. Reviewed By: Pablo Vazquez, Hans Goudey Differential Revision: http://developer.blender.org/D15036
2022-08-29I18n: translate newly created node group socketsDamien Picard
Translate: - new group socket names - default names Input and Output - on connecting a link from another node - new geometry nodes input and output socket names Reviewed By: mont29 Differential Revision: https://developer.blender.org/D15763
2022-08-24Fix T100590: Crash when changing active image texture nodePhilipp Oeser
Mistake in own rBc76d7f7bde35. Happened when no image was set in the Image Editor already (which is now checked for). Maniphest Tasks: T100590 Differential Revision: https://developer.blender.org/D15761
2022-08-23Fix T99493: better syncing between Node Editor and Image EditorPhilipp Oeser
Since {rBb0cb0a785475}, changing the active texture in the Node Editor would also change the current image in the Image Editor. While this was an overall improvement, this was not desired when the image currently looked at was a `Render Result` or a `Viewer Node` (artists usually want to keep focus on these). With this patch, syncing the active texture change from the Node Editor to the Image Editor will now only happen if the Image Editor's current image is not a Render Result or a Viewer Node. NOTE: Syncing the active paint slot to the Image Editor still happens (even if the Image Editor's current image is not a Render Result or a Viewer Node), behavior was not changed since this is a much more explicit action while texture painting and probably desired in that case. Maniphest Tasks: T99493 Differential Revision: https://developer.blender.org/D15749
2022-08-21Fix T100430: Restore larger node socket snap hitboxLeon Schittek
Restore old hitbox for connecting links to sockets. Commit rBd9d97db018d2 improved the node socket snapping when nodes are close together by decreasing the tolerance around the cursor when checking for nodes in front, that might occlude the socket. In doing so it also reduced the hitbox of the node socket itself that extended outside of the node. This commit restores the old node socket hitbox while keeping the improved behavior when nodes are close together with the following changes: 1) When looking for the socket under the cursor, iterate through the nodes front to back, which prioritizes node sockets in the foreground. 2) Instead of checking for another node underneath the cursor it checks if the socket is actually occluded by another node. The way the occlusion test for sockets is tweaked you can now connect to sockets that are only partially occluded, which is a bit more forgiving than previously. Reviewed By: Hans Goudey Differential Revision: http://developer.blender.org/D15731
2022-07-27Nodes: Allow using escape key to exit node resizingHans Goudey
2022-06-03Compositor: add pre/post/cancel handlers and background job infoPhilipp Oeser
Main motivation is from T54314 where there was no way to read from a Viewer image datablock after the compositor has run. The only solution there was to do a full rerender (which obviously takes much longer). Adding a handler avoids having to rerender. This uses new syntax from rBf4456a4d3c97 and also adds "COMPOSITE" as a job type that can be queried by `bpy.app.is_job_running`. NOTE: there is another issue when multiple viewers are used and these get active via RNA (compo execution is not triggered there yet -- unlike when a viewer is selected in the Editor -- this is an issue of `ED_node_set_active` vs. only `nodeSetActive`, but this will be tackled separately) Maniphest Tasks: T54314 Differential Revision: https://developer.blender.org/D15078
2022-05-25Cleanup: spelling, unbalanced doxy sectionsCampbell Barton
2022-05-11Cleanup: use doxy sections for node_edit.ccCampbell Barton
2022-04-18Fix T97002: Preserve multi socket link orderLeon Schittek
Preserve multi socket link order when copying nodes or adding a new group input sockets by linking directly to multi inputs from the group input node's extension socket. This is done by also copying the `multi_input_socket_index` when the new links are created by copying existing or temporary links. Reviewed By: Hans Goudey Differential Revision: http://developer.blender.org/D14535
2022-04-05WM: avoid unnecessary undo step creation when duplicatingPratik Borhade
Calling duplicate operation without selecting anything registers an undo step. If nothing is selected (keyframe, curve, object, etc.), cancel the operator execution to prevent undo push. Patch improves following operators: - ACTION_OT_duplicate - GPENCIL_OT_duplicate - GRAPH_OT_duplicate - MESH_OT_duplicate - NODE_OT_duplicate - OBJECT_OT_duplicate Reviewed By: campbellbarton Ref D14511
2022-03-22Cleanup: refactor passing of color management settings for image saveBrecht Van Lommel
Make a copy of ImageFormatData that contains the effective color management settings, and pass that along to the various functions. This will make it possible to add more complex logic later. For compositing nodes, passing along view and display settings through many functions made it harder to add additional settings, so just get those from the scene now. Differential Revision: https://developer.blender.org/D14401
2022-03-18Fix resizing nodes not respecting the drag-startCampbell Barton
Resizing nodes used the cursor location when the event was triggered instead of the drag-start, harmless but means the drag location isn't under the cursor especially with a high drag threshold. Noticed when investigating other drag issues, unrelated to recent changes to drag behavior.
2022-03-14Auto-generate RNA-structs declarations in `RNA_prototypes.h`Julian Eisel
So far it was needed to declare a new RNA struct to `RNA_access.h` manually. Since 9b298cf3dbec we generate a `RNA_prototypes.h` for RNA property declarations. Now this also includes the RNA struct declarations, so they don't have to be added manually anymore. Differential Revision: https://developer.blender.org/D13862 Reviewed by: brecht, campbellbarton
2022-03-11Fix out of order event handling when calling operators from gizmosCampbell Barton
Activating a gizmo used the windows eventstate which may have values newer than the event used to activate the gizmo. This meant transforms check for the key that activated transform could be incorrect. Support passing an event when calling operators to avoid this problem.
2022-03-09Event System: drag events no longer default to the drag start locationCampbell Barton
This avoids transform jumping which is a problem when tweaking values a small amount. A fix for T40549 was made box-select used the location when the key was pressed. While it's important for box-select or any operator where it's expected the drag-start location is used, this is only needed in some cases. Since the event stores the click location and the current location, no longer overwrite the events real location. Operators that depend on using the drag-start can use this location if they need. In some cases the region relative cursor location (Event.mval) now needs to be calculated based on the click location. - Added `WM_event_drag_start_mval` for convenient access to the region relative drag-start location (for drag events). - Added `WM_event_drag_start_xy` for window relative coordinates. - Added Python property Event.mouse_prev_click_x/y Resolves T93599. Reviewed By: Severin Ref D14213
2022-03-01UI: Fix multi input socket outline and highlightLeon Schittek
Small fixes to the drawing of multi input sockets: - Make the outline thickness consistent with normal node sockets, independent from the screen DPI. - Only highlight multi input sockets when they are actually selected. - Skip selected multi inputs when drawing normal selected sockets. Differential Revision: https://developer.blender.org/D14192
2022-02-18Fix T87829, T95331: Issues when nodes too close togetherDominik Fill
This patch aims to fix the issues presented in T87829 and T95331, namely precision issues while connecting two nodes when being too close together in the node editor editors, in a few cases even resulting in the complete inability to connect nodes. Sockets are found by intersecting a padded rect around the cursor with the nodes' sockets' location. That creates ambiguities, as it's possible for the padded rect to intersect with the wrong node, as the distance between two nodes is smaller than the rect is padded. The fix in this patch is checking against an unpadded rectangle in visible_node(). Differential Revision: https://developer.blender.org/D14122
2022-02-11File headers: SPDX License migrationCampbell Barton
Use a shorter/simpler license convention, stops the header taking so much space. Follow the SPDX license specification: https://spdx.org/licenses - C/C++/objc/objc++ - Python - Shell Scripts - CMake, GNUmakefile While most of the source tree has been included - `./extern/` was left out. - `./intern/cycles` & `./intern/atomic` are also excluded because they use different header conventions. doc/license/SPDX-license-identifiers.txt has been added to list SPDX all used identifiers. See P2788 for the script that automated these edits. Reviewed By: brecht, mont29, sergey Ref D14069
2022-02-10Fix T95664: missing update after changing active output nodeJacques Lucke
2022-02-07Fix: missing null checkJacques Lucke
This fixes https://github.com/JacquesLucke/animation_nodes/issues/1827.
2022-01-20Cleanup: Move node editor files to proper namespaceHans Goudey
This commit moves code in all node editor files to the `blender::ed::space_node` namespace, except for C API functions defined in `ED_node.h`, which can only be moved once all areas calling them are moved to C++. The change is fairly straightforward, I just moved a couple of "ED_" code blocks around to make the namespace more contiguous, and there's the method for adding a pointer to a struct in a C++ namespace in DNA. Differential Revision: https://developer.blender.org/D13871
2022-01-18Cleanup: Use references, LISTBASE_FOREACH macroHans Goudey
2022-01-18Cleanup: Make node editor functions privateHans Goudey
These operations (sorting and selecting all nodes) should generally be handled by the node editor and not outside code. They were not called outside of the node editor, so they can be moved to the editor's `intern` header.
2022-01-11Cleanup: Remove unused "active ID" node flagHans Goudey
The value of this flag was only retrieved in `nodeGetActiveID`, which wasn't used anywhere. Other than that, the `NODE_ACTIVE_ID` and related functions seem to come from the Blender internal renderer. Differential Revision: https://developer.blender.org/D13770
2021-12-25Cleanup: use new c++ guarded allocator APIAaron Carlisle
API added in rBa3ad5abf2fe85d623f9e78fefc34e27bdc14632e
2021-12-24Fix T94322: add missing updates after recent refactorJacques Lucke
This was a regression in rB7e712b2d6a0d257d272ed35622b41d06274af8df.
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-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-21Cleanup: Clang tidy, restore alphabetical sortingHans Goudey
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-08Cleanup: move public doc-strings into headers for 'editors'Campbell Barton
Ref T92709
2021-12-07Cleanup: Use C++ types for multi input socket sortingHans Goudey
The algorithm used is still quite inefficient, but at least the code is easier to read and a little bit simpler now.
2021-12-06Cleanup: Remove unnecessary node type callbacks for drawingHans Goudey
Currently there are a few callbacks on `bNodeType` that do the same thing for every node type except reroutes and frame nodes. Having a callback for basic things complicates code and makes it harder to understand, and reroutes and frames are special cases in larger way. Arguably frame nodes shouldn't even be drawn like regular nodes, given that it adds a case of O(N^2) looping through all nodes. "Unrolling" the callbacks makes it easier to see what's happening, and therefore easier to optimize. Differential Revision: https://developer.blender.org/D13463
2021-12-04Cleanup: Use references in node editor, other improvementsHans Goudey
This helps to tell when a pointer is expected to be null, and avoid overly verbose code when dereferencing. This commit also includes a few other cleanups in this area: - Use const in a few places - Use `float2` instead of `float[2]` - Remove some unnecessary includes and old code The change can be continued further in the future.
2021-12-03Cleanup: Use typed enum for node resize directionHans Goudey
2021-11-17Cleanup: use same function for updating internal links for all nodesJacques Lucke
Previously, node types had a callback that creates internal links. Pretty much all nodes used the same callback though. The exceptions are the reroute node (which probably shouldn't be mutable anyway) and some input/output nodes that are not mutable. Removing the callback helps with D13246, because it makes it easier to reason about which internal links are created and when they change. In the future, the internal links should be part of the node declaration.
2021-11-17Cleanup: Use bool instead of intHans Goudey
2021-11-12Cleanup: Move remaning node editor files to C++Hans Goudey
Differential Revision: https://developer.blender.org/D13200
2021-08-31Texture Paint: sync changing active texture in the Node Editor to thePhilipp Oeser
Image Editor When changing to another texture paint slot, the texture displayed in the viewport changes accordingly (as well as the image displayed in the Image Editor). When changing the active texture in the Node Editor though, only the texture displayed in the viewport changes. This was mentioned in T88788 and I am not 100% sure this is desired in all scenarios (or at all), it should be seen in tandem of D11497. This change makes it so that the Image Editor changes to the image we changed to in the Node Editor (keeping them in sync). If this is not desired in all cases, this could be made an option. ref T88788 ref D11496 ref D11497 Maniphest Tasks: T88788 Differential Revision: https://developer.blender.org/D11498
2021-08-31Texture Paint: sync changing active texture in the node editor to thePhilipp Oeser
active paint slot When changing to another texture paint slot, the texture displayed in the viewport changes accordingly (as well as the image displayed in the Image Editor). When changing the active texture in the Node Editor though, only the texture displayed in the viewport changes. This _can_ be confusing because you can end up painting on a texture that you are not looking at in the viewport (so you dont have any feedback whatsoever). Not 100% sure this is desired in all scenarios, but this change makes it so that the active paint slot changes to the one that uses the texture we chaged to in the Node Editor (keeping them in sync). If this is not desired in all cases, this could be made an option. ref T88788 ref D11496 Maniphest Tasks: T88788 Differential Revision: https://developer.blender.org/D11497
2021-08-25Fix T90248: missing depsgraph update tag for node groupJacques Lucke
The code assumed that when a node group is is at the highest level in the node editor, then it is embedded into another data block and can't be referenced by other node groups. This is true for shader and compositor nodes, but not for geometry nodes.
2021-07-21Cleanup: replace NB with NOTE in commentsCampbell Barton
2021-07-15Fix: crash when creating new node linksJacques Lucke
This was a regression in rBc27ef1e9e8e663e02173e518c1e669e9845b3d1f.
2021-07-15Geometry Nodes: dim links whose start and end sockets are not visibleJacques Lucke
This makes node trees with long links that cross other nodes easier to work with. Dimmed links will be ignored by various modal operators like cut and reroute insertion. Differential Revision: https://developer.blender.org/D11813