Commit: a3d774e4c94868c747230a200e0a41e371f547bd Author: Thomas Dinges Date: Sun Dec 6 23:47:38 2015 +0100 Branches: master https://developer.blender.org/rBa3d774e4c94868c747230a200e0a41e371f547bd
Cycles: Fold Value and RGB node as well. This way, connecting Value or RGB node to e.g. a Math node will still allow folding. Note: The same should be done for the ConvertNode, but I leave that for another day. =================================================================== M intern/cycles/render/graph.cpp M intern/cycles/render/nodes.cpp M intern/cycles/render/nodes.h =================================================================== diff --git a/intern/cycles/render/graph.cpp b/intern/cycles/render/graph.cpp index c9f39d4..def4387 100644 --- a/intern/cycles/render/graph.cpp +++ b/intern/cycles/render/graph.cpp @@ -617,7 +617,7 @@ void ShaderGraph::constant_fold() */ foreach(ShaderInput *input, output->links) { if(scheduled.find(input->parent) != scheduled.end()) { - /* Node might be not yet optimized but scheduled already + /* Node might not be optimized yet but scheduled already * by other dependencies. No need to re-schedule it. */ continue; diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp index fd8410c..e4f5885 100644 --- a/intern/cycles/render/nodes.cpp +++ b/intern/cycles/render/nodes.cpp @@ -3177,6 +3177,13 @@ ValueNode::ValueNode() add_output("Value", SHADER_SOCKET_FLOAT); } +bool ValueNode::constant_fold(ShaderOutput *socket, float3 *optimized_value) +{ + *optimized_value = make_float3(value, value, value); + + return true; +} + void ValueNode::compile(SVMCompiler& compiler) { ShaderOutput *val_out = output("Value"); @@ -3201,6 +3208,13 @@ ColorNode::ColorNode() add_output("Color", SHADER_SOCKET_COLOR); } +bool ColorNode::constant_fold(ShaderOutput *socket, float3 *optimized_value) +{ + *optimized_value = value; + + return true; +} + void ColorNode::compile(SVMCompiler& compiler) { ShaderOutput *color_out = output("Color"); diff --git a/intern/cycles/render/nodes.h b/intern/cycles/render/nodes.h index 1fa4b67..51efbc3 100644 --- a/intern/cycles/render/nodes.h +++ b/intern/cycles/render/nodes.h @@ -485,6 +485,8 @@ class ValueNode : public ShaderNode { public: SHADER_NODE_CLASS(ValueNode) + bool constant_fold(ShaderOutput *socket, float3 *optimized_value); + float value; }; @@ -492,6 +494,8 @@ class ColorNode : public ShaderNode { public: SHADER_NODE_CLASS(ColorNode) + bool constant_fold(ShaderOutput *socket, float3 *optimized_value); + float3 value; }; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs