[Bf-blender-cvs] [a3d774e] master: Cycles: Fold Value and RGB node as well.
Thomas Dinges
noreply at git.blender.org
Sun Dec 6 23:49:07 CET 2015
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;
};
More information about the Bf-blender-cvs
mailing list