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-07-05Cleanup: spelling, punctuationCampbell Barton
2021-07-05Geometry Nodes: new Viewer nodeJacques Lucke
This adds a viewer node similar to the one in the compositor. The icon in the headers of nodes is removed because it served the same purpose and is not necessary anymore. Node outputs can be connected to the active viewer using ctrl+shift+LMB, just like in the compositor. Right now this collides with the shortcut used in the node wrangler addon, which will be changed separately. As of now, the viewed geometry is only visible in the spreadsheet. Viewport visualization will be added separately. There are a couple of benefits of using a viewer node compared to the old approach with the icon in the node header: * Better support for nodes that have more than one geometry output. * It's more consistent with the compositor. * If attributes become decoupled from geometry in the future, the viewer can have a separate input for the attribute to visualize. * The viewer node could potentially have visualization settings. * Allows to keep "visualization points" around by having multiple viewer nodes. * Less visual clutter in node headers. Differential Revision: https://developer.blender.org/D11470
2021-07-05BMesh: remove redundant mesh-backups from EDBM_op_* APICampbell Barton
Using BMesh operators through the edit-mesh API created a full copy of the mesh so it was possible to restore the mesh in case one of the operators raised an error. Remove support for automatic backup/restore from the EDBM_op_* API's as it adds significant overhead and was rarely used. Operators that need this can use the BMBackup API to backup & restore the mesh in case of failure. Add warning levels to BMO_error_raise so operators can report problems without it being interpreted as a request to cancel the operation. For high-poly meshes creating and freeing a full copy is an expensive operation, removing this gives a speedup of ~1.77x for most operators except for "connect_verts" / "connect_vert_pair" which still uses this functionality.
2021-07-03Cleanup: consistent use of tags: NOTE/TODO/FIXME/XXXCampbell Barton
Also use doxy style function reference `#` prefix chars when referencing identifiers.
2021-07-02Cleanup: spelling in commentsCampbell Barton
2021-06-30Cleanup: variable naming for texture/material SocketPropertyTypePhilipp Oeser
Copy-Pasting error in rB3025c348253a Maniphest Tasks: T88701 Differential Revision: https://developer.blender.org/D11755
2021-06-30Cleanup: use const arguments for accessor functionsCampbell Barton
2021-06-28Functions: improve CPPTypeJacques Lucke
* Reduce code duplication. * Give methods more standardized names (e.g. `move_to_initialized` -> `move_assign`). * Support wrapping arbitrary C++ types, even those that e.g. are not copyable.
2021-06-26Cleanup: remove redundant/outdated commentsCampbell Barton
2021-06-26Cleanup: full sentences in comments, improve comment formattingCampbell Barton
2021-06-24Fix T89390: crash when join geometry node has only muted inputsJacques Lucke
2021-06-24Cleanup: comment blocks, trailing space in commentsCampbell Barton
2021-06-23Cleanup: reformat trailing comments that caused line wrappingCampbell Barton
2021-06-22Cleanup: Spelling MistakesLeon Zandman
This patch fixes many minor spelling mistakes, all in comments or console output. Mostly contractions like can't, won't, don't, its/it's, etc. Differential Revision: https://developer.blender.org/D11663 Reviewed by Harley Acheson
2021-06-21Fix T89122: crash when multi input is connected to multiple group inputsJacques Lucke
The early `return` was wrong when there are multiple origin sockets that need to be loaded.
2021-06-18Cleanup: rename test_index_face -> BKE_mesh_mface_index_validateCampbell Barton
2021-06-17Geometry Nodes: improve node locking in evaluatorJacques Lucke
This makes the parts where a node is locked more explicit. Also, now the thread is isolated when the node is locked. This prevents some kinds of deadlocks (which haven't happened in practice yet).
2021-06-17Cleanup: split BKE_mesh_copy_settings into two functionsCampbell Barton
- BKE_mesh_copy_parameters_for_eval to be used for evaluated meshes only as it doesn't handle ID user-counts. - BKE_mesh_copy_parameters is a general function for copying parameters between meshes.
2021-06-16BLI: add threading namespaceJacques Lucke
This namespace groups threading related functions/classes. This avoids adding more threading related stuff to the blender namespace. Also it makes naming a bit easier, e.g. the c++ version of BLI_task_isolate could become blender::threading::isolate_task or something similar. Differential Revision: https://developer.blender.org/D11624
2021-06-15BLI: use explicit task isolation, no longer part of parallel operationsBrecht Van Lommel
After looking into task isolation issues with Sergey, we couldn't find the reason behind the deadlocks that we are getting in T87938 and a Sprite Fright file involving motion blur renders. There is no apparent place where we adding or waiting on tasks in a task group from different isolation regions, which is what is known to cause problems. Yet it still hangs. Either we do not understand some limitation of TBB isolation, or there is a bug in TBB, but we could not figure it out. Instead the idea is to use isolation only where we know we need it: when holding a mutex lock and then doing some multithreaded operation within that locked region. Three places where we do this now: * Generated images * Cached BVH tree building * OpenVDB lazy grid loading Compared to the more automatic approach previously used, there is the downside that it is easy to miss places where we need isolation. Yet doing it more automatically is also causing unexpected issue and bugs that we found no solution for, so this seems better. Patch implemented by Sergey and me. Differential Revision: https://developer.blender.org/D11603
2021-06-11Nodes: cache socket identifier to index mappingJacques Lucke
While this preprocessing does take some time upfront, it avoids longer lookup later on, especially as nodes get more sockets. It's probably possible to make this more efficient in some cases but this is good enough for now.
2021-06-10Fix T88578: crash when loading value from group output nodeJacques Lucke
It remembered the wrong origin socket and couldn't find the value anymore later on.
2021-06-08Fix T88719: Attribute Remove node input field does nothingJacques Lucke
An unlinked multi-input socket was not handled correctly.
2021-06-08Geometry Nodes: enable multi-threading in evaluator againJacques Lucke
This reverts rB223c6e1ead2940a89465ff66765d16ac14a992b7 because T88598 is resolved now.
2021-06-02Geometry Nodes: Add Delete Geometry NodeWannes Malfait
This node is similar to the mask modifier, but it deletes the elements of the geometry corresponding to the selection, which is retrieved as a boolean attribute. The node currently supports both mesh and point cloud data. For meshes, which elements are deleted depends on the domain of the input selection attribute, just like how behavior depends on the selection mode in mesh edit mode. In the future this node will support curve data, and ideally volume data in some way. Differential Revision: https://developer.blender.org/D10748
2021-06-01Fix T88658: Force Fields of curve shape can crash if curve has only one pointPhilipp Oeser
`bvhtree_from_mesh_edges_create_tree` can actually leave the BVHTree NULL (e.g. if no edges are present). Now dont allocate `BVHTreeFromMesh` on the `SurfaceModifierData` at all in case the tree would be NULL anyways. Places like `get_effector_data` check for `SurfaceModifierData`- >`BVHTreeFromMesh` and dont try to stuff like getting a closest point on surface, which would crash as soon as BVHNodes would need to be accessed (from the NULL BVHTree). Maniphest Tasks: T88658 Differential Revision: https://developer.blender.org/D11443
2021-06-01BMesh: remove checks for tessellating 2 sided facesCampbell Barton
2 sided faces aren't supported and will cause problems in many areas of Blender's code. Removing (implied) support for faces with fewer than 3 sides means the total number of triangles is known ahead of time. This simplifies adding support for multi-threading and partial updates to an existing tessellation - as the face and loop indices can be used to access the range of triangles associated with a face. Also correct outdated comments.
2021-05-28MSVC: Fix build error with 16.10/11Ray Molenkamp
Not entirely sure why this was not an issue for 16.9 but TBB includes the Windows.h header which by default will define min and max macro's These collide with the stl versions in <algorithm> This patch requests Windows.h not to define the problematic macro's, resolving the conflict.
2021-05-27Geometry Nodes: Expose texture and material inputs to modifierHans Goudey
This allows choosing material and texture sockets for the group input node in the modifier. Note that currently grease pencil materials are displayed in the list, even though grease pencil data is not supported yet by geometry nodes. That is more complicated to fix in this case, since we use IDProperties to store the dynamic exposed inputs. Differential Revision: https://developer.blender.org/D11393
2021-05-27Geometry Nodes: disable multi-threading in evaluator for nowJacques Lucke
A deadlock could happen under certain circumstances when geometry nodes is used on multiple objects. Once T88598 is resolved, multi-threading can be enabled again. Differential Revision: https://developer.blender.org/D11405
2021-05-27Cleanup: Remove completed "TODO" commentHans Goudey
Since rBb67fe05d4bea, the dependency graph supports relations on collection geometry, and the nodes modifier uses that.
2021-05-26Fix T88111: Skin modifier assets within invalid face normalsCampbell Barton
The skin modifier was moving vertices without updating normals for the connected faces, this happened when smoothing and welding vertices. Reviewed By: mont29 Ref D11397
2021-05-26Merge branch 'blender-v2.93-release'Jacques Lucke
2021-05-26Fix T88250: crash when instancing object in disabled collectionJacques Lucke
This issue was that `BKE_object_eval_uber_data` was not called for the text object, because its geometry was not dependent upon and its `is_directly_visible` tag was `false`. The crash happens in rendering code, because the evaluated data is missing. This not only affects text objects, but all object types that have a geometry component that geometry nodes does not support yet. The solution is to just add the missing dependencies. Differential Revision: https://developer.blender.org/D11385
2021-05-25Cleanup: remove unnecessary lambda captureJacques Lucke
2021-05-25Cleanup: spellingCampbell Barton
2021-05-20Cleanup: rename incorrectly named experimental feature flagJacques Lucke
The `WITH_GEOMETRY_NODES` flag does not make sense anymore, it is just protecting the `Simulation` data block that is not used currently.
2021-05-20Geometry Nodes: new geometry nodes evaluatorJacques Lucke
The old geometry nodes evaluator was quite basic and missed many features. It was useful to get the geometry nodes project started. However, nowadays we run into its limitations from time to time. The new evaluator is more complex, but comes with new capabilities. The two most important capabilities are that it can now execute nodes in parallel and it supports lazy evaluation. The performance improvement by multi-threading depends a lot on the specific node tree. In our demo files, the speedup is measurable but not huge. This is mainly because they are bottlenecked by one or two nodes that have to be executed one after the other (often the Boolean or Attribute Proximity nodes) or because the bottleneck is multi-threaded already (often openvdb nodes). Lazy evaluation of inputs is only supported by the Switch node for now. Previously, geometry nodes would always compute both inputs and then just discard the one that is not used. Now, only the input that is required is computed. For some more details read D11191, T87620 and the in-code documentation. Differential Revision: https://developer.blender.org/D11191
2021-05-14Merge branch 'blender-v2.93-release'Jacques Lucke
2021-05-14Fix T87417: crash when evaluating geo nodes without window managerPratik Borhade
Differential Revision: https://developer.blender.org/D11240
2021-05-13Modifiers: allow usage of tbbJacques Lucke
Before, any usage of tbb wrappers used in modifier code would just fall back to the non-threaded non-tbb version. We ran into this issue a couple of times in patches.
2021-05-08Cleanup: remove use of persistent data handles in geometry nodesJacques Lucke
Those were mostly just left over from previous work on particle nodes. They solved the problem of keeping a reference to an object over multiple frames and in a cache. Currently, we do not have this problem in geometry nodes, so we can also remove this layer of complexity for now.
2021-05-03Geometry Nodes: Initial basic curve data supportHans Goudey
This patch adds initial curve support to geometry nodes. Currently there is only one node available, the "Curve to Mesh" node, T87428. However, the aim of the changes here is larger than just supporting curve data in nodes-- it also uses the opportunity to add better spline data structures, intended to replace the existing curve evaluation code. The curve code in Blender is quite old, and it's generally regarded as some of the messiest, hardest-to-understand code as well. The classes in `BKE_spline.hh` aim to be faster, more extensible, and much more easily understandable. Further explanation can be found in comments in that file. Initial builtin spline attributes are supported-- reading and writing from the `cyclic` and `resolution` attributes works with any of the attribute nodes. Also, only Z-up normal calculation is implemented at the moment, and tilts do not apply yet. **Limitations** - For now, you must bring curves into the node tree with an "Object Info" node. Changes to the curve modifier stack will come later. - Converting to a mesh is necessary to visualize the curve data. Further progress can be tracked in: T87245 Higher level design document: https://wiki.blender.org/wiki/Modules/Physics_Nodes/Projects/EverythingNodes/CurveNodes Differential Revision: https://developer.blender.org/D11091
2021-04-30Merge branch 'blender-v2.93-release'Campbell Barton
2021-04-30Fix T85470: Simple deform modifier causes artifacts at low anglesHenrik Dick
The formula used to compute the bend did subtraction of two big numbers to get the position. Changed to find the delta and add that, by rearranging the formula into a more numerically stable form. Reviewed By: mano-wii, campbellbarton Ref D11074
2021-04-29Cleanup: Reduce indentation by returning earlyHans Goudey
2021-04-27Fix: Self object missing from geometry nodes evaluator paramsHans Goudey
This was an oversight in the previous refactoring commit in this file.
2021-04-27Geometry Nodes: improve geometry nodes evaluator internal apiJacques Lucke
This is a first step towards T87620. It should not have any functional changes. Goals of this refactor: * Move the evaluator out of `MOD_nodes.cc`. That makes it easier to improve it in isolation. * Extract core input/out parameter management out of `GeoNodeExecParams`. Managing this is the responsibility of the evaluator. This separation of concerns will be useful once we have lazy evaluation of certain inputs/outputs. Differential Revision: https://developer.blender.org/D11085
2021-04-27Cleanup: Fix unused variable warning in lite buildHans Goudey
2021-04-26Cleanup: Replace modifyVolume with modifyGeometrySetHans Goudey
This allows us to remove a callback from the modifier type info struct. In the future the these modifiers might just be replaced by nodes internally anyway, but in the meantime it's nice to unify the handling of evaluated geometry a bit. Differential Revision: https://developer.blender.org/D11080