Blender  V2.93
Classes | Namespaces
multi_function_network_optimization.cc File Reference
#include <typeinfo>
#include "FN_multi_function_builder.hh"
#include "FN_multi_function_network_evaluation.hh"
#include "FN_multi_function_network_optimization.hh"
#include "BLI_disjoint_set.hh"
#include "BLI_ghash.h"
#include "BLI_map.hh"
#include "BLI_multi_value_map.hh"
#include "BLI_rand.h"
#include "BLI_stack.hh"

Go to the source code of this file.

Classes

class  blender::fn::mf_network_optimization::MyClass
 

Namespaces

 blender
 
 blender::fn
 
 blender::fn::mf_network_optimization
 

Functions

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