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)
 
NodeState & get_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: