24 while (nodes_.size()) {
25 delete nodes_.pop_last();
37 if (
STREQ(b_sock->identifier, identifier)) {
47 if (
STREQ(b_sock->identifier, identifier)) {
59 node->set_bnodetree(b_ntree);
60 node->set_instance_key(key);
61 node->set_is_in_active_group(is_active_group);
70 links_.append(
Link(from_socket, to_socket));
92 NodeRange node_range(nodes_.begin() + nodes_start, nodes_.end());
103 bool is_active_group)
138 if (
output->get_bnode_socket() == b_socket) {
169 if (
input->get_bnode_socket() == b_nodelink->
tosock && !
input->is_linked()) {
181 bool is_active_group)
184 b_link = b_link->next) {
186 add_node(proxy, b_ntree, key, is_active_group);
193 bool is_active_group)
207 add_node(proxy, b_ntree, key, is_active_group);
219 bool is_active_group =
false;
222 b_sock_io = b_sock_io->next) {
226 add_node(proxy, b_group_tree, key, is_active_group);
240 bool is_active_group =
false;
243 b_sock_io = b_sock_io->next) {
246 if (
context.is_groupnode_buffer_enabled() &&
253 add_node(proxy, b_group_tree, key, is_active_group);
273 int nodes_start = nodes_.size();
277 b_node_io = b_node_io->next) {
293 bool is_active_group)
297 add_node(proxy, b_ntree, key, is_active_group);
const bNodeInstanceKey NODE_INSTANCE_KEY_BASE
#define NODE_CUSTOM_GROUP
bNodeInstanceKey BKE_node_instance_key(bNodeInstanceKey parent_key, const struct bNodeTree *ntree, const struct bNode *node)
Overall context of the compositor.
static void node_added(const Node *node)
static bNodeSocket * find_b_node_input(bNode *b_node, const char *identifier)
void add_bNodeTree(const CompositorContext &context, int nodes_start, bNodeTree *tree, bNodeInstanceKey parent_key)
void add_bNode(const CompositorContext &context, bNodeTree *b_ntree, bNode *b_node, bNodeInstanceKey key, bool is_active_group)
std::pair< Vector< Node * >::iterator, Vector< Node * >::iterator > NodeRange
void from_bNodeTree(const CompositorContext &context, bNodeTree *tree)
void add_proxies_group_inputs(bNode *b_node, bNode *b_node_io)
void add_proxies_reroute(bNodeTree *b_ntree, bNode *b_node, bNodeInstanceKey key, bool is_active_group)
void add_proxies_skip(bNodeTree *b_ntree, bNode *b_node, bNodeInstanceKey key, bool is_active_group)
NodeOutput * find_output(const NodeRange &node_range, bNodeSocket *b_socket)
void add_proxies_mute(bNodeTree *b_ntree, bNode *b_node, bNodeInstanceKey key, bool is_active_group)
void add_proxies_group_outputs(const CompositorContext &context, bNode *b_node, bNode *b_node_io)
void add_link(NodeOutput *from_socket, NodeInput *to_socket)
static bNodeSocket * find_b_node_output(bNode *b_node, const char *identifier)
void add_bNodeLink(const NodeRange &node_range, bNodeLink *b_nodelink)
void add_proxies_group(const CompositorContext &context, bNode *b_node, bNodeInstanceKey key)
void add_node(Node *node, bNodeTree *b_ntree, bNodeInstanceKey key, bool is_active_group)
NodeOutput are sockets that can send data/input.
ccl_global float * buffer
ccl_global KernelShaderEvalInput ccl_global float * output
ccl_global KernelShaderEvalInput * input
Node * COM_convert_bnode(bNode *b_node)
Wraps a bNode in its Node instance.
bool COM_bnode_is_fast_node(const bNode &b_node)
True if the node is considered 'fast'.
bNodeInstanceKey active_viewer_key