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-04-02Geometry Nodes: Separate grid primitive X and Y sizeHans Goudey
Since you can already specify a separate size for X and Y with the grid node, it makes sense to be able to specify the size separately for each axis also. This also avoids some awkward math with a Transform node afterwards when you want a specific size for each direction. Versioning (except for animation and drivers) is handled in this commit. Differential Revision: https://developer.blender.org/D10834
2021-04-02Geometry Nodes: Allow float input for point scale nodeHans Goudey
This allows easily changing the scale attribute with a uniform scale within a single simple node.
2021-04-02Geometry Nodes: Change point translate and scale node defaultsHans Goudey
Since these nodes are usually used for more basic operations and the attribute nodes are used when more complexity is necessary, it makes sense to give these nodes more accessible defaults-- hopefully this can make learning about the core concepts of geometry nodes a bit easier.
2021-04-02Fix T86874: Wireframe not drawing for geometry node mesh primitivesKris
The following primitives needed ME_EDGEDRAW, ME_EDGERENDER edge flags: * Grid * Circle Set flags on the inside edges for grid and circle triangle fan (mesh primitive nodes) so they are visible and selectable. Reviewed By: HooglyBoogly Differential Revision: https://developer.blender.org/D10878
2021-04-02Cleanup: Remove unecessary C API for direct mesh booleanHans Goudey
The main goal here is to remove the need for a C API to the code in `mesh_boolean_convert.cc`. This is achieved by moving `MOD_boolean.c` to C++ and making the necessary changes for it to compile. On top of that there are some other slight simplifications possible to the direct mesh boolean code: it doesn't need to copy the material remaps, and the modifier code can use some other C++ types directly.
2021-04-01Geometry Nodes: Improve speed of boolean node, use multi-input socketHans Goudey
This commit improves the performance of the node by up to 40% in some cases when there are only two input meshes, mainly by skipping the conversion to and from BMesh. When there are more than two input meshes (note the distinction from "Geometries", a geometry set can have many mesh instances), the performance is actually worse, since boolean currently always does self intersection in that case. Theoretically this could be improved in the boolean code, or another option is automatically realizing instances for each input geometry set. Another improvement is using multi-input sockets for the inputs, which removes the need to have a separate boolean node for every operation, which can hopefully simplify some node trees. The changes necessary for transforms in `mesh_boolean_convert.cc` are somewhat subtle; they come from the fact that the collecting the geometry set instances already gives transforms in the local space of the modifier object. There is also a very small amount of cleanup to those lines, using `float4x4::identity()`. This commit also fixes T87078, where overlapping difference meshes makes the operation not work, though I haven't investigated why. Differential Revision: https://developer.blender.org/D10599
2021-04-01BLI: rename resource collector to resource scopeJacques Lucke
Differential Revision: https://developer.blender.org/D10857
2021-04-01Cleanup: use bool instead of intJacques Lucke
2021-04-01Cleanup: Remove unused codeHans Goudey
There was a note about reusing this for "texture nodes", but that will probably not be implemented in this way anyway.
2021-04-01Cleanup: move node_exec.c to c++Jacques Lucke
Doing this, because it might make it easier to replace the implementation of `bNodeInstanceHash`.
2021-04-01Cleanup: spellingCampbell Barton
2021-04-01Geometry Nodes: add socket value logging capabilityJacques Lucke
The node tree evaluator now calls a callback for every used socket with its corresponding value(s). Right now the callback does nothing. However, we can use it to collect attribute name hints, socket values for debugging or data that will be displayed in the spreadsheet. The main difficulty here was to also call the callback for sockets in nodes that are not directly executed (such as group nodes, muted nodes and reroutes). No functional changes are expected.
2021-03-31Fix T87094: Transforming geometry instances component is brokenHans Goudey
Caused by an incorrect transformation order in cleanup commit rBd037fef3bd1dc2e. The fix is to simply reverse the order.
2021-03-31Geometry Nodes: Rename "Grid" to "Density"Hans Goudey
For other "Attribute Name" fields we usually give a more specific name that relates to what the attribute is actually used for, like "Mask" in the point separate node. This is a similar situation, and would also be consistent with the naming planned in D10506.
2021-03-30Geometry Nodes: Set default grid vertices to 3 by 3Hans Goudey
This is a relatively arbitrary value, but a good starting point-- it's simple while also showing the possibility of the subdivisions. Ref T86819
2021-03-30Fix unused variable warning caused by recent cleanupHans Goudey
Caused by a cleanup, rBd037fef3bd1dc.
2021-03-30Cleanup: Fix incorrect socket list nameHans Goudey
2021-03-30Cleanup: Use float4x4 type and constructorHans Goudey
2021-03-29Fix T86972: transform node transforms shape keysJacques Lucke
2021-03-29Compositor: Add Anti-Aliasing nodeHabib Gahbiche
This is an implementation of Enhanced Subpixel Morphological Antialiasing (SMAA) The algorithm was proposed by: Jorge Jimenez, Jose I. Echevarria, Tiago Sousa, Diego Gutierrez This node provides only SMAA 1x mode, so the operation will be done with no spatial multisampling nor temporal supersampling. See Patch for comparisons. The existing AA operation seems to be used only for binary images by some other nodes. Using SMAA for binary images needs no important parameter such as "threshold", so we perhaps can switch the operation to SMAA, though that changes existing behavior. Notes: 1. The program code assumes the screen coordinates are DirectX style that the vertical direction is upside-down, so "top" and "bottom" actually represent bottom and top, respectively. Thanks for Habib Gahbiche (zazizizou) to polish and finalize this patch. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D2411
2021-03-27Cleanup: clang-formatCampbell Barton
2021-03-26Cleanup: Use enum for "in" vs. "out" node socketsHans Goudey
2021-03-26Geometry Nodes: Rename "Plane" primitive to "Grid"Hans Goudey
Although "Grid" may not be techincally correct since a grid could be 3D, it was decided to rename the "Plane" primtive to "Grid". The primitive node allows subdivisions, so the name is more consistent with the operator in the 3D view. Ref T86819 This commit includes a file subversion bump for the versioning.
2021-03-26Geometry Nodes: Implicit conversion change for float/int/color to boolCharlie Jolly
Change `float to boolean` and `int32 to boolean` to return false for zero and negative values. This aligns with how artists would expect these values to work. This is in contrast to what a coder would expect. It was determined on blender.chat that this was a better default. This means that a negative float value would give a boolean false. Change `Color4f to boolean` to return false for zero and negative grayscale values. Likewise, for color to boolean, to account for negative value colors, the grayscale value would be used for determining if a colour was false or not. See {T86454} Reviewed By: JacquesLucke Differential Revision: https://developer.blender.org/D10685
2021-03-26Geometry Nodes: Add remaining operations to the Vector Math nodeLeon Leno
This patch adds support for the remaining operations of the Vector Math node within Geometry Nodes. While the operations are already available in the UI, they hadn't been implemented, yet. With this patch the node uses the implementation that was added for the Attribute Vector Math node - similar to how it's handled with the Math node and Attribute Math node. Differential Revision: https://developer.blender.org/D10650
2021-03-26Geometry Nodes: Add Attribute Clamp NodeCharlie Jolly
This adds a Clamp node for Geometry Nodes Attributes. Supports both Min-Max and Range clamp modes. Float, Vector, Color and Int data types supported. Reviewed By: HooglyBoogly, simonthommes Differential Revision: https://developer.blender.org/D10526
2021-03-26Geometry Nodes: Add Attribute Map Range NodeVictor-Louis De Gusseme
This commit adds a node with a "Map Range" operation for attributes just like the non-attribute version of the node. However, unlike the regular version of the node, it also supports operations on vectors. Differential Revision: https://developer.blender.org/D10344
2021-03-26Cleanup: clang-formatCampbell Barton
2021-03-26CMake: add headers to source lists, sort file-listsCampbell Barton
2021-03-26Fix: Geometry Nodes: Incorrect offsets for plane primitiveLeon Leno
The recent commit that changed the size (rB83df3545246aada) left out a few changed. This patch also adjusts the positioning and UV scale of the generated plane accordingly. Differential Revision: https://developer.blender.org/D10822
2021-03-25Cleanup: Pass instance group result vector as an argumentHans Goudey
This will allow retrieving the instance groups from multiple geometry sets and avoiding needing vectors of vectors to store the results. This is useful when retrieving instances from a multi-input socket of geometries.
2021-03-25BLI: simplify using DefaultHashJacques Lucke
2021-03-25Geometry Nodes: rename attribute domainsJacques Lucke
This patch renames two domains: * `Polygon` -> `Face` * `Corner` -> `Face Corner` For the change from `polygon` to `face` I did a "deep rename" where I updated all (most?) cases where we refere to the attribute domain in code as well. The change from `corner` to `face corner` is only a ui change. I did not see a real need to update all code the code for that. It does not seem to improve the code, more on the contrary. Ref T86818. Differential Revision: https://developer.blender.org/D10803
2021-03-24Fix T86875: "Show on Cage" crash for geometry nodes primitivesHans Goudey
Without `calc_object_remap` turned off in the conversion to and from BMesh for the primitive nodes, the `CD_ORIGINDEX` custom data layer has incorrect values. By using a different function to do the conversions, we can avoid this problem. Thanks to Jacques for finding the fix here. Differential Revision: https://developer.blender.org/D10805
2021-03-23Cleanup: use BLI_assert_unreachable in some placesJacques Lucke
2021-03-23Geometry Nodes: Make plane primitive size consistentHans Goudey
This means the "Size" input is treated as a "diameter" instead of a "radius", just like the 3D view primitives.
2021-03-23Nodes: Add Refract and Faceforward functions to Vector Maths nodesCharlie Jolly
Cycles, Eevee, OSL, Geo, Attribute Based on outdated refract patch D6619 by @cubic_sloth `refract` and `faceforward` are standard functions in GLSL, OSL and Godot shader languages. Adding these functions provides Blender shader artists access to these standard functions. Reviewed By: brecht Differential Revision: https://developer.blender.org/D10622
2021-03-23Cryptomatte: Node Size.Jeroen Bakker
Made it just a bit smaller (same size as renderlayers node).
2021-03-23Cryptomatte: Default Node Size.Jeroen Bakker
Set the min/max and default node size of the cryptomatte node.
2021-03-23Geometry Nodes: show domain in attribute fill nodeJacques Lucke
Differential Revision: https://developer.blender.org/D10789
2021-03-22Geometry Nodes: Remove location and rotation from mesh primitivesHans Goudey
Following some discussion among the geometry nodes team, it was decided that keeping the primitive nodes simpler and requiring a separate transform node to move the generated geometry from the origin would be better. - It's more consistent with the current general idea of "building block nodes" - It makes more sense for the future when it will be possible to use instancing to control the transforms. - It reduces UI clutter when the controls are not necessary.
2021-03-22Cleanup: remove unexposed nodesJacques Lucke
Those nodes are leftovers from my work on particle nodes and are not needed currently. They can be added back easily if they become necessary.
2021-03-22Geometry Nodes: make random float node more consistent with other nodesJacques Lucke
Previously, different Random Float nodes would generate different values depending on where they are in the node group hierarchy. This can be useful, but should definitely not be the default behavior, because it is very inconsistent with other nodes.
2021-03-22Functions: make multi functions smaller and cheaper to construct in many casesJacques Lucke
Previously, the signature of a `MultiFunction` was always embedded into the function. There are two issues with that. First, `MFSignature` is relatively large, because it contains multiple strings and vectors. Secondly, constructing it can add overhead that should not be necessary, because often the same signature can be reused. The solution is to only keep a pointer to a signature in `MultiFunction` that is set during construction. Child classes are responsible for making sure that the signature lives long enough. In most cases, the signature is either embedded into the child class or it is allocated statically (and is only created once).
2021-03-21Functions: refactor virtual array data structuresJacques Lucke
When a function is executed for many elements (e.g. per point) it is often the case that some parameters are different for every element and other parameters are the same (there are some more less common cases). To simplify writing such functions one can use a "virtual array". This is a data structure that has a value for every index, but might not be stored as an actual array internally. Instead, it might be just a single value or is computed on the fly. There are various tradeoffs involved when using this data structure which are mentioned in `BLI_virtual_array.hh`. It is called "virtual", because it uses inheritance and virtual methods. Furthermore, there is a new virtual vector array data structure, which is an array of vectors. Both these types have corresponding generic variants, which can be used when the data type is not known at compile time. This is typically the case when building a somewhat generic execution system. The function system used these virtual data structures before, but now they are more versatile. I've done this refactor in preparation for the attribute processor and other features of geometry nodes. I moved the typed virtual arrays to blenlib, so that they can be used independent of the function system. One open question for me is whether all the generic data structures (and `CPPType`) should be moved to blenlib as well. They are well isolated and don't really contain any business logic. That can be done later if necessary.
2021-03-21Functions: move CPPType creation related code to separate headerJacques Lucke
This does not need to be included everywhere, because it is only needed in very few translation units that actually define CPPType's.
2021-03-21Cleanup: spelling, doxygen comment formattingCampbell Barton
2021-03-20Cleanup: quiet warningJacques Lucke
2021-03-20Nodes: implement dot graph exporter for derived node treeJacques Lucke
This visualization of nested node groups makes it easier to debug some issues. Muted nodes, muted links, reroute nodes and unavailable sockets are removed from the visualization to keep it clean. Nested node groups are visualized using colored clusters.
2021-03-20Nodes: expose tree name and whether a node is a frame in node tree refJacques Lucke