Fix linux build #33

Merged
Bogdan Nagirniak merged 7 commits from BogdanNagirniak/blender:matx-linux-build-fix into matx-export-material 2023-09-24 07:42:31 +02:00
2 changed files with 24 additions and 32 deletions
Showing only changes of commit ea62766440 - Show all commits

View File

@ -3,7 +3,6 @@
* SPDX-License-Identifier: GPL-2.0-or-later */ * SPDX-License-Identifier: GPL-2.0-or-later */
#include "group_nodes.h" #include "group_nodes.h"
#include "node_item.h"
#include "node_parser.h" #include "node_parser.h"
#include "BLI_vector.hh" #include "BLI_vector.hh"
@ -33,14 +32,8 @@ NodeItem GroupNodeParser::compute()
#endif #endif
NodeItem out = NodeItem out =
GroupOutputNodeParser(graph, GroupOutputNodeParser(
depsgraph_, graph, depsgraph_, material_, node_out, socket_out_, to_type_, this, export_image_fn_)
material_,
node_out,
socket_out_,
to_type_,
this,
export_image_fn_)
.compute_full(); .compute_full();
#ifdef USE_MATERIALX_NODEGRAPH #ifdef USE_MATERIALX_NODEGRAPH
@ -66,7 +59,8 @@ NodeItem GroupOutputNodeParser::compute()
#ifdef USE_MATERIALX_NODEGRAPH #ifdef USE_MATERIALX_NODEGRAPH
Vector<NodeItem> values; Vector<NodeItem> values;
for (auto socket_in : node_->input_sockets()) { for (auto socket_in : node_->input_sockets()) {
NodeItem value = get_input_value(socket_in->index(), NodeItem::Type::Any); NodeItem value = get_input_value(
socket_in->index(), NodeItem::is_arithmetic(to_type_) ? NodeItem::Type::Any : to_type_);
if (value.value) { if (value.value) {
value = create_node("constant", value.type(), {{"value", value}}); value = create_node("constant", value.type(), {{"value", value}});
} }
@ -80,15 +74,19 @@ NodeItem GroupOutputNodeParser::compute()
} }
return outputs[socket_out_->index()]; return outputs[socket_out_->index()];
#else #else
if (NodeItem::is_arithmetic(to_type_)) { return get_input_value(socket_out_->index(), to_type_);
return get_input_value(socket_out_->index(), to_type_);
}
return get_input_link(socket_out_->index(), to_type_);
#endif #endif
} }
NodeItem GroupOutputNodeParser::compute_full() NodeItem GroupOutputNodeParser::compute_full()
{ {
CLOG_INFO(LOG_MATERIALX_SHADER,
1,
"%s [%d] => %s",
node_->name,
node_->typeinfo->type,
NodeItem::type(to_type_).c_str());
#ifdef USE_MATERIALX_NODEGRAPH #ifdef USE_MATERIALX_NODEGRAPH
NodeItem res = empty(); NodeItem res = empty();
@ -98,13 +96,6 @@ NodeItem GroupOutputNodeParser::compute_full()
return res; return res;
} }
CLOG_INFO(LOG_MATERIALX_SHADER,
1,
"%s [%d] => %s",
node_->name,
node_->typeinfo->type,
NodeItem::type(to_type_).c_str());
res = compute(); res = compute();
return res; return res;
#else #else
@ -121,19 +112,23 @@ NodeItem GroupInputNodeParser::compute()
} }
if (value.value) { if (value.value) {
value = create_node("constant", value.type(), {{"value", value}}); value = group_parser_->create_node("constant", value.type(), {{"value", value}});
} }
return create_input("input" + std::to_string(socket_out_->index() + 1), value); return create_input("input" + std::to_string(socket_out_->index() + 1), value);
#else #else
if (NodeItem::is_arithmetic(to_type_)) {
return group_parser_->get_input_value(socket_out_->index(), to_type_);
}
return group_parser_->get_input_link(socket_out_->index(), to_type_); return group_parser_->get_input_link(socket_out_->index(), to_type_);
#endif #endif
} }
NodeItem GroupInputNodeParser::compute_full() NodeItem GroupInputNodeParser::compute_full()
{ {
BogdanNagirniak marked this conversation as resolved
Review

get_input_value(...
Otherwise, the input socket's default value is ignored.

`get_input_value(...` Otherwise, the input socket's default value is ignored.
CLOG_INFO(LOG_MATERIALX_SHADER,
1,
"%s [%d] => %s",
node_->name,
node_->typeinfo->type,
NodeItem::type(to_type_).c_str());
#ifdef USE_MATERIALX_NODEGRAPH #ifdef USE_MATERIALX_NODEGRAPH
NodeItem res = empty(); NodeItem res = empty();
@ -143,13 +138,6 @@ NodeItem GroupInputNodeParser::compute_full()
return res; return res;
} }
CLOG_INFO(LOG_MATERIALX_SHADER,
1,
"%s [%d] => %s",
node_->name,
node_->typeinfo->type,
NodeItem::type(to_type_).c_str());
res = compute(); res = compute();
return res; return res;
#else #else

View File

@ -167,6 +167,10 @@ NodeItem NodeParser::texcoord_node(NodeItem::Type type)
NodeItem NodeParser::get_default(const bNodeSocket &socket, NodeItem::Type to_type) NodeItem NodeParser::get_default(const bNodeSocket &socket, NodeItem::Type to_type)
{ {
NodeItem res = empty(); NodeItem res = empty();
if (!NodeItem::is_arithmetic(to_type) && to_type != NodeItem::Type::Any) {
return res;
}
switch (socket.type) { switch (socket.type) {
case SOCK_CUSTOM: case SOCK_CUSTOM:
/* Return empty */ /* Return empty */