[Bf-blender-cvs] [f593075] master: Fix T48368: Cycles mix RGB constant folding bug after recent refactor.
Brecht Van Lommel
noreply at git.blender.org
Sat May 7 14:22:56 CEST 2016
Commit: f5930759a68dc464181a971c67314be6ab712315
Author: Brecht Van Lommel
Date: Sat May 7 14:08:00 2016 +0200
Branches: master
https://developer.blender.org/rBf5930759a68dc464181a971c67314be6ab712315
Fix T48368: Cycles mix RGB constant folding bug after recent refactor.
===================================================================
M intern/cycles/render/nodes.cpp
===================================================================
diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp
index 7066164..c1841f3 100644
--- a/intern/cycles/render/nodes.cpp
+++ b/intern/cycles/render/nodes.cpp
@@ -3320,7 +3320,7 @@ void MixNode::compile(OSLCompiler& compiler)
compiler.add(this, "node_mix");
}
-bool MixNode::constant_fold(ShaderGraph *graph, ShaderOutput * /*socket*/, float3 * /*optimized_value*/)
+bool MixNode::constant_fold(ShaderGraph *graph, ShaderOutput * /*socket*/, float3 * optimized_value)
{
if(type != ustring("Mix")) {
return false;
@@ -3332,22 +3332,27 @@ bool MixNode::constant_fold(ShaderGraph *graph, ShaderOutput * /*socket*/, float
ShaderOutput *color_out = output("Color");
/* remove useless mix colors nodes */
- if(color1_in->link == color2_in->link) {
+ if(color1_in->link && color1_in->link == color2_in->link) {
graph->relink(this, color_out, color1_in->link);
return true;
}
/* remove unused mix color input when factor is 0.0 or 1.0 */
- /* check for color links and make sure factor link is disconnected */
- if(color1_in->link && color2_in->link && !fac_in->link) {
+ if(!fac_in->link) {
/* factor 0.0 */
if(fac_in->value.x == 0.0f) {
- graph->relink(this, color_out, color1_in->link);
+ if (color1_in->link)
+ graph->relink(this, color_out, color1_in->link);
+ else
+ *optimized_value = color1_in->value;
return true;
}
/* factor 1.0 */
else if(fac_in->value.x == 1.0f) {
- graph->relink(this, color_out, color2_in->link);
+ if (color2_in->link)
+ graph->relink(this, color_out, color2_in->link);
+ else
+ *optimized_value = color2_in->value;
return true;
}
}
More information about the Bf-blender-cvs
mailing list