WIP: Closures and deferred evaluation for geometry nodes #107842

Draft
Lukas Tönne wants to merge 35 commits from LukasTonne/blender:geometry-nodes-closures into main

When changing the target branch, be careful to rebase the branch in your fork to match. See documentation.

35 Commits

Author SHA1 Message Date
Lukas Tönne d7a6067f0a Fix merge errors. 2023-05-19 18:02:36 +02:00
Lukas Tönne c3901f284d Merge branch 'main' into geometry-nodes-closures 2023-05-19 16:49:06 +02:00
Lukas Tönne ef2966c896 Warning if the node graph does not provide all outputs. 2023-05-16 18:02:11 +02:00
Lukas Tönne 33413b3ff6 Support all socket types in the bind node. 2023-05-16 09:25:16 +02:00
Lukas Tönne 693190a24c Fill default input values for node trees. 2023-05-15 22:40:04 +02:00
Lukas Tönne d4759b1503 Ensure the node group graph info exists even if the group isn't used elsewhere. 2023-05-15 20:49:52 +02:00
Lukas Tönne 034f3deaf0 Support node tree ID default_value values for function sockets. 2023-05-15 18:07:35 +02:00
Lukas Tönne 3b73a1fdba Make the function evaluation work. 2023-05-15 16:00:20 +02:00
Lukas Tönne c80eec293e WIP: store bound values in the closure. 2023-05-12 09:42:15 +02:00
Lukas Tönne ff155163f5 Create correct lazy function inputs/outputs for the node and graph. 2023-05-11 17:55:33 +02:00
Lukas Tönne eec81de7b4 Remove duplicate graph_output entries in the node group lazy function. 2023-05-11 13:41:41 +02:00
Lukas Tönne c3bc79b3ce Merge branch 'main' into geometry-nodes-closures 2023-05-11 11:36:19 +02:00
Lukas Tönne a7ba495a82 Set up parameters for the internal graph executor. 2023-05-07 14:26:21 +02:00
Lukas Tönne 7801c27ba6 Own parameters for the closure invocation because mapping needs to happen. 2023-04-29 13:42:56 +02:00
Lukas Tönne 132bf55c48 Moved closure to the nodes module so it can store the graph info. 2023-04-29 13:42:56 +02:00
Lukas Tönne 91ff2c10d9 WIP: adding a lazy function for evaluating function sockets. 2023-04-29 13:42:56 +02:00
Lukas Tönne 419fb98fd2 Ensure the bind node exec function is registered. 2023-04-29 13:42:56 +02:00
Lukas Tönne 4a2b5a30e4 Fix crash on load: skip socket verification of node has a bNodeTree dependency. 2023-04-29 13:42:56 +02:00
Lukas Tönne 5cf33e914d Exec function for the bind node that stores a graph reference in the output. 2023-04-29 13:42:56 +02:00
Lukas Tönne 1deb83b208 Moved the bind and evaluate nodes into the geometry category.
These are going to need geometry exec functions and not just multifunctions.
2023-04-29 13:42:49 +02:00
Lukas Tönne 249bb47f5a Implemented UI for the Evaluate node signature. 2023-04-29 13:41:59 +02:00
Lukas Tönne de13c47966 RNA for node signatures. 2023-04-29 13:41:59 +02:00
Lukas Tönne bc693c0f07 Improved API for signatures using some C++ support methods. 2023-04-29 13:41:59 +02:00
Lukas Tönne d6fa5d6b61 stuff 2023-04-29 13:41:59 +02:00
Lukas Tönne ae68c6d0e8 Adapt the signature API functions to the new parameter struct. 2023-04-29 13:41:16 +02:00
Lukas Tönne b7b86d0811 Struct for signature parameters, to avoid complexity in bNodeSocket. 2023-04-29 13:40:04 +02:00
Lukas Tönne 1724af3161 Dynamic declaration for the Evaluate node based on its signature. 2023-04-29 13:40:04 +02:00
Lukas Tönne d9c8c25e7e Read/Write functions for bNodeFunctionSignature in node trees. 2023-04-29 13:40:04 +02:00
Lukas Tönne 59846f3955 Use a signature in the Evaluate node. 2023-04-29 13:40:04 +02:00
Lukas Tönne 871d2c418c New bNodeFunctionSignature struct to encapsulate interfaces. 2023-04-29 13:40:04 +02:00
Lukas Tönne 248c301563 Generate input sockets on the Bind node for capturing defaults. 2023-04-29 13:40:01 +02:00
Lukas Tönne 31a2afb11f Generic ID_NT support in depsgraph instead of just group nodes. 2023-04-29 13:38:35 +02:00
Lukas Tönne 651df82e39 Bind and Evaluate nodes for handling function closures. 2023-04-29 13:38:35 +02:00
Lukas Tönne ef77a39184 Function color different from texture sockets. 2023-04-29 13:38:35 +02:00
Lukas Tönne 24c7d5361c Added a new socket type for functions/closures.
This uses a closure data type to defer evaluation.
2023-04-29 13:38:21 +02:00