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-28Nodes: Add bf_nodes_function moduleAaron Carlisle
In the future this will be used to support unity builds for function nodes Differential Revision: https://developer.blender.org/D13682
2021-12-28Nodes: Add bf_nodes_composite moduleAaron Carlisle
In the future this will be used to support unity builds for composite nodes Differential Revision: https://developer.blender.org/D13678
2021-12-18Fix T94215: compositer denoise node UI wrongly shows as disabledBrecht Van Lommel
After recent refactoring in 4e98d974b596.
2021-12-15Node Editor: Link Drag Search MenuHans Goudey
This commit adds a search menu when links are dragged above empty space. When releasing the drag, a menu displays all compatible sockets with the source link. The "main" sockets (usually the first) are weighted above other sockets in the search, so they appear first when you type the name of the node. A few special operators for creating a reroute or a group input node are also added to the search. Translation is started after choosing a node so it can be placed quickly, since users would likely adjust the position after anyway. A small "+" is displayed next to the cursor to give a hint about this. Further improvements are possible after this first iteration: - Support custom node trees. - Better drawing of items in the search menu. - Potential tweaks to filtering of items, depending on user feedback. Thanks to Juanfran Matheu for developing an initial patch. Differential Revision: https://developer.blender.org/D8286
2021-12-07Shader Nodes: Create a new bf_nodes_shader libraryAaron Carlisle
Re commits rBf72cc47d8edf849af98e196f721022bacf86a5e7 but without the unity build
2021-12-07Geometry Nodes: move type conversions to blenkernelJacques Lucke
The type conversions do not depend on other files in the nodes module. Furthermore we want to use the conversions in the geometry module without creating a dependency to the nodes module there.
2021-12-07Revert moving all shader nodes to c++Jacques Lucke
This reverts to following commits: * rB5cad004d716da02f511bd34983ac7da820308676 * rB97e3a2d935ba9b21b127eda7ca104d4bcf4e48bd * rBf60b95b5320f8d6abe6a629fe8fc4f1b94d0d91c * rB0bd3cad04edf4bf9b9d3b1353f955534aa5e6740 * rBf72cc47d8edf849af98e196f721022bacf86a5e7 * rB3f7014ecc9d523997062eadd62888af5fc70a2b6 * rB0578921063fbb081239439062215f2538a31af4b * rBc20098e6ec6adee874a12e510aa4a56d89f92838 * rBd5efda72f501ad95679d7ac554086a1fb18c1ac0 The original move to c++ that the other commits depended upon had some issues that should be fixed before committing it again. The issues were reported in T93797, T93809 and T93798. We should also find a better rule for not using c-style casts going forward, although that wouldn't have been reason enough to revert the commits. Introducing something like a `MEM_new<T>` and `MEM_delete<T>` function might help with the the most common case of casting the return type of `MEM_malloc`. Going forward, I recommend first committing the changes that don't require converting files to c++. Then convert the shading node files in smaller chunks. Especially don't mix fairly low risk changes like moving some simple nodes, with higher risk changes.
2021-12-06Shader Nodes: Unity BuildAaron Carlisle
- Create a new `bf_nodes_shader` library - Enable unity builds for `bf_nodes_shader`, gives abount a 2.7x speed up for compile times Reviewed By: JacquesLucke Differential Revision: https://developer.blender.org/D13484
2021-12-06Cleanup: remove unnecessary extern template implementationsJacques Lucke
This technique isn't really necessary anymore, because unity builds avoid instantiating the same template too many times already.
2021-12-05Cleanup: Migrate all shader nodes to c++Aaron Carlisle
This will be useful in the future to use the new socket builder API Aditional changes: - Declare variables where initialized - Do not use relative includes Differential Revision: https://developer.blender.org/D13465
2021-12-01Cleanup: Move node_shader_util.c to C++Hans Goudey
This will allow using a function I've declared in a C++ header.
2021-12-01Geometry Nodes: Generalized Compare NodeJohnny Matthews
Replace compare floats node with a generalized compare node. The node allows for the comparison of float, int, string, color, and vector. The datatypes support the following operators: Float, Int: <, >, <=, >=, ==, != String: ==, != Color: ==, !=, lighter, darker (using rgb_to_grayscale value as the brightness value) Vector Supports 5 comparison modes for: ==, !=, <, >, <=, >= Average: The average of the components of the vectors are compared. Dot Product: The dot product of the vectors are compared. Direction: The angle between the vectors is compared to an angle Element-wise: The individual components of the vectors are compared. Length: The lengths of the vectors are compared. Differential Revision: https://developer.blender.org/D13228
2021-11-19Nodes: add bf_nodes_geometry libraryJacques Lucke
Separating geometry nodes into a new library will make it easier to improve compile times with features like unity builds and precompiled headers. Differential Revision: https://developer.blender.org/D13261
2021-11-05Cleanup (UI): Add/use type for operator context enumJulian Eisel
Adds a `wmOperatorCallContext` typedef for the existing `WM_OP_XXX` operator context enum. This adds type safety, allows the compiler to produce better warnings and helps understanding what a variable is for. Differential Revision: https://developer.blender.org/D13113 Reviewed by: Campbell Barton
2021-10-26Geometry Nodes: Get and set nodes for ID attributeHans Goudey
These nodes allow accessing and changing the stable/random ID used for motion blur with instances and stable randomness. Since rB40c3b8836b7a, the stable ID is a built-in attribute, so to be consistent and allow changing it in the node tree like other built-in attributes, it has get and set nodes.
2021-10-26Cleanup: Restore alphabetical orderHans Goudey
2021-10-26Geometry Nodes: geometry component type warning systemJacques Lucke
Previously, every node had to create warnings for unsupported input geometry manually. Now this is automated. Nodes just have to specify the geometry types they support in the node declaration. Differential Revision: https://developer.blender.org/D12899
2021-10-26Geometry Nodes: Handle multiple grids in the volume to mesh nodeHans Goudey
In future use cases, a volume can contain many grids that represent the density information. In this case, it's better if the volume to mesh node creates a mesh based on all of the grids in the volume. This is also a benefit to share-ability, since one doesn't have to specify the grid name in the node. Instead, in the future we can have a way to split particular grids into separate volumes, if only one grid should be considered. The code changes are relatively simple: - Move the old volume to mesh node to the legacy folder. - Run the volume to mesh node on all instance geometry, like elsewhere. - Make the blenkernel's volume to mesh API a bit more specific. Differential Revision: https://developer.blender.org/D12997
2021-10-25Geometry Nodes: new Image Texture nodeJacques Lucke
This adds a new image texture node for geometry nodes. It does not reuse the same node that is used in shading, because we want to be able to expose the image and frame as sockets. There is a known update issue when a movie or image sequence is used. That will be fixed separately (also see D12957). Currently, the image socket is just a pointer to an Image ID data block. This can contain single images but also movies and image sequences. In the future, the definition of an image socket can be expanded to include images that are generated from scratch in the node tree. For more details read the discussion in D12827. Some of the code is a direct port from cycles and should be cleaned up a bit in the future. For example `image_cubic_texture_lookup`. For still images, the frame input is ignored. Otherwise, the frame has to be in a valid range for the node to work. In the future we may add e.g. automatic looping functionality. Differential Revision: https://developer.blender.org/D12827
2021-10-24Geometry Nodes: Rename node "String Substring"Erik Abrahamsson
This patch renames the node "String Substring" to "Slice String" to conform to the "verb first" naming convention. Default length is also changed to 10 to make it easier for users to understand what the node does. Reviewed By: HooglyBoogly Differential Revision: https://developer.blender.org/D12931
2021-10-23Geometry Nodes: Add Instances to Points NodeJarrett Johnson
This node takes a geometry set with instances as input and outputs points located on the origins of the top level of instances in the geometry set (not nested instances). It also has position and radius inputs to allow overriding the default, and a selection input to only generate points for some instances. The use case for this node is a method to use geometry proximity on instance origins, but in a more generic way that is flexible and useful in other situations. Differential Revision: https://developer.blender.org/D12893
2021-10-22Geometry Nodes: add Boolean and Integer Input nodesDorian
These nodes just output a single value of their respective types, making it possible to control multiple inputs with the same value. Differential Revision: https://developer.blender.org/D12932
2021-10-20Geometry Nodes: Fields version of Curve to Points nodeHans Goudey
This commit adds an updated version of the curve to points that supports fields. Only the position and radius are transferred by default now, which should improve performance. The other outputs like tangent and rotation are outputted with anonymous attributes. I took the opportunity to change a few other small things: - Name geometry sockets "Curve" and "Points" like other nodes. - Remove the radius multiple of 0.1, which was confusing. Thanks to @Johnny Matthews (guitargeek) for an initial patch. Differential Revision: https://developer.blender.org/D12887
2021-10-20Cleanup: sort cmake file listsCampbell Barton
2021-10-20Cleanup: trailing space, use single quotes for enumsCampbell Barton
2021-10-19Geometry Nodes: Replace String nodeErik Abrahamsson
This commit adds a node that can be used to find and replace strings inside of the input string. One initial use case is to have an easier way to add line breaks to strings to the string to curves node. Differential Revision: https://developer.blender.org/D12721
2021-10-19Geometry Nodes: Fields version of the raycast nodeHans Goudey
This patch includes an updated version of the raycast node that uses fields instead of attributes for inputs instead of outputs. This makes the node's UI much clearer. It should be faster too, since the evaluation system for fields provides multi-threading. The source position replaces the input geometry (since this node is evaluated in the context of a geometry like the other field nodes). Thanks to @guitargeek for an initial version of this patch. Differential Revision: https://developer.blender.org/D12638
2021-10-18Geometry Nodes: Endpoint Selection NodesJohnny Matthews
The Endpoint Selection node allows for the Selection of an aribitrary number of endpoints from each spline in a curve. The start and end inputs are evaluated on the spline domain. The result is outputted as a boolean field on the point domain. Differential Revision: https://developer.blender.org/D12846
2021-10-15Geometry Nodes: Updated Subdivision Surface NodeJarrett Johnson
Replaces the old Subdivision Surface Node. Changes: - Removes implicit instance realization, instead the node runs once per unique instance. - "Use Creases" becomes a crease field input applied to edges. The values are clamped between zero and one. Addresses T91763 Differential Revision: https://developer.blender.org/D12830
2021-10-15Geometry Nodes: Fields transfer attribute nodeHans Goudey
This commit adds an updated version of the old attribute transfer node. It works like a function node, so it works in the context of a geometry, with a simple data output. The "Nearest" mode finds the nearest element of the specified domain on the target geometry and copies the value directly from the target input. The "Nearest Face Interpolated" finds the nearest point on anywhere on the surface of the target mesh and linearly interpolates the value on the target from the face's corners. The node also has a new "Index" mode, which can pick data from specific indices on the target geometry. The implicit default is to do a simple copy from the target geometry, but any indices could be used. It is also possible to use a single value for the index to to retrieve a single value from an attribute at a certain index. Differential Revision: https://developer.blender.org/D12785
2021-10-14Geometry Nodes: Field version of mesh to curve nodeHans Goudey
This commit adds a fields version of the mesh to curve node, with a field for the input selection. In order to reduce code duplication, it adds the mesh to curve conversion to the new geometry module and calls that implementation from both places. More details on the geometry module can be found here: T86869 Differential Revision: https://developer.blender.org/D12579
2021-10-13Geometry Nodes: Fields version of edge split nodeHans Goudey
This changes the edge split node to have a selection input, which is more aligned with the other design changes. This loses the ability to split edges based on an angle, but the edge angle can be added as a field input node in the future, which will make for a much more flexible system. Differential Revision: https://developer.blender.org/D12829
2021-10-13Geometry Nodes: Rotate Instances NodeErik Abrahamsson
Adds a node that can rotate each of a geometry's instances in global (to the modifier object) or local space (of each point) by a specified angle around a pivot point. In the future, separating the local-global choice for the pivot and the rotation might be useful. However, for now the node is kept simple. Differential Revision: https://developer.blender.org/D12682
2021-10-13Geometry Nodes: Scale Instances NodeErik Abrahamsson
Adds a node that can scale a geometry's instances. With "Local" turned on, the instance is scaled individually from the center point input, while when local space is turned off, it's more like the transform node, except it scales outward from the center point instead of only from the origin. Differential Revision: https://developer.blender.org/D12681
2021-10-13Geometry Nodes: Translate Instances NodeErik Abrahamsson
Adds a node that can translate instances in the transform space of the modifier object, or the local space of their original transform. One reason to have a special node for instances is that they always have the existing transform, unlike mesh or point cloud points. Differential Revision: https://developer.blender.org/D12679
2021-10-13Geometry Nodes: Material Index, Set MaterialJohnny Matthews
Add Get/Set Nodes for Material Index Rename Assign Material to Set Material Differential Revision: https://developer.blender.org/D12837
2021-10-12Geometry Nodes: Add Color input nodeCharlie Jolly
Adds a color input node with picker. Differential Revision: https://developer.blender.org/D12793
2021-10-11Geometry Nodes: Add Nodes to Get/Set Built-in AttributesJohnny Matthews
This commit implements T91780, adding nodes to get and set builtin attributes. Individual set nodes are used so that the values can be exposed for direct editing, which is useful for attributes like shade smooth and spline resolution. Individual input nodes are used to allow reusing nodes for multiple components, and to allow grouping multiple outputs conceptually in the same node in the future. Input Nodes - Radius - Curve Tilt - Curve Handle Positions - Is Shade Smooth - Spline Resolution - Is Spline Cyclic 'Set' Nodes - Curve Radius - Point Radius - Curve Tilt - Curve Handle Positions - Is Shade Smooth - Spline Resolution - Is Spline Cyclic Using hardcoded categories is necessary to add separators to the node menu. Differential Revision: https://developer.blender.org/D12687
2021-10-11Geometry Nodes: Separate and Delete Geometry for fieldsWannes Malfait
Delete Geometry: This adds a copy of the old node in the legacy folder and updates the node to work with fields. The invert option is removed, because it is something that should be very easy with fields, and to be consistent with other nodes which have a selection. There is also a dropdown to select the domain, because the domain can't be determined from the field input. When the domain does not belong on any of the components an info message is displayed. Separate Geometry: A more general version of the old Point Separate node. The "inverted" output is the same as using the delete geometry node. Differential Revision: https://developer.blender.org/D12574
2021-10-09Geometry Nodes: Align Euler to Vector NodeJarrett Johnson
This commit introduces the Align Euler to Vector function node which rotates to a body into a given direction. The node replaces the legacy "Align Rotation to Vector" node, which only worked on an attribute named `rotation` internally. The "Euler" in the name is meant to make it clearer that the rotation isn't interchangeable with a regular vector. Addresses T91374. Differential Revision: https://developer.blender.org/D12726
2021-10-07Nodes: Move texture nodes to C++Charlie Jolly
Move texture nodes to C++ and use new socket declaration Brick, Checker, Image, Magic and Wave Differential Revision: https://developer.blender.org/D12778
2021-10-03Geometry Nodes: Handle Type Selection Node UpdateJohnny Matthews (guitargeek)
This node creates a boolean field selection of bezier spline points that have a handle of the given type on the selected 'side' of the contol point. This is evaluated on the point domain. Differential Revision: https://developer.blender.org/D12559
2021-10-03Nodes: use extern templates for socket declarationsJacques Lucke
The new socket declaration api generates a surprising amount of symbols in each translation unit where it is used. This resulted in a measurable compile time increase. This commit reduces the number of symbols that are generated in each translation unit significantly. For example, in `node_geo_distribute_points_on_faces.cc` the number of symbols decreased from 1930 to 1335. In my tests, this results in a 5-20% compile time speedup when this and similar files are compiled in isolation (measured by executing the command in `compile_commands.json`). Compiling the distribute points on faces node sped up from ~2.65s to ~2.4s.
2021-10-03Geometry Nodes: Points to Volume Fields UpdateJohnny Matthews (guitargeek)
This update of the Points to Volume node allows a field to populate the radius input of the node and removes the implicit realization of instances. Differential Revision: https://developer.blender.org/D12531
2021-10-03Geometry Nodes: Add Rotate Euler NodeJarrett Johnson
This commit introduces the Rotate Euler function node which modifies an input euler rotation. The node replaces the "Point Rotate" node. Addresses T91375. Differential Revision: https://developer.blender.org/D12531
2021-10-01Geometry Nodes: Set Handle Type Node Field Updateguitargeek
This update of the Set Handle Type node allows for a bool field to be used as the selection of the affected control point handles for bezier splines. If no bezier splines are provided a info message is shown. Differential Revision: https://developer.blender.org/D12526
2021-10-01Geometry Nodes: Set Spline Type Node Field Updateguitargeek
This update of the Set Spline Type node allows for a bool field to be used as the selection of the affected splines. Differential Revision: https://developer.blender.org/D12522
2021-10-01Geometry Nodes: Spline Length Input Nodeguitargeek
The Spline Length Input node provides a field containing the length of the current evaluated spline to the Point and Spline domains. Differential Revision: https://developer.blender.org/D12706
2021-10-01Geometry Nodes: Curve Subdivide Node with Fieldsguitargeek
The curve subdivide node can now take an int field to specify the number of subdivisions to make at each curve segment. Reviewed by: Hans Goudey Differential Revision: https://developer.blender.org/D12534
2021-09-30Cleanup: move node_common.c to c++Jacques Lucke
Buildbot compiled without problems.