Blender V5.0
inverse_eval.cc File Reference
#include <fmt/format.h>
#include "NOD_inverse_eval_params.hh"
#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_library.hh"
#include "BKE_modifier.hh"
#include "BKE_node.hh"
#include "BKE_node_legacy_types.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_set.hh"
#include "BLI_string.h"
#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::GeoNodesLog &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::GeoNodesLog &eval_log, const Span< SocketToUpdate > sockets_to_update)