forked from bartvdbraak/blender
Fix T82673: Cycles crash with zero emission strength and linked emission color
This commit is contained in:
parent
13ec512f4b
commit
457d537fe4
@ -2785,7 +2785,7 @@ void PrincipledBsdfNode::expand(ShaderGraph *graph)
|
||||
ShaderInput *emission_strength_in = input("Emission Strength");
|
||||
if ((emission_in->link || emission != make_float3(0.0f, 0.0f, 0.0f)) &&
|
||||
(emission_strength_in->link || emission_strength != 0.0f)) {
|
||||
/* Create add closure and emission. */
|
||||
/* Create add closure and emission, and relink inputs. */
|
||||
AddClosureNode *add = graph->create_node<AddClosureNode>();
|
||||
EmissionNode *emission_node = graph->create_node<EmissionNode>();
|
||||
ShaderOutput *new_out = add->output("Closure");
|
||||
@ -2801,6 +2801,16 @@ void PrincipledBsdfNode::expand(ShaderGraph *graph)
|
||||
|
||||
principled_out = new_out;
|
||||
}
|
||||
else {
|
||||
/* Disconnect unused links if the other value is zero, required before
|
||||
* we remove the input from the node entirely. */
|
||||
if (emission_in->link) {
|
||||
emission_in->disconnect();
|
||||
}
|
||||
if (emission_strength_in->link) {
|
||||
emission_strength_in->disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
ShaderInput *alpha_in = input("Alpha");
|
||||
if (alpha_in->link || alpha != 1.0f) {
|
||||
@ -2818,6 +2828,7 @@ void PrincipledBsdfNode::expand(ShaderGraph *graph)
|
||||
}
|
||||
|
||||
remove_input(emission_in);
|
||||
remove_input(emission_strength_in);
|
||||
remove_input(alpha_in);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user