Blender V4.3
inverse_eval.cc File Reference
#include <fmt/format.h>
#include "NOD_inverse_eval_path.hh"
#include "NOD_inverse_eval_run.hh"
#include "NOD_node_in_compute_context.hh"
#include "NOD_partial_eval.hh"
#include "NOD_value_elem_eval.hh"
#include "BKE_compute_contexts.hh"
#include "BKE_context.hh"
#include "BKE_idprop.hh"
#include "BKE_modifier.hh"
#include "BKE_node.hh"
#include "BKE_node_runtime.hh"
#include "BKE_node_tree_update.hh"
#include "BKE_type_conversions.hh"
#include "BLI_map.hh"
#include "BLI_math_euler.hh"
#include "BLI_math_matrix.hh"
#include "BLI_set.hh"
#include "BLI_stack.hh"
#include "DEG_depsgraph.hh"
#include "ED_node.hh"
#include "RNA_access.hh"
#include "RNA_path.hh"
#include "MOD_nodes.hh"
#include "ANIM_keyframing.hh"

Go to the source code of this file.

Namespaces

namespace  blender
 
namespace  blender::nodes
 
namespace  blender::nodes::inverse_eval
 

Typedefs

using blender::nodes::inverse_eval::RNAValueVariant = std::variant<float, int, bool>
 

Functions

std::optional< SocketValueVariantblender::nodes::inverse_eval::convert_single_socket_value (const bNodeSocket &old_socket, const bNodeSocket &new_socket, const SocketValueVariant &old_value)
 
static void blender::nodes::inverse_eval::evaluate_node_elem_upstream (const NodeInContext &ctx_node, Vector< const bNodeSocket * > &r_modified_inputs, Map< SocketInContext, ElemVariant > &elem_by_socket)
 
static bool blender::nodes::inverse_eval::propagate_socket_elem (const SocketInContext &ctx_from, const SocketInContext &ctx_to, Map< SocketInContext, ElemVariant > &elem_by_socket)
 
static void blender::nodes::inverse_eval::get_input_elems_to_propagate (const NodeInContext &ctx_node, Vector< const bNodeSocket * > &r_sockets, Map< SocketInContext, ElemVariant > &elem_by_socket)
 
LocalInverseEvalTargets blender::nodes::inverse_eval::find_local_inverse_eval_targets (const bNodeTree &tree, const SocketElem &initial_socket_elem)
 
static void blender::nodes::inverse_eval::evaluate_node_elem_downstream_filtered (const NodeInContext &ctx_node, const Map< SocketInContext, ElemVariant > &elem_by_socket_filter, Map< SocketInContext, ElemVariant > &elem_by_socket, Vector< const bNodeSocket * > &r_outputs_to_propagate)
 
static bool blender::nodes::inverse_eval::propagate_value_elem_filtered (const SocketInContext &ctx_from, const SocketInContext &ctx_to, const Map< SocketInContext, ElemVariant > &elem_by_socket_filter, Map< SocketInContext, ElemVariant > &elem_by_socket)
 
void blender::nodes::inverse_eval::foreach_element_on_inverse_eval_path (const ComputeContext &initial_context, const SocketElem &initial_socket_elem, FunctionRef< void(const ComputeContext &context)> foreach_context_fn, FunctionRef< void(const ComputeContext &context, const bNodeSocket &socket, const ElemVariant &elem)> foreach_socket_fn)
 
static bool blender::nodes::inverse_eval::set_rna_property (bContext &C, ID &id, const StringRefNull rna_path, const RNAValueVariant &value_variant)
 
static bool blender::nodes::inverse_eval::set_rna_property_float3 (bContext &C, ID &id, const StringRefNull rna_path, const float3 &value)
 
static bool blender::nodes::inverse_eval::set_socket_value (bContext &C, bNodeSocket &socket, const SocketValueVariant &value_variant)
 
static bool blender::nodes::inverse_eval::set_value_node_value (bContext &C, bNode &node, const SocketValueVariant &value_variant)
 
static bool blender::nodes::inverse_eval::set_modifier_value (bContext &C, Object &object, NodesModifierData &nmd, const bNodeTreeInterfaceSocket &interface_socket, const SocketValueVariant &value_variant)
 
std::optional< SocketValueVariantblender::nodes::inverse_eval::get_logged_socket_value (geo_eval_log::GeoTreeLog &tree_log, const bNodeSocket &socket)
 
static void blender::nodes::inverse_eval::backpropagate_socket_values_through_node (const NodeInContext &ctx_node, geo_eval_log::GeoModifierLog &eval_log, Map< SocketInContext, SocketValueVariant > &value_by_socket, Vector< const bNodeSocket * > &r_modified_inputs)
 
bool blender::nodes::inverse_eval::backpropagate_socket_values (bContext &C, Object &object, NodesModifierData &nmd, geo_eval_log::GeoModifierLog &eval_log, const Span< SocketToUpdate > sockets_to_update)