[Bf-blender-cvs] [88540c56641] soc-2019-cycles-procedural: Omit use_clamp in math node. Replaced by clamp node

OmarSquircleArt noreply at git.blender.org
Thu Jun 6 20:57:41 CEST 2019


Commit: 88540c5664104e7eef13fc14938418725c96a555
Author: OmarSquircleArt
Date:   Thu Jun 6 20:58:38 2019 +0200
Branches: soc-2019-cycles-procedural
https://developer.blender.org/rB88540c5664104e7eef13fc14938418725c96a555

Omit use_clamp in math node. Replaced by clamp node

===================================================================

M	intern/cycles/blender/blender_shader.cpp
M	intern/cycles/kernel/shaders/node_math.osl
M	intern/cycles/kernel/svm/svm_math_util.h
M	intern/cycles/kernel/svm/svm_types.h
M	intern/cycles/render/constant_fold.cpp
M	intern/cycles/render/constant_fold.h
M	intern/cycles/render/nodes.cpp
M	intern/cycles/render/nodes.h
M	intern/cycles/test/render_graph_finalize_test.cpp
M	source/blender/editors/space_node/drawnode.c
M	source/blender/makesrna/intern/rna_nodetree.c
M	source/blender/nodes/shader/nodes/node_shader_math.c

===================================================================

diff --git a/intern/cycles/blender/blender_shader.cpp b/intern/cycles/blender/blender_shader.cpp
index 23875988268..ad979d72ad0 100644
--- a/intern/cycles/blender/blender_shader.cpp
+++ b/intern/cycles/blender/blender_shader.cpp
@@ -307,7 +307,6 @@ static ShaderNode *add_node(Scene *scene,
     BL::ShaderNodeMath b_math_node(b_node);
     MathNode *math = new MathNode();
     math->type = (NodeMath)b_math_node.operation();
-    math->use_clamp = b_math_node.use_clamp();
     node = math;
   }
   else if (b_node.is_a(&RNA_ShaderNodeVectorMath)) {
diff --git a/intern/cycles/kernel/shaders/node_math.osl b/intern/cycles/kernel/shaders/node_math.osl
index 8830339e05f..a2c6255948c 100644
--- a/intern/cycles/kernel/shaders/node_math.osl
+++ b/intern/cycles/kernel/shaders/node_math.osl
@@ -61,7 +61,6 @@ float safe_log(float a, float b)
 }
 
 shader node_math(string type = "add",
-                 int use_clamp = 0,
                  float Value1 = 0.0,
                  float Value2 = 0.0,
                  output float Value = 0.0)
@@ -116,7 +115,4 @@ shader node_math(string type = "add",
     Value = Value1 - floor(Value1);
   else if (type == "sqrt")
     Value = safe_sqrt(Value1);
-
-  if (use_clamp)
-    Value = clamp(Value, 0.0, 1.0);
 }
diff --git a/intern/cycles/kernel/svm/svm_math_util.h b/intern/cycles/kernel/svm/svm_math_util.h
index c1eebfcc50a..b24b2946ce7 100644
--- a/intern/cycles/kernel/svm/svm_math_util.h
+++ b/intern/cycles/kernel/svm/svm_math_util.h
@@ -154,8 +154,6 @@ ccl_device float svm_math(NodeMath type, float Fac1, float Fac2)
     Fac = Fac1 - floorf(Fac1);
   else if (type == NODE_MATH_SQRT)
     Fac = safe_sqrtf(Fac1);
-  else if (type == NODE_MATH_CLAMP)
-    Fac = saturate(Fac1);
   else
     Fac = 0.0f;
 
diff --git a/intern/cycles/kernel/svm/svm_types.h b/intern/cycles/kernel/svm/svm_types.h
index 7d2a4217aff..29047989a13 100644
--- a/intern/cycles/kernel/svm/svm_types.h
+++ b/intern/cycles/kernel/svm/svm_types.h
@@ -270,7 +270,6 @@ typedef enum NodeMath {
   NODE_MATH_CEIL,
   NODE_MATH_FRACT,
   NODE_MATH_SQRT,
-  NODE_MATH_CLAMP /* used for the clamp UI option */
 } NodeMath;
 
 typedef enum NodeVectorMath {
diff --git a/intern/cycles/render/constant_fold.cpp b/intern/cycles/render/constant_fold.cpp
index b3647a1e671..40df675f749 100644
--- a/intern/cycles/render/constant_fold.cpp
+++ b/intern/cycles/render/constant_fold.cpp
@@ -301,7 +301,7 @@ void ConstantFolder::fold_mix(NodeMix type, bool clamp) const
   }
 }
 
-void ConstantFolder::fold_math(NodeMath type, bool clamp) const
+void ConstantFolder::fold_math(NodeMath type) const
 {
   ShaderInput *value1_in = node->input("Value1");
   ShaderInput *value2_in = node->input("Value2");
@@ -310,25 +310,25 @@ void ConstantFolder::fold_math(NodeMath type, bool clamp) const
     case NODE_MATH_ADD:
       /* X + 0 == 0 + X == X */
       if (is_zero(value1_in)) {
-        try_bypass_or_make_constant(value2_in, clamp);
+        try_bypass_or_make_constant(value2_in);
       }
       else if (is_zero(value2_in)) {
-        try_bypass_or_make_constant(value1_in, clamp);
+        try_bypass_or_make_constant(value1_in);
       }
       break;
     case NODE_MATH_SUBTRACT:
       /* X - 0 == X */
       if (is_zero(value2_in)) {
-        try_bypass_or_make_constant(value1_in, clamp);
+        try_bypass_or_make_constant(value1_in);
       }
       break;
     case NODE_MATH_MULTIPLY:
       /* X * 1 == 1 * X == X */
       if (is_one(value1_in)) {
-        try_bypass_or_make_constant(value2_in, clamp);
+        try_bypass_or_make_constant(value2_in);
       }
       else if (is_one(value2_in)) {
-        try_bypass_or_make_constant(value1_in, clamp);
+        try_bypass_or_make_constant(value1_in);
       }
       /* X * 0 == 0 * X == 0 */
       else if (is_zero(value1_in) || is_zero(value2_in)) {
@@ -338,7 +338,7 @@ void ConstantFolder::fold_math(NodeMath type, bool clamp) const
     case NODE_MATH_DIVIDE:
       /* X / 1 == X */
       if (is_one(value2_in)) {
-        try_bypass_or_make_constant(value1_in, clamp);
+        try_bypass_or_make_constant(value1_in);
       }
       /* 0 / X == 0 */
       else if (is_zero(value1_in)) {
@@ -352,7 +352,7 @@ void ConstantFolder::fold_math(NodeMath type, bool clamp) const
       }
       /* X ^ 1 == X */
       else if (is_one(value2_in)) {
-        try_bypass_or_make_constant(value1_in, clamp);
+        try_bypass_or_make_constant(value1_in);
       }
     default:
       break;
diff --git a/intern/cycles/render/constant_fold.h b/intern/cycles/render/constant_fold.h
index b19afcd92b9..e1343c8ff90 100644
--- a/intern/cycles/render/constant_fold.h
+++ b/intern/cycles/render/constant_fold.h
@@ -64,7 +64,7 @@ class ConstantFolder {
 
   /* Specific nodes. */
   void fold_mix(NodeMix type, bool clamp) const;
-  void fold_math(NodeMath type, bool clamp) const;
+  void fold_math(NodeMath type) const;
   void fold_vector_math(NodeVectorMath type) const;
   void fold_mapping(NodeMappingType type) const;
 };
diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp
index 41aea27db36..ea2dc3ed825 100644
--- a/intern/cycles/render/nodes.cpp
+++ b/intern/cycles/render/nodes.cpp
@@ -5425,8 +5425,6 @@ NODE_DEFINE(MathNode)
   type_enum.insert("sqrt", NODE_MATH_SQRT);
   SOCKET_ENUM(type, "Type", type_enum, NODE_MATH_ADD);
 
-  SOCKET_BOOLEAN(use_clamp, "Use Clamp", false);
-
   SOCKET_IN_FLOAT(value1, "Value1", 0.0f);
   SOCKET_IN_FLOAT(value2, "Value2", 0.0f);
 
@@ -5442,10 +5440,10 @@ MathNode::MathNode() : ShaderNode(node_type)
 void MathNode::constant_fold(const ConstantFolder &folder)
 {
   if (folder.all_inputs_constant()) {
-    folder.make_constant_clamp(svm_math(type, value1, value2), use_clamp);
+    folder.make_constant(svm_math(type, value1, value2));
   }
   else {
-    folder.fold_math(type, use_clamp);
+    folder.fold_math(type);
   }
 }
 
@@ -5458,17 +5456,11 @@ void MathNode::compile(SVMCompiler &compiler)
   compiler.add_node(
       NODE_MATH, type, compiler.stack_assign(value1_in), compiler.stack_assign(value2_in));
   compiler.add_node(NODE_MATH, compiler.stack_assign(value_out));
-
-  if (use_clamp) {
-    compiler.add_node(NODE_MATH, NODE_MATH_CLAMP, compiler.stack_assign(value_out));
-    compiler.add_node(NODE_MATH, compiler.stack_assign(value_out));
-  }
 }
 
 void MathNode::compile(OSLCompiler &compiler)
 {
   compiler.parameter(this, "type");
-  compiler.parameter(this, "use_clamp");
   compiler.add(this, "node_math");
 }
 
diff --git a/intern/cycles/render/nodes.h b/intern/cycles/render/nodes.h
index 09514d36002..e13d40fabc2 100644
--- a/intern/cycles/render/nodes.h
+++ b/intern/cycles/render/nodes.h
@@ -1263,7 +1263,6 @@ class MathNode : public ShaderNode {
   float value1;
   float value2;
   NodeMath type;
-  bool use_clamp;
 };
 
 class NormalNode : public ShaderNode {
diff --git a/intern/cycles/test/render_graph_finalize_test.cpp b/intern/cycles/test/render_graph_finalize_test.cpp
index 7fb92bfb862..08b65eb7cce 100644
--- a/intern/cycles/test/render_graph_finalize_test.cpp
+++ b/intern/cycles/test/render_graph_finalize_test.cpp
@@ -961,7 +961,7 @@ TEST_F(RenderGraph, constant_fold_blackbody)
 }
 
 /*
- * Tests: Math with all constant inputs (clamp false).
+ * Tests: Math with all constant inputs.
  */
 TEST_F(RenderGraph, constant_fold_math)
 {
@@ -971,26 +971,6 @@ TEST_F(RenderGraph, constant_fold_math)
   builder
       .add_node(ShaderNodeBuilder<MathNode>("Math")
                     .set(&MathNode::type, NODE_MATH_ADD)
-                    .set(&MathNode::use_clamp, false)
-                    .set("Value1", 0.7f)
-                    .set("Value2", 0.9f))
-      .output_value("Math::Value");
-
-  graph.finalize(scene);
-}
-
-/*
- * Tests: Math with all constant inputs (clamp true).
- */
-TEST_F(RenderGraph, constant_fold_math_clamp)
-{
-  EXPECT_ANY_MESSAGE(log);
-  CORRECT_INFO_MESSAGE(log, "Folding Math::Value to constant (1).");
-
-  builder
-      .add_node(ShaderNodeBuilder<MathNode>("Math")
-                    .set(&MathNode::type, NODE_MATH_ADD)
-                    .set(&MathNode::use_clamp, true)
                     .set("Value1", 0.7f)
                     .set("Value2", 0.9f))
       .output_value("Math::Value");
@@ -1011,19 +991,15 @@ static void build_math_partial_test_graph(ShaderGraphBuilder &builder,
       /* constant on the left */
       .add_node(ShaderNodeBuilder<MathNode>("Math_Cx")
                     .set(&MathNode::type, type)
-                    .set(&MathNode::use_clamp, false)
                     .set("Value1", constval))
       .add_connection("Attribute::Fac", "Math_Cx::Value2")
       /* constant on the right */
       .add_node(ShaderNodeBuilder<MathNode>("Math_xC")
                     .set(&MathNode::type, type)
-                    .set(&MathNode::use_clamp, false)
                     .set("Value2", constval))
       .add_connection("Attribute::Fac", "Math_xC::Value1")
       /* output sum */
-      .add_node(ShaderNodeBuilder<MathNode>("Out")
-                    .set(&MathNode::type, NODE_MATH_ADD)
-                    .set(&MathNode::use_clamp, true))
+      .add_node(ShaderNodeBuilder<MathNode>("Out").set(&MathNode::type, NODE_MATH_ADD))
       .add_connection("Math_Cx::Value", "Out::Value1")
       .add_connection("Math_xC::Value", "Out::Value2")
       .output_value("Out::Value");
diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c
index 3270c27cabd..b28abcd26a9 100644
--- a/source/blender/editors/space_node/drawnode.c
+++ b/source/blender/editors/space_node/drawnode.c
@@ -252,7 +252,6 @@ static void node_buts_texture(uiLayout *layout, bContext *UNUSED(C), PointerRNA
 static void node_buts_math(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
 {
   uiItemR(layout, ptr, "operation", 0, "", ICON_NONE);
-  uiItemR(layout, ptr, "use_clamp", 0, NULL, ICON_NONE);
 }
 
 static int node_resize_area_default(bNode *node, int x, int y)
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 6e24098ac0d..fa39050f13e 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -3852,11 +3

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list