45using lf::LazyFunction;
46using mf::MultiFunction;
76using Behavior = std::variant<PassThrough, OutputCopy, OutputMove>;
121using Behavior = std::variant<PassThrough, StoreNewState, ReadSingle, ReadInterpolated, ReadError>;
289 mutable std::optional<geo_eval_log::GeoTreeLogger *> tree_logger_;
300 if (!tree_logger_.has_value()) {
301 this->ensure_tree_logger(user_data);
303 return *tree_logger_;
490 start_ = geo_eval_log::Clock::now();
500 tree_logger->execution_time += (end - start_);
517 start_ = geo_eval_log::Clock::now();
527 tree_logger->node_execution_times.append(*tree_logger->allocator,
528 {node_.identifier, start_, end});
620 bool expose_all_reference_sets,
627 const int lf_socket_i);
632 const int lf_socket_i);
642 std::string message);
virtual BakeNodeBehavior * get(const int id) const =0
virtual SimulationZoneBehavior * get(const int zone_id) const =0
LazyFunctionForLogicalOr(const int inputs_num)
void execute_impl(lf::Params ¶ms, const lf::Context &context) const override
~ScopedComputeContextTimer()
ScopedComputeContextTimer(lf::Context &entered_context)
ScopedNodeTimer(const lf::Context &context, const bNode &node)
QuaternionBase< float > Quaternion
Clock::time_point TimePoint
std::variant< PassThrough, StoreNewState, ReadSingle, ReadInterpolated, ReadError > Behavior
void initialize_zone_wrapper(const bNodeTreeZone &zone, ZoneBuildInfo &zone_info, const ZoneBodyFunction &body_fn, const bool expose_all_reference_sets, Vector< lf::Input > &r_inputs, Vector< lf::Output > &r_outputs)
std::unique_ptr< LazyFunction > get_simulation_output_lazy_function(const bNode &node, GeometryNodesLazyFunctionGraphInfo &own_lf_graph_info)
std::unique_ptr< LazyFunction > get_index_switch_node_lazy_function(const bNode &node, GeometryNodesLazyFunctionGraphInfo &lf_graph_info)
std::unique_ptr< LazyFunction > get_warning_node_lazy_function(const bNode &node)
void construct_socket_default_value(const bke::bNodeSocketType &stype, void *r_value)
std::unique_ptr< LazyFunction > get_menu_switch_node_socket_usage_lazy_function(const bNode &node)
std::unique_ptr< LazyFunction > get_simulation_input_lazy_function(const bNodeTree &node_tree, const bNode &node, GeometryNodesLazyFunctionGraphInfo &own_lf_graph_info)
bool should_log_socket_values_for_context(const GeoNodesUserData &user_data, const ComputeContextHash hash)
LazyFunction & build_closure_zone_lazy_function(ResourceScope &scope, const bNodeTree &btree, const bke::bNodeTreeZone &zone, ZoneBuildInfo &zone_info, const ZoneBodyFunction &body_fn)
LazyFunction & build_repeat_zone_lazy_function(ResourceScope &scope, const bNodeTree &btree, const bke::bNodeTreeZone &zone, ZoneBuildInfo &zone_info, const ZoneBodyFunction &body_fn)
std::unique_ptr< LazyFunction > get_switch_node_lazy_function(const bNode &node)
std::string make_anonymous_attribute_socket_inspection_string(const bNodeSocket &socket)
std::unique_ptr< LazyFunction > get_bake_lazy_function(const bNode &node, GeometryNodesLazyFunctionGraphInfo &lf_graph_info)
const GeometryNodesLazyFunctionGraphInfo * ensure_geometry_nodes_lazy_function_graph(const bNodeTree &btree)
std::optional< FoundNestedNodeID > find_nested_node_id(const GeoNodesUserData &user_data, const int node_id)
void set_default_remaining_node_outputs(lf::Params ¶ms, const bNode &node)
void report_from_multi_function(const mf::Context &context, NodeWarningType type, std::string message)
std::unique_ptr< LazyFunction > get_enable_output_node_lazy_function(const bNode &node, GeometryNodesLazyFunctionGraphInfo &own_lf_graph_info)
void set_default_value_for_output_socket(lf::Params ¶ms, const int lf_index, const bNodeSocket &bsocket)
std::string zone_wrapper_output_name(const ZoneBuildInfo &zone_info, const bNodeTreeZone &zone, const Span< lf::Output > outputs, const int lf_socket_i)
std::unique_ptr< LazyFunction > get_menu_switch_node_lazy_function(const bNode &node, GeometryNodesLazyFunctionGraphInfo &lf_graph_info)
LazyFunction & build_foreach_geometry_element_zone_lazy_function(ResourceScope &scope, const bNodeTree &btree, const bke::bNodeTreeZone &zone, ZoneBuildInfo &zone_info, const ZoneBodyFunction &body_fn)
std::string zone_wrapper_input_name(const ZoneBuildInfo &zone_info, const bNodeTreeZone &zone, const Span< lf::Input > inputs, const int lf_socket_i)
EvaluateClosureFunction build_evaluate_closure_node_lazy_function(ResourceScope &scope, const bNode &bnode)
std::unique_ptr< T, DestructValueAtAddress< T > > destruct_ptr
MatBase< float, 4, 4 > float4x4
VecBase< int32_t, 2 > int2
VecBase< float, 3 > float3
static blender::bke::bNodeSocketTemplate outputs[]
static blender::bke::bNodeSocketTemplate inputs[]
bke::bake::BakeDataBlockMap * data_block_map
sim_output::Behavior behavior
Vector< int > input_usages
Vector< int > output_usages
Map< int, int > reference_set_by_output
const LazyFunction * lazy_function
EvaluateClosureFunctionIndices indices
GeoNodesSimulationParams * simulation_params
GeoNodesModifierData * modifier_data
const bNodeTree * root_ntree
const Object * self_object() const
const Set< ComputeContextHash > * socket_log_contexts
GeoNodesOperatorData * operator_data
GeoNodesBakeParams * bake_params
geo_eval_log::GeoNodesLog * eval_log
const GeoNodesSideEffectNodes * side_effect_nodes
geo_eval_log::GeoTreeLogger * try_get_tree_logger(const GeoNodesUserData &user_data) const
GeoNodesLocalUserData(GeoNodesUserData &)
const Object * self_object
math::Quaternion cursor_rotation
float4x4 viewport_viewmat
const GeoNodesOperatorDepsgraphs * depsgraphs
const Object * self_object_orig
bool viewport_is_perspective
~GeoNodesOperatorDepsgraphs()
const ID * get_evaluated_id(const ID &id_orig) const
MultiValueMap< std::pair< ComputeContextHash, int32_t >, int > iterations_by_iteration_zone
MultiValueMap< ComputeContextHash, const lf::FunctionNode * > nodes_by_context
const ComputeContext * compute_context
destruct_ptr< fn::LocalUserData > get_local(LinearAllocator<> &allocator) override
const GeoNodesCallData * call_data
Vector< InputUsageHint > group_input_usage_hints
Array< int > lf_index_by_bsocket
Map< const bke::bNodeTreeZone *, const lf::FunctionNode * > zone_node_map
Array< int > lf_input_index_for_output_bsocket_usage
Array< int > lf_input_index_for_reference_set_for_output
MultiValueMap< const lf::Socket *, const bNodeSocket * > bsockets_by_lf_socket_map
Map< const bNode *, const lf::FunctionNode * > possible_side_effect_node_map
Map< const bNode *, const lf::FunctionNode * > group_node_map
Vector< int > geometry_outputs
const LazyFunction * function
struct blender::nodes::GeometryNodesGroupFunction::@176034106072117145033162003214300177076220367077::@201205044241144324034052062053171123334141114245 references_to_propagate
int num_inline_nodes_approximate
GeometryNodeLazyFunctionGraphMapping mapping
Map< int, const lf::Graph * > debug_zone_body_graphs
GeometryNodesGroupFunction function
sim_output::Behavior output
bke::bake::BakeDataBlockMap * data_block_map
sim_input::Behavior input
ZoneFunctionIndices indices
const LazyFunction * function
ZoneFunctionIndices indices
const LazyFunction * lazy_function
Vector< int > input_usages
Vector< int > border_links
Vector< int > border_link_usages
Map< ReferenceSetIndex, int > reference_sets
Vector< int > output_usages
bke::bake::BakeStateRef prev_state
bke::bake::BakeStateRef next_state
bke::bake::BakeStateRef state
std::function< void(bke::bake::BakeState state)> store_fn