Blender  V2.93
Classes
blender::fn::mf_network_optimization Namespace Reference

Classes

class  MyClass
 

Functions

Dead Node Removal
void dead_node_removal (MFNetwork &network)
 
Constant Folding
void constant_folding (MFNetwork &network, ResourceScope &scope)
 
static bool function_node_can_be_constant (MFFunctionNode *node)
 
static Vector< MFNode * > find_non_constant_nodes (MFNetwork &network)
 
static bool output_has_non_constant_target_node (MFOutputSocket *output_socket, Span< bool > is_not_constant_mask)
 
static MFInputSockettry_find_dummy_target_socket (MFOutputSocket *output_socket)
 
static Vector< MFInputSocket * > find_constant_inputs_to_fold (MFNetwork &network, Vector< MFDummyNode * > &r_temporary_nodes)
 
static void prepare_params_for_constant_folding (const MultiFunction &network_fn, MFParamsBuilder &params, ResourceScope &scope)
 
static Array< MFOutputSocket * > add_constant_folded_sockets (const MultiFunction &network_fn, MFParamsBuilder &params, ResourceScope &scope, MFNetwork &network)
 
static Array< MFOutputSocket * > compute_constant_sockets_and_add_folded_nodes (MFNetwork &network, Span< const MFInputSocket * > sockets_to_compute, ResourceScope &scope)
 
Common Sub-network Elimination
void common_subnetwork_elimination (MFNetwork &network)
 
static uint64_t compute_node_hash (MFFunctionNode &node, RNG *rng, Span< uint64_t > node_hashes)
 
static Array< uint64_tcompute_node_hashes (MFNetwork &network)
 
static MultiValueMap< uint64_t, MFNode * > group_nodes_by_hash (MFNetwork &network, Span< uint64_t > node_hashes)
 
static bool functions_are_equal (const MultiFunction &a, const MultiFunction &b)
 
static bool nodes_output_same_values (DisjointSet &cache, const MFNode &a, const MFNode &b)
 
static void relink_duplicate_nodes (MFNetwork &network, MultiValueMap< uint64_t, MFNode * > &nodes_by_hash)
 
Utility functions to find nodes in a network.
static bool set_tag_and_check_if_modified (bool &tag, bool new_value)
 
static Array< bool > mask_nodes_to_the_left (MFNetwork &network, Span< MFNode * > nodes)
 
static Array< bool > mask_nodes_to_the_right (MFNetwork &network, Span< MFNode * > nodes)
 
static Vector< MFNode * > find_nodes_based_on_mask (MFNetwork &network, Span< bool > id_mask, bool mask_value)
 

Function Documentation

◆ add_constant_folded_sockets()

static Array<MFOutputSocket *> blender::fn::mf_network_optimization::add_constant_folded_sockets ( const MultiFunction network_fn,
MFParamsBuilder params,
ResourceScope scope,
MFNetwork network 
)
static

◆ common_subnetwork_elimination()

void blender::fn::mf_network_optimization::common_subnetwork_elimination ( MFNetwork network)

Tries to detect duplicate sub-networks and eliminates them. This can help quite a lot when node groups were used to create the network.

Definition at line 492 of file multi_function_network_optimization.cc.

References compute_node_hashes(), group_nodes_by_hash(), and relink_duplicate_nodes().

◆ compute_constant_sockets_and_add_folded_nodes()

static Array<MFOutputSocket *> blender::fn::mf_network_optimization::compute_constant_sockets_and_add_folded_nodes ( MFNetwork network,
Span< const MFInputSocket * >  sockets_to_compute,
ResourceScope scope 
)
static

◆ compute_node_hash()

static uint64_t blender::fn::mf_network_optimization::compute_node_hash ( MFFunctionNode node,
RNG rng,
Span< uint64_t node_hashes 
)
static

◆ compute_node_hashes()

static Array<uint64_t> blender::fn::mf_network_optimization::compute_node_hashes ( MFNetwork network)
static

◆ constant_folding()

void blender::fn::mf_network_optimization::constant_folding ( MFNetwork network,
ResourceScope scope 
)

◆ dead_node_removal()

void blender::fn::mf_network_optimization::dead_node_removal ( MFNetwork network)

Unused nodes are all those nodes that no dummy node depends upon.

Definition at line 129 of file multi_function_network_optimization.cc.

References blender::fn::MFNetwork::dummy_nodes(), find_nodes_based_on_mask(), mask_nodes_to_the_left(), and blender::fn::MFNetwork::remove().

◆ find_constant_inputs_to_fold()

static Vector<MFInputSocket *> blender::fn::mf_network_optimization::find_constant_inputs_to_fold ( MFNetwork network,
Vector< MFDummyNode * > &  r_temporary_nodes 
)
static

◆ find_nodes_based_on_mask()

static Vector<MFNode *> blender::fn::mf_network_optimization::find_nodes_based_on_mask ( MFNetwork network,
Span< bool >  id_mask,
bool  mask_value 
)
static

◆ find_non_constant_nodes()

static Vector<MFNode *> blender::fn::mf_network_optimization::find_non_constant_nodes ( MFNetwork network)
static

◆ function_node_can_be_constant()

static bool blender::fn::mf_network_optimization::function_node_can_be_constant ( MFFunctionNode node)
static

Definition at line 143 of file multi_function_network_optimization.cc.

References node.

Referenced by find_non_constant_nodes().

◆ functions_are_equal()

static bool blender::fn::mf_network_optimization::functions_are_equal ( const MultiFunction a,
const MultiFunction b 
)
static

Definition at line 418 of file multi_function_network_optimization.cc.

References Freestyle::a.

Referenced by nodes_output_same_values().

◆ group_nodes_by_hash()

static MultiValueMap<uint64_t, MFNode *> blender::fn::mf_network_optimization::group_nodes_by_hash ( MFNetwork network,
Span< uint64_t node_hashes 
)
static

◆ mask_nodes_to_the_left()

static Array<bool> blender::fn::mf_network_optimization::mask_nodes_to_the_left ( MFNetwork network,
Span< MFNode * >  nodes 
)
static

◆ mask_nodes_to_the_right()

static Array<bool> blender::fn::mf_network_optimization::mask_nodes_to_the_right ( MFNetwork network,
Span< MFNode * >  nodes 
)
static

◆ nodes_output_same_values()

static bool blender::fn::mf_network_optimization::nodes_output_same_values ( DisjointSet cache,
const MFNode a,
const MFNode b 
)
static

◆ output_has_non_constant_target_node()

static bool blender::fn::mf_network_optimization::output_has_non_constant_target_node ( MFOutputSocket output_socket,
Span< bool >  is_not_constant_mask 
)
static

◆ prepare_params_for_constant_folding()

static void blender::fn::mf_network_optimization::prepare_params_for_constant_folding ( const MultiFunction network_fn,
MFParamsBuilder params,
ResourceScope scope 
)
static

◆ relink_duplicate_nodes()

static void blender::fn::mf_network_optimization::relink_duplicate_nodes ( MFNetwork network,
MultiValueMap< uint64_t, MFNode * > &  nodes_by_hash 
)
static

◆ set_tag_and_check_if_modified()

static bool blender::fn::mf_network_optimization::set_tag_and_check_if_modified ( bool &  tag,
bool  new_value 
)
static

◆ try_find_dummy_target_socket()

static MFInputSocket* blender::fn::mf_network_optimization::try_find_dummy_target_socket ( MFOutputSocket output_socket)
static