forked from bartvdbraak/blender
Cycles: Remove Bump Node from the graph, if Height input is not connected.
This way we can avoid building the split kernel with NODE_FEATURE_BUMP enabled, in case we don't need it.
This commit is contained in:
parent
96d9801423
commit
b666593775
@ -419,6 +419,21 @@ void ShaderGraph::remove_unneeded_nodes()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(node->special_type == SHADER_SPECIAL_TYPE_BUMP) {
|
||||||
|
BumpNode *bump = static_cast<BumpNode*>(node);
|
||||||
|
|
||||||
|
if(bump->outputs[0]->links.size()) {
|
||||||
|
/* Height input not connected */
|
||||||
|
/* ToDo: Strength zero? */
|
||||||
|
if(!bump->inputs[0]->link) {
|
||||||
|
vector<ShaderInput*> inputs = bump->outputs[0]->links;
|
||||||
|
|
||||||
|
relink(bump->inputs, inputs, NULL);
|
||||||
|
removed[bump->id] = true;
|
||||||
|
any_node_removed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else if(node->special_type == SHADER_SPECIAL_TYPE_MIX_CLOSURE) {
|
else if(node->special_type == SHADER_SPECIAL_TYPE_MIX_CLOSURE) {
|
||||||
MixClosureNode *mix = static_cast<MixClosureNode*>(node);
|
MixClosureNode *mix = static_cast<MixClosureNode*>(node);
|
||||||
|
|
||||||
@ -560,7 +575,7 @@ void ShaderGraph::clean()
|
|||||||
else
|
else
|
||||||
delete node;
|
delete node;
|
||||||
}
|
}
|
||||||
|
|
||||||
nodes = newnodes;
|
nodes = newnodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,6 +84,7 @@ enum ShaderNodeSpecialType {
|
|||||||
SHADER_SPECIAL_TYPE_IMAGE_SLOT,
|
SHADER_SPECIAL_TYPE_IMAGE_SLOT,
|
||||||
SHADER_SPECIAL_TYPE_CLOSURE,
|
SHADER_SPECIAL_TYPE_CLOSURE,
|
||||||
SHADER_SPECIAL_TYPE_EMISSION,
|
SHADER_SPECIAL_TYPE_EMISSION,
|
||||||
|
SHADER_SPECIAL_TYPE_BUMP,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Enum
|
/* Enum
|
||||||
|
@ -3934,6 +3934,8 @@ BumpNode::BumpNode()
|
|||||||
{
|
{
|
||||||
invert = false;
|
invert = false;
|
||||||
|
|
||||||
|
special_type = SHADER_SPECIAL_TYPE_BUMP;
|
||||||
|
|
||||||
/* this input is used by the user, but after graph transform it is no longer
|
/* this input is used by the user, but after graph transform it is no longer
|
||||||
* used and moved to sampler center/x/y instead */
|
* used and moved to sampler center/x/y instead */
|
||||||
add_input("Height", SHADER_SOCKET_FLOAT);
|
add_input("Height", SHADER_SOCKET_FLOAT);
|
||||||
|
@ -652,7 +652,6 @@ public:
|
|||||||
SHADER_NODE_CLASS(BumpNode)
|
SHADER_NODE_CLASS(BumpNode)
|
||||||
bool has_spatial_varying() { return true; }
|
bool has_spatial_varying() { return true; }
|
||||||
virtual int get_feature() {
|
virtual int get_feature() {
|
||||||
/* TODO(sergey): Check for incoming links. */
|
|
||||||
return NODE_FEATURE_BUMP;
|
return NODE_FEATURE_BUMP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user