|
Blender V4.3
|
#include "NOD_geometry_exec.hh"#include "NOD_geometry_nodes_lazy_function.hh"#include "NOD_multi_function.hh"#include "NOD_node_declaration.hh"#include "BLI_array_utils.hh"#include "BLI_bit_group_vector.hh"#include "BLI_bit_span_ops.hh"#include "BLI_cpp_types.hh"#include "BLI_dot_export.hh"#include "BLI_hash.h"#include "BLI_hash_md5.hh"#include "BLI_lazy_threading.hh"#include "BLI_map.hh"#include "DNA_ID.h"#include "BKE_anonymous_attribute_make.hh"#include "BKE_compute_contexts.hh"#include "BKE_curves.hh"#include "BKE_geometry_nodes_gizmos_transforms.hh"#include "BKE_geometry_set.hh"#include "BKE_grease_pencil.hh"#include "BKE_node_socket_value.hh"#include "BKE_node_tree_anonymous_attributes.hh"#include "BKE_node_tree_zones.hh"#include "BKE_type_conversions.hh"#include "FN_lazy_function_execute.hh"#include "FN_lazy_function_graph_executor.hh"#include "DEG_depsgraph_query.hh"#include "GEO_extract_elements.hh"#include "GEO_join_geometries.hh"#include <fmt/format.h>#include <sstream>Go to the source code of this file.
Namespaces | |
| namespace | blender |
| namespace | blender::nodes |
Typedefs | |
| using | blender::nodes::JoinAttributeSetsCache = Map<Vector<lf::OutputSocket *>, lf::OutputSocket *> |
This file mainly converts a bNodeTree into a lazy-function graph, that can then be evaluated to execute geometry nodes. This generally works by creating a lazy-function for every node, which is then put into the lazy-function graph. Then the nodes in the new graph are linked based on links in the original bNodeTree. Some additional nodes are inserted for things like type conversions and multi-input sockets.
If the bNodeTree contains zones, those are turned into separate lazy-functions first. Essentially, a separate lazy-function graph is created for every zone that is than called by the parent zone or by the root graph.
Currently, lazy-functions are even created for nodes that don't strictly require it, like reroutes or muted nodes. In the future we could avoid that at the cost of additional code complexity. So far, this does not seem to be a performance issue.
Definition in file geometry_nodes_lazy_function.cc.