Nodes: move some code from blenkernel directory to nodes
This also introduces the `blender::nodes` namespace. Eventually, we want to move most/all of the node implementation files into this namespace. The reason for this file-move is that the code fits much better into the `nodes` directory than in the `blenkernel` directory.
This commit is contained in:
parent
0a40c671b0
commit
5910dbdbf7
@ -106,18 +106,18 @@ typedef struct bNodeSocketTemplate {
|
||||
* However, achieving this requires quite a few changes currently. */
|
||||
#ifdef __cplusplus
|
||||
namespace blender {
|
||||
namespace bke {
|
||||
namespace nodes {
|
||||
class SocketMFNetworkBuilder;
|
||||
class NodeMFNetworkBuilder;
|
||||
} // namespace bke
|
||||
} // namespace nodes
|
||||
namespace fn {
|
||||
class MFDataType;
|
||||
}
|
||||
} // namespace blender
|
||||
|
||||
using NodeExpandInMFNetworkFunction = void (*)(blender::bke::NodeMFNetworkBuilder &builder);
|
||||
using NodeExpandInMFNetworkFunction = void (*)(blender::nodes::NodeMFNetworkBuilder &builder);
|
||||
using SocketGetMFDataTypeFunction = blender::fn::MFDataType (*)();
|
||||
using SocketExpandInMFNetworkFunction = void (*)(blender::bke::SocketMFNetworkBuilder &builder);
|
||||
using SocketExpandInMFNetworkFunction = void (*)(blender::nodes::SocketMFNetworkBuilder &builder);
|
||||
|
||||
#else
|
||||
typedef void *NodeExpandInMFNetworkFunction;
|
||||
|
@ -107,7 +107,6 @@ set(SRC
|
||||
intern/customdata_file.c
|
||||
intern/data_transfer.c
|
||||
intern/deform.c
|
||||
intern/derived_node_tree.cc
|
||||
intern/displist.c
|
||||
intern/displist_tangent.c
|
||||
intern/dynamicpaint.c
|
||||
@ -188,8 +187,6 @@ set(SRC
|
||||
intern/multires_unsubdivide.c
|
||||
intern/nla.c
|
||||
intern/node.c
|
||||
intern/node_tree_multi_function.cc
|
||||
intern/node_tree_ref.cc
|
||||
intern/object.c
|
||||
intern/object_deform.c
|
||||
intern/object_dupli.c
|
||||
@ -298,7 +295,6 @@ set(SRC
|
||||
BKE_customdata_file.h
|
||||
BKE_data_transfer.h
|
||||
BKE_deform.h
|
||||
BKE_derived_node_tree.hh
|
||||
BKE_displist.h
|
||||
BKE_displist_tangent.h
|
||||
BKE_duplilist.h
|
||||
@ -359,8 +355,6 @@ set(SRC
|
||||
BKE_multires.h
|
||||
BKE_nla.h
|
||||
BKE_node.h
|
||||
BKE_node_tree_multi_function.hh
|
||||
BKE_node_tree_ref.hh
|
||||
BKE_object.h
|
||||
BKE_object_deform.h
|
||||
BKE_object_facemap.h
|
||||
|
@ -45,10 +45,10 @@
|
||||
#include "BKE_lib_remap.h"
|
||||
#include "BKE_main.h"
|
||||
#include "BKE_node.h"
|
||||
#include "BKE_node_tree_multi_function.hh"
|
||||
#include "BKE_pointcache.h"
|
||||
#include "BKE_simulation.h"
|
||||
|
||||
#include "NOD_node_tree_multi_function.hh"
|
||||
#include "NOD_simulation.h"
|
||||
|
||||
#include "BLT_translation.h"
|
||||
@ -216,16 +216,19 @@ static void copy_states_to_cow(Simulation *simulation_orig, Simulation *simulati
|
||||
}
|
||||
|
||||
static Map<const fn::MFOutputSocket *, std::string> deduplicate_attribute_nodes(
|
||||
fn::MFNetwork &network, MFNetworkTreeMap &network_map, const DerivedNodeTree &tree)
|
||||
fn::MFNetwork &network,
|
||||
nodes::MFNetworkTreeMap &network_map,
|
||||
const nodes::DerivedNodeTree &tree)
|
||||
{
|
||||
Span<const DNode *> attribute_dnodes = tree.nodes_by_type("SimulationNodeParticleAttribute");
|
||||
Span<const nodes::DNode *> attribute_dnodes = tree.nodes_by_type(
|
||||
"SimulationNodeParticleAttribute");
|
||||
uint amount = attribute_dnodes.size();
|
||||
if (amount == 0) {
|
||||
return {};
|
||||
}
|
||||
|
||||
Vector<fn::MFInputSocket *> name_sockets;
|
||||
for (const DNode *dnode : attribute_dnodes) {
|
||||
for (const nodes::DNode *dnode : attribute_dnodes) {
|
||||
fn::MFInputSocket &name_socket = network_map.lookup_dummy(dnode->input(0));
|
||||
name_sockets.append(&name_socket);
|
||||
}
|
||||
@ -309,10 +312,10 @@ class CustomDataAttributesRef {
|
||||
}
|
||||
};
|
||||
|
||||
static std::string dnode_to_path(const DNode &dnode)
|
||||
static std::string dnode_to_path(const nodes::DNode &dnode)
|
||||
{
|
||||
std::string path;
|
||||
for (const DParentNode *parent = dnode.parent(); parent; parent = parent->parent()) {
|
||||
for (const nodes::DParentNode *parent = dnode.parent(); parent; parent = parent->parent()) {
|
||||
path = parent->node_ref().name() + "/" + path;
|
||||
}
|
||||
path = path + dnode.name();
|
||||
@ -373,10 +376,10 @@ static void add_missing_particle_states(Simulation *simulation, Span<std::string
|
||||
}
|
||||
|
||||
static void reinitialize_empty_simulation_states(Simulation *simulation,
|
||||
const DerivedNodeTree &tree)
|
||||
const nodes::DerivedNodeTree &tree)
|
||||
{
|
||||
VectorSet<std::string> state_names;
|
||||
for (const DNode *dnode : tree.nodes_by_type("SimulationNodeParticleSimulation")) {
|
||||
for (const nodes::DNode *dnode : tree.nodes_by_type("SimulationNodeParticleSimulation")) {
|
||||
state_names.add(dnode_to_path(*dnode));
|
||||
}
|
||||
|
||||
@ -385,10 +388,11 @@ static void reinitialize_empty_simulation_states(Simulation *simulation,
|
||||
add_missing_particle_states(simulation, state_names);
|
||||
}
|
||||
|
||||
static void update_simulation_state_list(Simulation *simulation, const DerivedNodeTree &tree)
|
||||
static void update_simulation_state_list(Simulation *simulation,
|
||||
const nodes::DerivedNodeTree &tree)
|
||||
{
|
||||
VectorSet<std::string> state_names;
|
||||
for (const DNode *dnode : tree.nodes_by_type("SimulationNodeParticleSimulation")) {
|
||||
for (const nodes::DNode *dnode : tree.nodes_by_type("SimulationNodeParticleSimulation")) {
|
||||
state_names.add(dnode_to_path(*dnode));
|
||||
}
|
||||
|
||||
@ -672,14 +676,15 @@ class ParticleFunctionForce : public ParticleForce {
|
||||
};
|
||||
|
||||
static Vector<const ParticleForce *> create_forces_for_particle_simulation(
|
||||
const DNode &simulation_node,
|
||||
MFNetworkTreeMap &network_map,
|
||||
const nodes::DNode &simulation_node,
|
||||
nodes::MFNetworkTreeMap &network_map,
|
||||
ResourceCollector &resources,
|
||||
const Map<const fn::MFOutputSocket *, std::string> &attribute_inputs)
|
||||
{
|
||||
Vector<const ParticleForce *> forces;
|
||||
for (const DOutputSocket *origin_socket : simulation_node.input(2, "Forces").linked_sockets()) {
|
||||
const DNode &origin_node = origin_socket->node();
|
||||
for (const nodes::DOutputSocket *origin_socket :
|
||||
simulation_node.input(2, "Forces").linked_sockets()) {
|
||||
const nodes::DNode &origin_node = origin_socket->node();
|
||||
if (origin_node.idname() != "SimulationNodeForce") {
|
||||
continue;
|
||||
}
|
||||
@ -701,12 +706,13 @@ static Vector<const ParticleForce *> create_forces_for_particle_simulation(
|
||||
}
|
||||
|
||||
static Map<std::string, Vector<const ParticleForce *>> collect_forces(
|
||||
MFNetworkTreeMap &network_map,
|
||||
nodes::MFNetworkTreeMap &network_map,
|
||||
ResourceCollector &resources,
|
||||
const Map<const fn::MFOutputSocket *, std::string> &attribute_inputs)
|
||||
{
|
||||
Map<std::string, Vector<const ParticleForce *>> forces_by_simulation;
|
||||
for (const DNode *dnode : network_map.tree().nodes_by_type("SimulationNodeParticleSimulation")) {
|
||||
for (const nodes::DNode *dnode :
|
||||
network_map.tree().nodes_by_type("SimulationNodeParticleSimulation")) {
|
||||
std::string name = dnode_to_path(*dnode);
|
||||
Vector<const ParticleForce *> forces = create_forces_for_particle_simulation(
|
||||
*dnode, network_map, resources, attribute_inputs);
|
||||
@ -729,12 +735,12 @@ static void simulation_data_update(Depsgraph *depsgraph, Scene *scene, Simulatio
|
||||
|
||||
Simulation *simulation_orig = (Simulation *)DEG_get_original_id(&simulation_cow->id);
|
||||
|
||||
NodeTreeRefMap tree_refs;
|
||||
nodes::NodeTreeRefMap tree_refs;
|
||||
/* TODO: Use simulation_cow, but need to add depsgraph relations before that. */
|
||||
const DerivedNodeTree tree{simulation_orig->nodetree, tree_refs};
|
||||
const nodes::DerivedNodeTree tree{simulation_orig->nodetree, tree_refs};
|
||||
fn::MFNetwork network;
|
||||
ResourceCollector resources;
|
||||
MFNetworkTreeMap network_map = insert_node_tree_into_mf_network(network, tree, resources);
|
||||
nodes::MFNetworkTreeMap network_map = insert_node_tree_into_mf_network(network, tree, resources);
|
||||
Map<const fn::MFOutputSocket *, std::string> attribute_inputs = deduplicate_attribute_nodes(
|
||||
network, network_map, tree);
|
||||
fn::mf_network_optimization::constant_folding(network, resources);
|
||||
|
@ -273,9 +273,12 @@ set(SRC
|
||||
texture/node_texture_tree.c
|
||||
texture/node_texture_util.c
|
||||
|
||||
intern/derived_node_tree.cc
|
||||
intern/node_common.c
|
||||
intern/node_exec.c
|
||||
intern/node_socket.cc
|
||||
intern/node_tree_multi_function.cc
|
||||
intern/node_tree_ref.cc
|
||||
intern/node_util.c
|
||||
|
||||
composite/node_composite_util.h
|
||||
@ -286,7 +289,10 @@ set(SRC
|
||||
|
||||
NOD_common.h
|
||||
NOD_composite.h
|
||||
NOD_derived_node_tree.hh
|
||||
NOD_function.h
|
||||
NOD_node_tree_multi_function.hh
|
||||
NOD_node_tree_ref.hh
|
||||
NOD_shader.h
|
||||
NOD_simulation.h
|
||||
NOD_socket.h
|
||||
|
14
source/blender/blenkernel/BKE_derived_node_tree.hh → source/blender/nodes/NOD_derived_node_tree.hh
14
source/blender/blenkernel/BKE_derived_node_tree.hh → source/blender/nodes/NOD_derived_node_tree.hh
@ -14,11 +14,11 @@
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __BKE_DERIVED_NODE_TREE_HH__
|
||||
#define __BKE_DERIVED_NODE_TREE_HH__
|
||||
#ifndef __NOD_DERIVED_NODE_TREE_HH__
|
||||
#define __NOD_DERIVED_NODE_TREE_HH__
|
||||
|
||||
/** \file
|
||||
* \ingroup bke
|
||||
* \ingroup nodes
|
||||
*
|
||||
* DerivedNodeTree provides a flattened view on a bNodeTree, i.e. node groups are inlined. It
|
||||
* builds on top of NodeTreeRef and supports similar queries efficiently.
|
||||
@ -30,9 +30,9 @@
|
||||
* There is a dot graph exporter for debugging purposes.
|
||||
*/
|
||||
|
||||
#include "BKE_node_tree_ref.hh"
|
||||
#include "NOD_node_tree_ref.hh"
|
||||
|
||||
namespace blender::bke {
|
||||
namespace blender::nodes {
|
||||
|
||||
class DSocket;
|
||||
class DInputSocket;
|
||||
@ -512,6 +512,6 @@ inline Span<const DGroupInput *> DerivedNodeTree::group_inputs() const
|
||||
return group_inputs_;
|
||||
}
|
||||
|
||||
} // namespace blender::bke
|
||||
} // namespace blender::nodes
|
||||
|
||||
#endif /* __BKE_DERIVED_NODE_TREE_HH__ */
|
||||
#endif /* __NOD_DERIVED_NODE_TREE_HH__ */
|
@ -14,11 +14,11 @@
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __BKE_NODE_TREE_FUNCTION_HH__
|
||||
#define __BKE_NODE_TREE_FUNCTION_HH__
|
||||
#ifndef __NOD_NODE_TREE_FUNCTION_HH__
|
||||
#define __NOD_NODE_TREE_FUNCTION_HH__
|
||||
|
||||
/** \file
|
||||
* \ingroup bke
|
||||
* \ingroup nodes
|
||||
*
|
||||
* This file allows you to generate a multi-function network from a user-generated node tree.
|
||||
*/
|
||||
@ -26,12 +26,11 @@
|
||||
#include "FN_multi_function_builder.hh"
|
||||
#include "FN_multi_function_network.hh"
|
||||
|
||||
#include "BKE_derived_node_tree.hh"
|
||||
#include "NOD_derived_node_tree.hh"
|
||||
|
||||
#include "BLI_resource_collector.hh"
|
||||
|
||||
namespace blender {
|
||||
namespace bke {
|
||||
namespace blender::nodes {
|
||||
|
||||
/* Maybe this should be moved to BKE_node.h. */
|
||||
inline bool is_multi_function_data_socket(const bNodeSocket *bsocket)
|
||||
@ -44,7 +43,7 @@ inline bool is_multi_function_data_socket(const bNodeSocket *bsocket)
|
||||
}
|
||||
|
||||
/**
|
||||
* A MFNetworkTreeMap maps various components of a bke::DerivedNodeTree to components of a
|
||||
* A MFNetworkTreeMap maps various components of a DerivedNodeTree to components of a
|
||||
* fn::MFNetwork. This is necessary for further processing of a multi-function network that has
|
||||
* been generated from a node tree.
|
||||
*/
|
||||
@ -384,7 +383,6 @@ MFNetworkTreeMap insert_node_tree_into_mf_network(fn::MFNetwork &network,
|
||||
const DerivedNodeTree &tree,
|
||||
ResourceCollector &resources);
|
||||
|
||||
} // namespace bke
|
||||
} // namespace blender
|
||||
} // namespace blender::nodes
|
||||
|
||||
#endif /* __BKE_NODE_TREE_FUNCTION_HH__ */
|
||||
#endif /* __NOD_NODE_TREE_FUNCTION_HH__ */
|
@ -14,11 +14,11 @@
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __BKE_NODE_TREE_REF_HH__
|
||||
#define __BKE_NODE_TREE_REF_HH__
|
||||
#ifndef __NOD_NODE_TREE_REF_HH__
|
||||
#define __NOD_NODE_TREE_REF_HH__
|
||||
|
||||
/** \file
|
||||
* \ingroup bke
|
||||
* \ingroup nodes
|
||||
*
|
||||
* NodeTreeRef makes querying information about a bNodeTree more efficient. It is an immutable data
|
||||
* structure. It should not be used after anymore, after the underlying node tree changed.
|
||||
@ -58,7 +58,7 @@
|
||||
|
||||
#include "RNA_access.h"
|
||||
|
||||
namespace blender::bke {
|
||||
namespace blender::nodes {
|
||||
|
||||
class SocketRef;
|
||||
class InputSocketRef;
|
||||
@ -440,6 +440,6 @@ inline bNodeTree *NodeTreeRef::btree() const
|
||||
return btree_;
|
||||
}
|
||||
|
||||
} // namespace blender::bke
|
||||
} // namespace blender::nodes
|
||||
|
||||
#endif /* __BKE_NODE_TREE_REF_HH__ */
|
||||
#endif /* __NOD_NODE_TREE_REF_HH__ */
|
@ -27,11 +27,11 @@
|
||||
#include "DNA_node_types.h"
|
||||
|
||||
#include "BKE_node.h"
|
||||
#include "BKE_node_tree_multi_function.hh"
|
||||
|
||||
#include "BLT_translation.h"
|
||||
|
||||
#include "NOD_function.h"
|
||||
#include "NOD_node_tree_multi_function.hh"
|
||||
|
||||
#include "node_util.h"
|
||||
|
||||
|
@ -71,7 +71,7 @@ static const blender::fn::MultiFunction &get_multi_function(bNode &bnode)
|
||||
return blender::fn::dummy_multi_function;
|
||||
}
|
||||
|
||||
static void node_boolean_expand_in_mf_network(blender::bke::NodeMFNetworkBuilder &builder)
|
||||
static void node_boolean_expand_in_mf_network(blender::nodes::NodeMFNetworkBuilder &builder)
|
||||
{
|
||||
const blender::fn::MultiFunction &fn = get_multi_function(builder.bnode());
|
||||
builder.set_matching_fn(fn);
|
||||
|
@ -28,7 +28,7 @@ static bNodeSocketTemplate fn_node_combine_strings_out[] = {
|
||||
};
|
||||
|
||||
static void fn_node_combine_strings_expand_in_mf_network(
|
||||
blender::bke::NodeMFNetworkBuilder &builder)
|
||||
blender::nodes::NodeMFNetworkBuilder &builder)
|
||||
{
|
||||
static blender::fn::CustomMF_SI_SI_SO<std::string, std::string, std::string> combine_fn{
|
||||
"Combine Strings", [](const std::string &a, const std::string &b) { return a + b; }};
|
||||
|
@ -90,7 +90,7 @@ static const blender::fn::MultiFunction &get_multi_function(bNode &node)
|
||||
return blender::fn::dummy_multi_function;
|
||||
}
|
||||
|
||||
static void node_float_compare_expand_in_mf_network(blender::bke::NodeMFNetworkBuilder &builder)
|
||||
static void node_float_compare_expand_in_mf_network(blender::nodes::NodeMFNetworkBuilder &builder)
|
||||
{
|
||||
const blender::fn::MultiFunction &fn = get_multi_function(builder.bnode());
|
||||
builder.set_matching_fn(fn);
|
||||
|
@ -22,11 +22,11 @@ static bNodeSocketTemplate fn_node_group_instance_id_out[] = {
|
||||
};
|
||||
|
||||
static void fn_node_group_instance_id_expand_in_mf_network(
|
||||
blender::bke::NodeMFNetworkBuilder &builder)
|
||||
blender::nodes::NodeMFNetworkBuilder &builder)
|
||||
{
|
||||
const blender::bke::DNode &node = builder.dnode();
|
||||
const blender::nodes::DNode &node = builder.dnode();
|
||||
std::string id = "/";
|
||||
for (const blender::bke::DParentNode *parent = node.parent(); parent;
|
||||
for (const blender::nodes::DParentNode *parent = node.parent(); parent;
|
||||
parent = parent->parent()) {
|
||||
id = "/" + parent->node_ref().name() + id;
|
||||
}
|
||||
|
@ -14,13 +14,13 @@
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include "BKE_derived_node_tree.hh"
|
||||
#include "NOD_derived_node_tree.hh"
|
||||
|
||||
#include "BLI_dot_export.hh"
|
||||
|
||||
#define UNINITIALIZED_ID UINT32_MAX
|
||||
|
||||
namespace blender::bke {
|
||||
namespace blender::nodes {
|
||||
|
||||
static const NodeTreeRef &get_tree_ref(NodeTreeRefMap &node_tree_refs, bNodeTree *btree)
|
||||
{
|
||||
@ -438,4 +438,4 @@ std::string DerivedNodeTree::to_dot() const
|
||||
return digraph.to_dot_string();
|
||||
}
|
||||
|
||||
} // namespace blender::bke
|
||||
} // namespace blender::nodes
|
@ -34,13 +34,13 @@
|
||||
|
||||
#include "BKE_lib_id.h"
|
||||
#include "BKE_node.h"
|
||||
#include "BKE_node_tree_multi_function.hh"
|
||||
|
||||
#include "RNA_access.h"
|
||||
#include "RNA_types.h"
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "NOD_node_tree_multi_function.hh"
|
||||
#include "NOD_socket.h"
|
||||
|
||||
struct bNodeSocket *node_add_socket_from_template(struct bNodeTree *ntree,
|
||||
@ -517,7 +517,7 @@ static bNodeSocketType *make_socket_type_bool()
|
||||
{
|
||||
bNodeSocketType *socktype = make_standard_socket_type(SOCK_BOOLEAN, PROP_NONE);
|
||||
socktype->get_mf_data_type = []() { return blender::fn::MFDataType::ForSingle<bool>(); };
|
||||
socktype->expand_in_mf_network = [](blender::bke::SocketMFNetworkBuilder &builder) {
|
||||
socktype->expand_in_mf_network = [](blender::nodes::SocketMFNetworkBuilder &builder) {
|
||||
bool value = builder.socket_default_value<bNodeSocketValueBoolean>()->value;
|
||||
builder.set_constant_value(value);
|
||||
};
|
||||
@ -528,7 +528,7 @@ static bNodeSocketType *make_socket_type_float(PropertySubType subtype)
|
||||
{
|
||||
bNodeSocketType *socktype = make_standard_socket_type(SOCK_FLOAT, subtype);
|
||||
socktype->get_mf_data_type = []() { return blender::fn::MFDataType::ForSingle<float>(); };
|
||||
socktype->expand_in_mf_network = [](blender::bke::SocketMFNetworkBuilder &builder) {
|
||||
socktype->expand_in_mf_network = [](blender::nodes::SocketMFNetworkBuilder &builder) {
|
||||
float value = builder.socket_default_value<bNodeSocketValueFloat>()->value;
|
||||
builder.set_constant_value(value);
|
||||
};
|
||||
@ -539,7 +539,7 @@ static bNodeSocketType *make_socket_type_int(PropertySubType subtype)
|
||||
{
|
||||
bNodeSocketType *socktype = make_standard_socket_type(SOCK_INT, subtype);
|
||||
socktype->get_mf_data_type = []() { return blender::fn::MFDataType::ForSingle<int>(); };
|
||||
socktype->expand_in_mf_network = [](blender::bke::SocketMFNetworkBuilder &builder) {
|
||||
socktype->expand_in_mf_network = [](blender::nodes::SocketMFNetworkBuilder &builder) {
|
||||
int value = builder.socket_default_value<bNodeSocketValueInt>()->value;
|
||||
builder.set_constant_value(value);
|
||||
};
|
||||
@ -552,7 +552,7 @@ static bNodeSocketType *make_socket_type_vector(PropertySubType subtype)
|
||||
socktype->get_mf_data_type = []() {
|
||||
return blender::fn::MFDataType::ForSingle<blender::float3>();
|
||||
};
|
||||
socktype->expand_in_mf_network = [](blender::bke::SocketMFNetworkBuilder &builder) {
|
||||
socktype->expand_in_mf_network = [](blender::nodes::SocketMFNetworkBuilder &builder) {
|
||||
blender::float3 value = builder.socket_default_value<bNodeSocketValueVector>()->value;
|
||||
builder.set_constant_value(value);
|
||||
};
|
||||
@ -565,7 +565,7 @@ static bNodeSocketType *make_socket_type_rgba()
|
||||
socktype->get_mf_data_type = []() {
|
||||
return blender::fn::MFDataType::ForSingle<blender::Color4f>();
|
||||
};
|
||||
socktype->expand_in_mf_network = [](blender::bke::SocketMFNetworkBuilder &builder) {
|
||||
socktype->expand_in_mf_network = [](blender::nodes::SocketMFNetworkBuilder &builder) {
|
||||
blender::Color4f value = builder.socket_default_value<bNodeSocketValueRGBA>()->value;
|
||||
builder.set_constant_value(value);
|
||||
};
|
||||
@ -576,7 +576,7 @@ static bNodeSocketType *make_socket_type_string()
|
||||
{
|
||||
bNodeSocketType *socktype = make_standard_socket_type(SOCK_STRING, PROP_NONE);
|
||||
socktype->get_mf_data_type = []() { return blender::fn::MFDataType::ForSingle<std::string>(); };
|
||||
socktype->expand_in_mf_network = [](blender::bke::SocketMFNetworkBuilder &builder) {
|
||||
socktype->expand_in_mf_network = [](blender::nodes::SocketMFNetworkBuilder &builder) {
|
||||
std::string value = builder.socket_default_value<bNodeSocketValueString>()->value;
|
||||
builder.set_constant_value(value);
|
||||
};
|
||||
|
@ -14,13 +14,12 @@
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include "BKE_node_tree_multi_function.hh"
|
||||
#include "NOD_node_tree_multi_function.hh"
|
||||
|
||||
#include "BLI_color.hh"
|
||||
#include "BLI_float3.hh"
|
||||
|
||||
namespace blender {
|
||||
namespace bke {
|
||||
namespace blender::nodes {
|
||||
|
||||
/* Maybe this should be moved to BKE_node.h. */
|
||||
static std::optional<fn::MFDataType> try_get_multi_function_data_type_of_socket(
|
||||
@ -342,5 +341,4 @@ MFNetworkTreeMap insert_node_tree_into_mf_network(fn::MFNetwork &network,
|
||||
return network_map;
|
||||
}
|
||||
|
||||
} // namespace bke
|
||||
} // namespace blender
|
||||
} // namespace blender::nodes
|
@ -14,11 +14,11 @@
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include "BKE_node_tree_ref.hh"
|
||||
#include "NOD_node_tree_ref.hh"
|
||||
|
||||
#include "BLI_dot_export.hh"
|
||||
|
||||
namespace blender::bke {
|
||||
namespace blender::nodes {
|
||||
|
||||
NodeTreeRef::NodeTreeRef(bNodeTree *btree) : btree_(btree)
|
||||
{
|
||||
@ -174,4 +174,4 @@ std::string NodeTreeRef::to_dot() const
|
||||
return digraph.to_dot_string();
|
||||
}
|
||||
|
||||
} // namespace blender::bke
|
||||
} // namespace blender::nodes
|
@ -73,7 +73,7 @@
|
||||
#ifdef __cplusplus
|
||||
# include "FN_multi_function_builder.hh"
|
||||
|
||||
# include "BKE_node_tree_multi_function.hh"
|
||||
# include "NOD_node_tree_multi_function.hh"
|
||||
|
||||
# include "BLI_color.hh"
|
||||
# include "BLI_float3.hh"
|
||||
|
@ -128,7 +128,7 @@ class MapRangeFunction : public blender::fn::MultiFunction {
|
||||
}
|
||||
};
|
||||
|
||||
static void sh_node_map_range_expand_in_mf_network(blender::bke::NodeMFNetworkBuilder &builder)
|
||||
static void sh_node_map_range_expand_in_mf_network(blender::nodes::NodeMFNetworkBuilder &builder)
|
||||
{
|
||||
bNode &bnode = builder.bnode();
|
||||
bool clamp = bnode.custom1 != 0;
|
||||
|
@ -147,7 +147,7 @@ static int gpu_shader_math(GPUMaterial *mat,
|
||||
}
|
||||
|
||||
static const blender::fn::MultiFunction &get_base_multi_function(
|
||||
blender::bke::NodeMFNetworkBuilder &builder)
|
||||
blender::nodes::NodeMFNetworkBuilder &builder)
|
||||
{
|
||||
const int mode = builder.bnode().custom1;
|
||||
switch (mode) {
|
||||
@ -347,11 +347,11 @@ static const blender::fn::MultiFunction &get_base_multi_function(
|
||||
}
|
||||
}
|
||||
|
||||
static void sh_node_math_expand_in_mf_network(blender::bke::NodeMFNetworkBuilder &builder)
|
||||
static void sh_node_math_expand_in_mf_network(blender::nodes::NodeMFNetworkBuilder &builder)
|
||||
{
|
||||
const blender::fn::MultiFunction &base_function = get_base_multi_function(builder);
|
||||
|
||||
const blender::bke::DNode &dnode = builder.dnode();
|
||||
const blender::nodes::DNode &dnode = builder.dnode();
|
||||
blender::fn::MFNetwork &network = builder.network();
|
||||
blender::fn::MFFunctionNode &base_node = network.add_function(base_function);
|
||||
|
||||
|
@ -89,7 +89,7 @@ class SeparateRGBFunction : public blender::fn::MultiFunction {
|
||||
}
|
||||
};
|
||||
|
||||
static void sh_node_seprgb_expand_in_mf_network(blender::bke::NodeMFNetworkBuilder &builder)
|
||||
static void sh_node_seprgb_expand_in_mf_network(blender::nodes::NodeMFNetworkBuilder &builder)
|
||||
{
|
||||
static SeparateRGBFunction fn;
|
||||
builder.set_matching_fn(fn);
|
||||
@ -146,7 +146,7 @@ static int gpu_shader_combrgb(GPUMaterial *mat,
|
||||
return GPU_stack_link(mat, node, "combine_rgb", in, out);
|
||||
}
|
||||
|
||||
static void sh_node_combrgb_expand_in_mf_network(blender::bke::NodeMFNetworkBuilder &builder)
|
||||
static void sh_node_combrgb_expand_in_mf_network(blender::nodes::NodeMFNetworkBuilder &builder)
|
||||
{
|
||||
static blender::fn::CustomMF_SI_SI_SI_SO<float, float, float, blender::Color4f> fn{
|
||||
"Combine RGB", [](float r, float g, float b) { return blender::Color4f(r, g, b, 1.0f); }};
|
||||
|
@ -74,7 +74,7 @@ class MF_SeparateXYZ : public blender::fn::MultiFunction {
|
||||
}
|
||||
};
|
||||
|
||||
static void sh_node_sepxyz_expand_in_mf_network(blender::bke::NodeMFNetworkBuilder &builder)
|
||||
static void sh_node_sepxyz_expand_in_mf_network(blender::nodes::NodeMFNetworkBuilder &builder)
|
||||
{
|
||||
static MF_SeparateXYZ separate_fn;
|
||||
builder.set_matching_fn(separate_fn);
|
||||
@ -113,7 +113,7 @@ static int gpu_shader_combxyz(GPUMaterial *mat,
|
||||
return GPU_stack_link(mat, node, "combine_xyz", in, out);
|
||||
}
|
||||
|
||||
static void sh_node_combxyz_expand_in_mf_network(blender::bke::NodeMFNetworkBuilder &builder)
|
||||
static void sh_node_combxyz_expand_in_mf_network(blender::nodes::NodeMFNetworkBuilder &builder)
|
||||
{
|
||||
static blender::fn::CustomMF_SI_SI_SI_SO<float, float, float, blender::float3> fn{
|
||||
"Combine Vector", [](float x, float y, float z) { return blender::float3(x, y, z); }};
|
||||
|
@ -157,7 +157,7 @@ class ColorBandFunction : public blender::fn::MultiFunction {
|
||||
}
|
||||
};
|
||||
|
||||
static void sh_node_valtorgb_expand_in_mf_network(blender::bke::NodeMFNetworkBuilder &builder)
|
||||
static void sh_node_valtorgb_expand_in_mf_network(blender::nodes::NodeMFNetworkBuilder &builder)
|
||||
{
|
||||
bNode &bnode = builder.bnode();
|
||||
const ColorBand *color_band = (const ColorBand *)bnode.storage;
|
||||
|
@ -39,7 +39,7 @@ static int gpu_shader_value(GPUMaterial *mat,
|
||||
return GPU_stack_link(mat, node, "set_value", in, out, link);
|
||||
}
|
||||
|
||||
static void sh_node_value_expand_in_mf_network(blender::bke::NodeMFNetworkBuilder &builder)
|
||||
static void sh_node_value_expand_in_mf_network(blender::nodes::NodeMFNetworkBuilder &builder)
|
||||
{
|
||||
const bNodeSocket *bsocket = builder.dnode().output(0).bsocket();
|
||||
const bNodeSocketValueFloat *value = (const bNodeSocketValueFloat *)bsocket->default_value;
|
||||
|
@ -161,7 +161,7 @@ static void node_shader_update_vector_math(bNodeTree *UNUSED(ntree), bNode *node
|
||||
}
|
||||
|
||||
static const blender::fn::MultiFunction &get_multi_function(
|
||||
blender::bke::NodeMFNetworkBuilder &builder)
|
||||
blender::nodes::NodeMFNetworkBuilder &builder)
|
||||
{
|
||||
using blender::float3;
|
||||
|
||||
@ -271,7 +271,7 @@ static const blender::fn::MultiFunction &get_multi_function(
|
||||
};
|
||||
}
|
||||
|
||||
static void sh_node_vector_math_expand_in_mf_network(blender::bke::NodeMFNetworkBuilder &builder)
|
||||
static void sh_node_vector_math_expand_in_mf_network(blender::nodes::NodeMFNetworkBuilder &builder)
|
||||
{
|
||||
const blender::fn::MultiFunction &fn = get_multi_function(builder);
|
||||
builder.set_matching_fn(fn);
|
||||
|
Loading…
Reference in New Issue
Block a user