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-08-07Fix: Incorrect field node deduplication for shortest path nodesHans Goudey
Mistake in c8ae1fce6024556b72c.
2022-08-07Fix: Missing translation in deform curves on surface nodeHans Goudey
Also add an error message for when the node is used on non-curves objects, since there's nothing in the UI to show why it doesn't work except for that. And also use quotes when referring to attribute names.
2022-08-04Nodes: Disable link drag search for deprecated nodesHans Goudey
2022-08-04Fix: Store named attribute node incorrect link drag searchHans Goudey
2022-08-04Fix: Crash on instance on points node with empty meshHans Goudey
2022-08-01tweaks & fixes to UI messages.Bastien Montagne
2022-07-27Fix: curves edit hints not propagated in Join Geometry nodeJacques Lucke
Found while investigating why crazy-space editing didn't work in T100026.
2022-07-27Geometry Nodes: Rename "Field on Domain" to "Interpolate Domain"Hans Goudey
This name doesn't require understanding of fields, and is phrased as an action which is consistent with other nodes. Discussed in the latest geometry nodes sub-module meeting.
2022-07-27Geometry Nodes: Shortest Paths nodesErik Abrahamsson
This adds three new nodes: * `Shortest Edge Paths`: Actually finds the shortest paths. * `Edge Paths to Curves`: Converts the paths to separate curves. This may generate a quadratic amount of data, making it slow for large meshes. * `Edge Paths to Selection`: Generates an edge selection that contains all edges that are part of a path. This can be used with the Separate Geometry node to only keep the edges that are part of a path. For large meshes, this approach can be much faster than the `Edge Paths to Curves` node, because less data is created. Differential Revision: https://developer.blender.org/D15274
2022-07-27Geometry Nodes: Implement link drag search for two nodesHans Goudey
It was never added for the field on domain and field at index nodes. They need special handling because they have many what should be a multi-type socket declaration.
2022-07-26Refactor: Extract color attributes as generic attributesHans Goudey
Previously there was a special extraction process for "vertex colors" that copied the color data to the GPU with a special format. Instead, this patch replaces this with use of the generic attribute extraction. This reduces the number of code paths, allowing easier optimization in the future. To make it possible to use the generic extraction system for attributes but also assign aliases for use by shaders, some changes are necessary. First, the GPU material attribute can now store whether it actually refers to the default color attribute, rather than a specific name. This replaces the hack to use `CD_MCOL` in the color attribute shader node. Second, the extraction code checks the names against the default and active names and assigns aliases if the request corresponds to a special active attribute. Finally, support for byte color attributes was added to the generic attribute extraction. Differential Revision: https://developer.blender.org/D15205
2022-07-26Geometry Nodes: Hide value button for field at index nodeHans Goudey
Changing the value doesn't accomplish anything, since the retrieved value would be the same for every index then. So it's best to hide it to make the node clearer.
2022-07-26BLI: add use_threading parameter to parallel_invokeIliay Katueshenock
`parallel_invoke` allows executing functions on separate threads. However, creating tasks in tbb has a measurable amount of overhead. Therefore, it can be benefitial to disable parallelization when the amount of work done per function is small. See D15539 for some benchmark results. Differential Revision: https://developer.blender.org/D15539
2022-07-26Fix: Fix attribute writer debug warnings in terminalHans Goudey
Use an imperfect solution, since this code will be replaced soon anyway.
2022-07-25Geometry Nodes: Add node descriptions/tooltipsArye Ramaty
This commit adds tooltips to the geometry nodes add menu. Differential Revision: https://developer.blender.org/D15414
2022-07-25Geometry Nodes: Improve UV Sphere primive performanceHans Goudey
In a test producing 10 million vertices I observed a 3.6x improvement, from 470ms to 130ms. The largest improvement comes from calculating each mesh array on a separate thread. Besides that, the larger changes come from splitting the filling of corner and face arrays, and precalculating sines and cosines for each ring. Using `parallel_invoke` does gives some overhead. On a small 32x16 input, the time went up from 51us to 74us. It could be disabled for small outputs in the future. The reasoning for this parallelization method instead of more standard data-size-based parallelism is that the latter wouldn't be helpful except for very high resolution.
2022-07-23Fix T99905: wrong toposort when the node tree is cyclicJacques Lucke
2022-07-23Fix T99830: missing update after reordering node group socketsJacques Lucke
2022-07-23Fix: Store Named Attribute node not working when attribute did not existJacques Lucke
2022-07-22Fix T99835: Incorrect title case for two node namesHans Goudey
2022-07-22Cleanup: Use r_ prefix for boolean return parametersHans Goudey
Also rearrange some lines to simplify logic.
2022-07-22Fix T99873: Store named attribute node cannot write to vertex groupsHans Goudey
Since fd5e5dac8946b13599, the node would remove the attribute before adding it again, which lost the vertex group status of an attribute, meaning they were written as arbitrary attributes. Now, the node first tries to write to attributes with the same domain and data-type, which covers the vertex group case. Then it falls back to removing the attribute and adding it again. Even that can fail though, so I added an error message to make that a bit clearer. Differential Revision: https://developer.blender.org/D15514
2022-07-22Geometry Nodes: Port sample curves node to new data-blockHans Goudey
Use the newer more generic sampling and interpolation functions developed recently (ab444a80a280) instead of the `CurveEval` type. Functions are split up a bit more internally, to allow a separate mode for supplying the curve index directly in the future (T92474). In one basic test, the performance seems mostly unchanged from 3.1. Differential Revision: https://developer.blender.org/D14621
2022-07-22Curves: support sculpting on deformed curvesJacques Lucke
Previously, curves sculpt tools only worked on original data. This was very limiting, because one could effectively only sculpt the curves when all procedural effects were turned off. This patch adds support for curves sculpting while looking the result of procedural effects (like deformation based on the surface mesh). This functionality is also known as "crazy space" support in Blender. For more details see D15407. Differential Revision: https://developer.blender.org/D15407
2022-07-20Cleanup: remove unused get_cage_mesh parameterJacques Lucke
All callers passed `false` for this parameter, making it more confusing than useful. If this functionality is needed again in the future, a separate function should be added. Differential Revision: https://developer.blender.org/D15401
2022-07-20Fix T99667: regression in Delete Geometry nodeWannes Malfait
Differential Revision: https://developer.blender.org/D15445
2022-07-20Cleanup: Access attributes with new API instead of geometry componentsHans Goudey
Remove the boilerplate of using a local geometry component just to use the attribute API that was necessary before b876ce2a4a4638142439.
2022-07-20Curves: Port fillet node to the new data-blockHans Goudey
This commit ports the fillet curves node to the new curves data-block, and moves the fillet node implementation to the geometry module to help separate the implementation from the node. The changes are similar to the subdivide node or resample node. I've resused common utilities where it makes sense, though some things like the iteration over attributes can be generalized further. The node is now multi-threaded per-curve and inside each curve, and some buffers are reused per curve to avoid many allocations. The code is more explicit now, and though there is more boilerplate to pass around many spans, the more complex logic should be more readable. Differential Revision: https://developer.blender.org/D15346
2022-07-20Cleanup: Combine geometry null checks in if statementsHans Goudey
Testing if components or virtual arrays are null in the same line they are retrieved can make this boilerplate code a bit easier to read.
2022-07-20Cleanup: Use generic utility for copying compressed attributeHans Goudey
In the future, `materialize_compressed_to_uninitialized_threaded` could be moved somewhere else and reused.
2022-07-20Point Cloud: Remove redundant custom data pointersHans Goudey
Similar to e9f82d3dc7eebadcc52, but for point clouds instead. Differential Revision: https://developer.blender.org/D15487
2022-07-19Fix build error when not using unity buildBrecht Van Lommel
2022-07-19Geometry Nodes: Copy parameters when copying a curves data-blockHans Goudey
Previously, things like materials, symmetry, and selection options stored on `Curves` weren't copied to the result in nodes like the subdivide and resample nodes. Now they are, which fixes some unexpected behavior and allows visualization of the sculpt mode selection. In the realize instances and join nodes the behavior is the same as for meshes, the parameters are taken from the first (top) input. I also refactored some functions to return a `CurvesGeometry` by-value, which makes it the responsibility of the node to copy the parameters. That should make the algorithms more reusable in other situations. Differential Revision: https://developer.blender.org/D15408
2022-07-19Fix T99785: Make Principled Hair IOR input behave like other IOR slidersJesse Yurkovich
Was accidental regression in rBed9b21098dd27bf9364397357f89b4c2648f40c2 Remove the input slider's PROP_FACTOR subtype in favor of the default to align with other IOR sliders. This provides much better control when dragging the value with the mouse. Differential Revision: https://developer.blender.org/D15477
2022-07-15Cleanup: Use const pointers for ImageSaveOptions and ImageFormatDataJesse Yurkovich
Use const pointers to ImageSaveOptions and ImageFormatData for API parameters where appropriate. Differential Revision: https://developer.blender.org/D15400
2022-07-14Fix: Wrong output types for some compositor nodesOmar Emara
The Difference Matte and RGB To BW nodes have a wrong output type. They should be floats but are of type color. This is a regression that was introduced during the migration to the socket builder API in D13266. Reviewed By: Blendify, fclem Differential Revision: https://developer.blender.org/D15232
2022-07-14Fix T99239: weird behavior in Field on Domain nodeIliay Katueshenock
2022-07-14Fix T99677: crash when convex hull node is used on empty meshJacques Lucke
Fundamental issue is that the attribute api returns none, because the custom data api returns null for a layer when the size of 0. This should be improved separately.
2022-07-14Fix build and warnings from previous commit.Chris Blackbourn
2022-07-12Curves: improve error checking in deform curves on surface nodeJacques Lucke
2022-07-11Fix/Cleanup UI messages.Bastien Montagne
2022-07-11Cleanup: spelling in commentsCampbell Barton
2022-07-08Curves: use consistent default radius for Cycles, Eevee, Set Curve Radius nodeBrecht Van Lommel
To avoid Cycles not showing any hair by default, and to avoid very slow render due to many overlaps with the previous 1 meter default in the node. Fixes T97584, T99319 Differential Revision: https://developer.blender.org/D15405
2022-07-08Geometry Nodes: new geometry attribute APIJacques Lucke
Currently, there are two attribute API. The first, defined in `BKE_attribute.h` is accessible from RNA and C code. The second is implemented with `GeometryComponent` and is only accessible in C++ code. The second is widely used, but only being accessible through the `GeometrySet` API makes it awkward to use, and even impossible for types that don't correspond directly to a geometry component like `CurvesGeometry`. This patch adds a new attribute API, designed to replace the `GeometryComponent` attribute API now, and to eventually replace or be the basis of the other one. The basic idea is that there is an `AttributeAccessor` class that allows code to interact with a set of attributes owned by some geometry. The accessor itself has no ownership. `AttributeAccessor` is a simple type that can be passed around by value. That makes it easy to return it from functions and to store it in containers. For const-correctness, there is also a `MutableAttributeAccessor` that allows changing individual and can add or remove attributes. Currently, `AttributeAccessor` is composed of two pointers. The first is a pointer to the owner of the attribute data. The second is a pointer to a struct with function pointers, that is similar to a virtual function table. The functions know how to access attributes on the owner. The actual attribute access for geometries is still implemented with the `AttributeProvider` pattern, which makes it easy to support different sources of attributes on a geometry and simplifies dealing with built-in attributes. There are different ways to get an attribute accessor for a geometry: * `GeometryComponent.attributes()` * `CurvesGeometry.attributes()` * `bke::mesh_attributes(const Mesh &)` * `bke::pointcloud_attributes(const PointCloud &)` All of these also have a `_for_write` variant that returns a `MutabelAttributeAccessor`. Differential Revision: https://developer.blender.org/D15280
2022-07-08Curves: support deforming curves on surfaceJacques Lucke
Curves that are attached to a surface can now follow the surface when it is modified using shape keys or modifiers (but not when the original surface is deformed in edit or sculpt mode). The surface is allowed to be changed in any way that keeps uv maps intact. So deformation is allowed, but also some topology changes like subdivision. The following features are added: * A new `Deform Curves on Surface` node, which deforms curves with attachment information based on the surface object and uv map set in the properties panel. * A new `Add Rest Position` checkbox in the shape keys panel. When checked, a new `rest_position` vector attribute is added to the mesh before shape keys and modifiers are applied. This is necessary to support proper deformation of the curves, but can also be used for other purposes. * The `Add > Curve > Empty Hair` operator now sets up a simple geometry nodes setup that deforms the hair. It also makes sure that the rest position attribute is added to the surface. * A new `Object (Attach Curves to Surface)` operator in the `Set Parent To` (ctrl+P) menu, which attaches existing curves to the surface and sets the surface object as parent. Limitations: * Sculpting the procedurally deformed curves will be implemented separately. * The `Deform Curves on Surface` node is not generic and can only be used for one specific purpose currently. We plan to generalize this more in the future by adding support by exposing more inputs and/or by turning it into a node group. Differential Revision: https://developer.blender.org/D14864
2022-07-08Fix build error without unity build, after recent changesBrecht Van Lommel
2022-07-07Compositor: Pre-fill motion tracking fieldsSergey Sharybin
Extends current functionality which was only filling in the active movie clip. Now we also pre-fill tracking object name, as well as (plane)track name.
2022-07-06UI: Adjust and fix shader node descriptionsHans Goudey
The tooltips added for shader nodes in D15309 are very helpful already. This commit makes a few tweaks to make them more consistent, concise, and includes some fixes. Note that this might move some descriptions further away from the wording in the manual. * Make wording more concise * Start fewer new sentences * Use "For Example" slightly less * Avoid repeating the node's name unnecessarily * Spelling/grammar fixes * Don't capitalize some words * Use consistent verb conjugation * Use ASCII characters/more common quote symbols * Corrections to information * Plural/singular corrections * "smoke domains" -> "volume grids" * Fix tooltip for separate and combine color nodes * Refer to color sockets as colors rather than "images" * Avoid "advice" in a few places, which should be left for the manual * Remove information for sockets and could be in their tooltips * Avoid referring to the locations of a property in the UI * Avoid manual newlines (mostly reserve for "Note:") * Leave UI code in control of wrapping, which is more consistent * Add some information * That the UV map and color attribute nodes use a default * That Voronoi is "based on the distance to random points" * Add "(Deprecated)" to old color combine and separate nodes Differential Revision: https://developer.blender.org/D15381
2022-07-06Compositor: Pre-fill active scene movie clip in more nodesSergey Sharybin
Pre-fills movie clip from the scene to the following nodes: - Keying Screen - Plane Track Deform - Track Position The rest of tracking related nodes were already doing so. Differential Revision: https://developer.blender.org/D15377
2022-07-06Fix T99284: Undefined values output from UV nodesHans Goudey
When committing D14389 I assumed that the output arrays didn't need to be initialized, but the UV parameterizer uses the intial values of UVs.