Blender  V3.3
Public Member Functions | Static Public Member Functions | List of all members
blender::modifiers::geometry_nodes::GeometryNodesEvaluator Class Reference

Public Member Functions

 GeometryNodesEvaluator (GeometryNodesEvaluationParams &params)
 
void execute ()
 
void create_states_for_reachable_nodes ()
 
void initialize_node_state (const DNode node, NodeState &node_state, LinearAllocator<> &allocator)
 
void destruct_node_states ()
 
void destruct_node_state (const DNode node, NodeState &node_state)
 
void forward_group_inputs ()
 
void schedule_initial_nodes ()
 
void schedule_node (LockedNode &locked_node)
 
void node_task_run (const DNode node, NodeTaskRunState *run_state)
 
bool node_task_preprocessing (const DNode node, NodeState &node_state, NodeTaskRunState *run_state)
 
bool finish_node_if_possible (LockedNode &locked_node)
 
bool prepare_node_outputs_for_execution (LockedNode &locked_node)
 
void require_non_lazy_inputs (LockedNode &locked_node)
 
void foreach_non_lazy_input (LockedNode &locked_node, FunctionRef< void(DInputSocket socket)> fn)
 
bool prepare_node_inputs_for_execution (LockedNode &locked_node)
 
void execute_node (const DNode node, NodeState &node_state, NodeTaskRunState *run_state)
 
void execute_geometry_node (const DNode node, NodeState &node_state, NodeTaskRunState *run_state)
 
void execute_multi_function_node (const DNode node, const nodes::NodeMultiFunctions::Item &fn_item, NodeState &node_state, NodeTaskRunState *run_state)
 
void execute_multi_function_node__field (const DNode node, const nodes::NodeMultiFunctions::Item &fn_item, NodeState &node_state, LinearAllocator<> &allocator, Span< const void * > input_values, Span< const ValueOrFieldCPPType * > input_types, NodeTaskRunState *run_state)
 
void execute_multi_function_node__value (const DNode node, const MultiFunction &fn, NodeState &node_state, LinearAllocator<> &allocator, Span< const void * > input_values, Span< const ValueOrFieldCPPType * > input_types, NodeTaskRunState *run_state)
 
void execute_unknown_node (const DNode node, NodeState &node_state, NodeTaskRunState *run_state)
 
void node_task_postprocessing (const DNode node, NodeState &node_state, bool was_executed, NodeTaskRunState *run_state)
 
void assert_expected_outputs_have_been_computed (LockedNode &locked_node)
 
void extract_group_outputs ()
 
bool set_input_required (LockedNode &locked_node, const DInputSocket input_socket)
 
void set_input_unused (LockedNode &locked_node, const DInputSocket socket)
 
void send_output_required_notification (const DOutputSocket socket, NodeTaskRunState *run_state)
 
void send_output_unused_notification (const DOutputSocket socket, NodeTaskRunState *run_state)
 
void add_node_to_task_pool (const DNode node)
 
void forward_output (const DOutputSocket from_socket, GMutablePointer value_to_forward, NodeTaskRunState *run_state)
 
bool should_forward_to_socket (const DInputSocket socket)
 
void forward_to_sockets_with_same_type (LinearAllocator<> &allocator, Span< DInputSocket > to_sockets, GMutablePointer value_to_forward, const DOutputSocket from_socket, NodeTaskRunState *run_state)
 
void add_value_to_input_socket (const DInputSocket socket, const DOutputSocket origin, GMutablePointer value, NodeTaskRunState *run_state)
 
void load_unlinked_input_value (LockedNode &locked_node, const DInputSocket input_socket, InputState &input_state, const DSocket origin_socket)
 
void destruct_input_value_if_exists (LockedNode &locked_node, const DInputSocket socket)
 
GMutablePointer get_value_from_socket (const DSocket socket, const CPPType &required_type)
 
void convert_value (const CPPType &from_type, const CPPType &to_type, const void *from_value, void *to_value)
 
void construct_default_value (const CPPType &type, void *r_value)
 
NodeStateget_node_state (const DNode node)
 
void log_socket_value (DSocket socket, InputState &input_state, Span< void * > values)
 
void log_socket_value (Span< DSocket > sockets, GPointer value)
 
void log_debug_message (DNode node, std::string message)
 
template<typename Function >
void with_locked_node (const DNode node, NodeState &node_state, NodeTaskRunState *run_state, const Function &function)
 

Static Public Member Functions

static void run_node_from_task_pool (TaskPool *task_pool, void *task_data)
 

Detailed Description

Definition at line 437 of file MOD_nodes_evaluator.cc.

Constructor & Destructor Documentation

◆ GeometryNodesEvaluator()

blender::modifiers::geometry_nodes::GeometryNodesEvaluator::GeometryNodesEvaluator ( GeometryNodesEvaluationParams params)
inline

Definition at line 471 of file MOD_nodes_evaluator.cc.

Member Function Documentation

◆ add_node_to_task_pool()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::add_node_to_task_pool ( const DNode  node)
inline

◆ add_value_to_input_socket()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::add_value_to_input_socket ( const DInputSocket  socket,
const DOutputSocket  origin,
GMutablePointer  value,
NodeTaskRunState run_state 
)
inline

◆ assert_expected_outputs_have_been_computed()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::assert_expected_outputs_have_been_computed ( LockedNode locked_node)
inline

◆ construct_default_value()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::construct_default_value ( const CPPType type,
void r_value 
)
inline

Definition at line 1661 of file MOD_nodes_evaluator.cc.

References type.

◆ convert_value()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::convert_value ( const CPPType from_type,
const CPPType to_type,
const void from_value,
void to_value 
)
inline

◆ create_states_for_reachable_nodes()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::create_states_for_reachable_nodes ( )
inline

◆ destruct_input_value_if_exists()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::destruct_input_value_if_exists ( LockedNode locked_node,
const DInputSocket  socket 
)
inline

◆ destruct_node_state()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::destruct_node_state ( const DNode  node,
NodeState node_state 
)
inline

◆ destruct_node_states()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::destruct_node_states ( )
inline

◆ execute()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::execute ( )
inline

◆ execute_geometry_node()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::execute_geometry_node ( const DNode  node,
NodeState node_state,
NodeTaskRunState run_state 
)
inline

◆ execute_multi_function_node()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::execute_multi_function_node ( const DNode  node,
const nodes::NodeMultiFunctions::Item fn_item,
NodeState node_state,
NodeTaskRunState run_state 
)
inline

◆ execute_multi_function_node__field()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::execute_multi_function_node__field ( const DNode  node,
const nodes::NodeMultiFunctions::Item fn_item,
NodeState node_state,
LinearAllocator<> &  allocator,
Span< const void * >  input_values,
Span< const ValueOrFieldCPPType * >  input_types,
NodeTaskRunState run_state 
)
inline

◆ execute_multi_function_node__value()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::execute_multi_function_node__value ( const DNode  node,
const MultiFunction fn,
NodeState node_state,
LinearAllocator<> &  allocator,
Span< const void * >  input_values,
Span< const ValueOrFieldCPPType * >  input_types,
NodeTaskRunState run_state 
)
inline

◆ execute_node()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::execute_node ( const DNode  node,
NodeState node_state,
NodeTaskRunState run_state 
)
inline

◆ execute_unknown_node()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::execute_unknown_node ( const DNode  node,
NodeState node_state,
NodeTaskRunState run_state 
)
inline

◆ extract_group_outputs()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::extract_group_outputs ( )
inline

◆ finish_node_if_possible()

bool blender::modifiers::geometry_nodes::GeometryNodesEvaluator::finish_node_if_possible ( LockedNode locked_node)
inline

◆ foreach_non_lazy_input()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::foreach_non_lazy_input ( LockedNode locked_node,
FunctionRef< void(DInputSocket socket)>  fn 
)
inline

◆ forward_group_inputs()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::forward_group_inputs ( )
inline

◆ forward_output()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::forward_output ( const DOutputSocket  from_socket,
GMutablePointer  value_to_forward,
NodeTaskRunState run_state 
)
inline

◆ forward_to_sockets_with_same_type()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::forward_to_sockets_with_same_type ( LinearAllocator<> &  allocator,
Span< DInputSocket to_sockets,
GMutablePointer  value_to_forward,
const DOutputSocket  from_socket,
NodeTaskRunState run_state 
)
inline

◆ get_node_state()

NodeState& blender::modifiers::geometry_nodes::GeometryNodesEvaluator::get_node_state ( const DNode  node)
inline

◆ get_value_from_socket()

GMutablePointer blender::modifiers::geometry_nodes::GeometryNodesEvaluator::get_value_from_socket ( const DSocket  socket,
const CPPType required_type 
)
inline

◆ initialize_node_state()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::initialize_node_state ( const DNode  node,
NodeState node_state,
LinearAllocator<> &  allocator 
)
inline

Definition at line 546 of file MOD_nodes_evaluator.cc.

References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::LinearAllocator< Allocator >::construct(), blender::LinearAllocator< Allocator >::construct_array(), blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::contains_as(), blender::nodes::DInputSocket::foreach_origin_socket(), blender::nodes::DOutputSocket::foreach_target_socket(), blender::modifiers::geometry_nodes::get_socket_cpp_type(), blender::modifiers::geometry_nodes::NodeState::inputs, blender::nodes::SocketRef::is_available(), blender::Vector< T, InlineBufferCapacity, Allocator >::is_empty(), blender::nodes::InputSocketRef::is_multi_input_socket(), blender::modifiers::geometry_nodes::InputState::multi, node, blender::nodes::DSocket::node(), blender::modifiers::geometry_nodes::MultiInputValue::origins, blender::modifiers::geometry_nodes::OutputState::output_usage, blender::modifiers::geometry_nodes::NodeState::outputs, blender::modifiers::geometry_nodes::OutputState::potential_users, blender::Vector< T, InlineBufferCapacity, Allocator >::resize(), blender::modifiers::geometry_nodes::InputState::single, blender::Vector< T, InlineBufferCapacity, Allocator >::size(), type, blender::modifiers::geometry_nodes::InputState::type, UNUSED, blender::modifiers::geometry_nodes::Unused, blender::modifiers::geometry_nodes::InputState::usage, blender::modifiers::geometry_nodes::InputState::value, and blender::modifiers::geometry_nodes::MultiInputValue::values.

◆ load_unlinked_input_value()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::load_unlinked_input_value ( LockedNode locked_node,
const DInputSocket  input_socket,
InputState input_state,
const DSocket  origin_socket 
)
inline

◆ log_debug_message()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::log_debug_message ( DNode  node,
std::string  message 
)
inline

◆ log_socket_value() [1/2]

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::log_socket_value ( DSocket  socket,
InputState input_state,
Span< void * >  values 
)
inline

◆ log_socket_value() [2/2]

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::log_socket_value ( Span< DSocket sockets,
GPointer  value 
)
inline

◆ node_task_postprocessing()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::node_task_postprocessing ( const DNode  node,
NodeState node_state,
bool  was_executed,
NodeTaskRunState run_state 
)
inline

◆ node_task_preprocessing()

bool blender::modifiers::geometry_nodes::GeometryNodesEvaluator::node_task_preprocessing ( const DNode  node,
NodeState node_state,
NodeTaskRunState run_state 
)
inline

◆ node_task_run()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::node_task_run ( const DNode  node,
NodeTaskRunState run_state 
)
inline

◆ prepare_node_inputs_for_execution()

bool blender::modifiers::geometry_nodes::GeometryNodesEvaluator::prepare_node_inputs_for_execution ( LockedNode locked_node)
inline

◆ prepare_node_outputs_for_execution()

bool blender::modifiers::geometry_nodes::GeometryNodesEvaluator::prepare_node_outputs_for_execution ( LockedNode locked_node)
inline

◆ require_non_lazy_inputs()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::require_non_lazy_inputs ( LockedNode locked_node)
inline

Definition at line 872 of file MOD_nodes_evaluator.cc.

◆ run_node_from_task_pool()

static void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::run_node_from_task_pool ( TaskPool task_pool,
void task_data 
)
inlinestatic

◆ schedule_initial_nodes()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::schedule_initial_nodes ( )
inline

◆ schedule_node()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::schedule_node ( LockedNode locked_node)
inline

◆ send_output_required_notification()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::send_output_required_notification ( const DOutputSocket  socket,
NodeTaskRunState run_state 
)
inline

◆ send_output_unused_notification()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::send_output_unused_notification ( const DOutputSocket  socket,
NodeTaskRunState run_state 
)
inline

◆ set_input_required()

bool blender::modifiers::geometry_nodes::GeometryNodesEvaluator::set_input_required ( LockedNode locked_node,
const DInputSocket  input_socket 
)
inline

Load the required input from the socket or trigger nodes to the left to compute the value.

Returns
True when the node will be triggered by another node again when the value is computed.

Definition at line 1237 of file MOD_nodes_evaluator.cc.

References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), BLI_assert, blender::modifiers::geometry_nodes::LockedNode::delayed_required_outputs, blender::nodes::DInputSocket::foreach_origin_socket(), blender::nodes::SocketRef::index(), blender::modifiers::geometry_nodes::NodeState::inputs, blender::Vector< T, InlineBufferCapacity, Allocator >::is_empty(), blender::nodes::SocketRef::is_input(), blender::nodes::InputSocketRef::is_multi_input_socket(), blender::modifiers::geometry_nodes::NodeState::missing_required_inputs, blender::modifiers::geometry_nodes::MultiInputValue::missing_values(), blender::modifiers::geometry_nodes::InputState::multi, blender::modifiers::geometry_nodes::LockedNode::node, blender::nodes::DSocket::node(), blender::modifiers::geometry_nodes::LockedNode::node_state, blender::modifiers::geometry_nodes::Required, blender::modifiers::geometry_nodes::InputState::single, blender::modifiers::geometry_nodes::Unused, blender::modifiers::geometry_nodes::InputState::usage, blender::modifiers::geometry_nodes::SingleInputValue::value, blender::modifiers::geometry_nodes::InputState::value, and blender::modifiers::geometry_nodes::InputState::was_ready_for_execution.

Referenced by blender::modifiers::geometry_nodes::NodeParamsProvider::lazy_require_input().

◆ set_input_unused()

void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::set_input_unused ( LockedNode locked_node,
const DInputSocket  socket 
)
inline

◆ should_forward_to_socket()

bool blender::modifiers::geometry_nodes::GeometryNodesEvaluator::should_forward_to_socket ( const DInputSocket  socket)
inline

◆ with_locked_node()

template<typename Function >
void blender::modifiers::geometry_nodes::GeometryNodesEvaluator::with_locked_node ( const DNode  node,
NodeState node_state,
NodeTaskRunState run_state,
const Function &  function 
)
inline

The documentation for this class was generated from the following file: