10#ifdef USE_MATERIALX_NODEGRAPH
21 bool use_group_default)
30 ngroup->ensure_topology_cache();
31 const bNode *node_out = ngroup->group_output_node();
42#ifdef USE_MATERIALX_NODEGRAPH
63#ifdef USE_MATERIALX_NODEGRAPH
65 for (
const auto *socket_in :
node_->input_sockets()) {
74 for (
int i = 0;
i < values.size(); ++
i) {
76 outputs.append(create_output(out_name(node_->input_sockets()[
i]), values[
i]));
79 return outputs[socket_out_->index()];
81 if (use_group_default_) {
82 return get_input_value(socket_out_->index(), to_type_);
84 return get_input_link(socket_out_->index(), to_type_);
94 node_->typeinfo->type_legacy,
97#ifdef USE_MATERIALX_NODEGRAPH
111std::string GroupOutputNodeParser::out_name(
const bNodeSocket *out_socket)
113 return MaterialX::createValidName(std::string(
"out_") + out_socket->
name);
118#ifdef USE_MATERIALX_NODEGRAPH
125 value =
group_parser_->create_node(
"constant", value.
type(), {{
"value", value}});
127 return create_input(in_name(), value);
129 if (use_group_default_) {
130 return group_parser_->get_input_value(socket_out_->index(), to_type_);
132 return group_parser_->get_input_link(socket_out_->index(), to_type_);
142 node_->typeinfo->type_legacy,
145#ifdef USE_MATERIALX_NODEGRAPH
159std::string GroupInputNodeParser::in_name()
const
161 return MaterialX::createValidName(std::string(
"in_") + socket_out_->name);
#define CLOG_INFO(clg_ref, level,...)
void append(const T &value)
GroupNodeParser(NodeGraph &graph, const bNode *node, const bNodeSocket *socket_out, NodeItem::Type to_type, GroupNodeParser *group_parser, bool use_group_default)
NodeItem compute() override
NodeItem compute_full() override
NodeItem compute_full() override
NodeItem compute() override
MaterialX::InputPtr input
MaterialX::OutputPtr output
static bool is_arithmetic(Type type)
MaterialX::ValuePtr value
NodeItem convert(Type to_type) const
static Type type(const std::string &type_str)
GroupNodeParser * group_parser_
NodeItem get_input_value(const std::string &name, NodeItem::Type to_type)
const bNodeSocket * socket_out_
NodeParser(NodeGraph &graph, const bNode *node, const bNodeSocket *socket_out, NodeItem::Type to_type, GroupNodeParser *group_parser)
NodeItem create_node(const std::string &category, NodeItem::Type type)
static Type to_type(const eGPUType type)
struct CLG_LogRef * LOG_MATERIALX_SHADER
static blender::bke::bNodeSocketTemplate outputs[]