[Bf-blender-cvs] [ebd26aaee42] soc-2019-cycles-procedural: Remove Average vector meth operator.

OmarSquircleArt noreply at git.blender.org
Sun Aug 4 16:57:00 CEST 2019


Commit: ebd26aaee427bba3c714ff8968c4bf436538a463
Author: OmarSquircleArt
Date:   Sun Aug 4 16:57:51 2019 +0200
Branches: soc-2019-cycles-procedural
https://developer.blender.org/rBebd26aaee427bba3c714ff8968c4bf436538a463

Remove Average vector meth operator.

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

M	intern/cycles/kernel/shaders/node_vector_math.osl
M	intern/cycles/kernel/svm/svm_math_util.h
M	intern/cycles/kernel/svm/svm_types.h
M	intern/cycles/render/nodes.cpp
M	source/blender/blenloader/intern/versioning_cycles.c
M	source/blender/gpu/shaders/gpu_shader_material.glsl
M	source/blender/makesdna/DNA_node_types.h
M	source/blender/makesrna/intern/rna_nodetree.c
M	source/blender/nodes/shader/nodes/node_shader_vectMath.c

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

diff --git a/intern/cycles/kernel/shaders/node_vector_math.osl b/intern/cycles/kernel/shaders/node_vector_math.osl
index 496cb22cf54..cba2b9f6487 100644
--- a/intern/cycles/kernel/shaders/node_vector_math.osl
+++ b/intern/cycles/kernel/shaders/node_vector_math.osl
@@ -69,9 +69,6 @@ shader node_vector_math(string type = "add",
   else if (type == "reflect") {
     Vector = reflect(A, B);
   }
-  else if (type == "average") {
-    Vector = normalize(A + B);
-  }
   else if (type == "dot_product") {
     Value = dot(A, B);
   }
diff --git a/intern/cycles/kernel/svm/svm_math_util.h b/intern/cycles/kernel/svm/svm_math_util.h
index 9ba1e31b1d7..50c13929532 100644
--- a/intern/cycles/kernel/svm/svm_math_util.h
+++ b/intern/cycles/kernel/svm/svm_math_util.h
@@ -41,9 +41,6 @@ ccl_device void svm_vector_math(
     case NODE_VECTOR_MATH_REFLECT:
       *vector = reflect(a, b);
       break;
-    case NODE_VECTOR_MATH_AVERAGE:
-      *vector = safe_normalize(a + b);
-      break;
     case NODE_VECTOR_MATH_DOT_PRODUCT:
       *value = dot(a, b);
       break;
diff --git a/intern/cycles/kernel/svm/svm_types.h b/intern/cycles/kernel/svm/svm_types.h
index a4bedc8ad16..33ede286211 100644
--- a/intern/cycles/kernel/svm/svm_types.h
+++ b/intern/cycles/kernel/svm/svm_types.h
@@ -281,20 +281,18 @@ typedef enum NodeMathType {
 typedef enum NodeVectorMathType {
   NODE_VECTOR_MATH_ADD,
   NODE_VECTOR_MATH_SUBTRACT,
-  NODE_VECTOR_MATH_AVERAGE,
-  NODE_VECTOR_MATH_DOT_PRODUCT,
-  NODE_VECTOR_MATH_CROSS_PRODUCT,
-  NODE_VECTOR_MATH_NORMALIZE,
-
   NODE_VECTOR_MATH_MULTIPLY,
   NODE_VECTOR_MATH_DIVIDE,
 
+  NODE_VECTOR_MATH_CROSS_PRODUCT,
   NODE_VECTOR_MATH_PROJECT,
   NODE_VECTOR_MATH_REFLECT,
+  NODE_VECTOR_MATH_DOT_PRODUCT,
 
   NODE_VECTOR_MATH_DISTANCE,
   NODE_VECTOR_MATH_LENGTH,
   NODE_VECTOR_MATH_SCALE,
+  NODE_VECTOR_MATH_NORMALIZE,
 
   NODE_VECTOR_MATH_SNAP,
   NODE_VECTOR_MATH_MODULO,
diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp
index 1a61d3b9096..be7748f46e0 100644
--- a/intern/cycles/render/nodes.cpp
+++ b/intern/cycles/render/nodes.cpp
@@ -5716,9 +5716,8 @@ NODE_DEFINE(VectorMathNode)
   type_enum.insert("cross_product", NODE_VECTOR_MATH_CROSS_PRODUCT);
   type_enum.insert("project", NODE_VECTOR_MATH_PROJECT);
   type_enum.insert("reflect", NODE_VECTOR_MATH_REFLECT);
-  type_enum.insert("average", NODE_VECTOR_MATH_AVERAGE);
-
   type_enum.insert("dot_product", NODE_VECTOR_MATH_DOT_PRODUCT);
+
   type_enum.insert("distance", NODE_VECTOR_MATH_DISTANCE);
   type_enum.insert("length", NODE_VECTOR_MATH_LENGTH);
   type_enum.insert("scale", NODE_VECTOR_MATH_SCALE);
diff --git a/source/blender/blenloader/intern/versioning_cycles.c b/source/blender/blenloader/intern/versioning_cycles.c
index 4eab08c8f47..3fcec749432 100644
--- a/source/blender/blenloader/intern/versioning_cycles.c
+++ b/source/blender/blenloader/intern/versioning_cycles.c
@@ -730,6 +730,38 @@ static void update_vector_normalize_operators(bNodeTree *ntree)
   }
 }
 
+/* The Average operator is no longer available in the Vector Math node.
+ * This altered the order of operators in the vector math type enum.
+ * To fix this, we remap the enum values according to the following rules:
+ *
+ * NODE_VECTOR_MATH_DOT_PRODUCT : 3 -> 7
+ * NODE_VECTOR_MATH_NORMALIZE   : 5 -> 11
+ *
+ * Additionally, NODE_VECTOR_MATH_AVERAGE is assigned a value of -1 to be
+ * identified later in the versioning code:
+ *
+ * NODE_VECTOR_MATH_AVERAGE : 2 -> -1
+ *
+ */
+static void update_vector_math_operators_enum_mapping(bNodeTree *ntree)
+{
+  for (bNode *node = ntree->nodes.first; node; node = node->next) {
+    if (node->type == SH_NODE_VECTOR_MATH) {
+      switch (node->custom1) {
+        case 2:
+          node->custom1 = -1;
+          break;
+        case 3:
+          node->custom1 = 7;
+          break;
+        case 5:
+          node->custom1 = 11;
+          break;
+      }
+    }
+  }
+}
+
 /* The Average operator is no longer available in the Vector Math node.
  * The Vector output was equal to the normalized sum of inputs vectors while
  * the Value output was equal to the length of the sum of input vectors.
@@ -742,7 +774,8 @@ static void update_vector_average_operator(bNodeTree *ntree)
 
   for (bNode *node = ntree->nodes.first; node; node = node->next) {
     if (node->type == SH_NODE_VECTOR_MATH) {
-      if (node->custom1 == NODE_VECTOR_MATH_AVERAGE) {
+      /* See update_vector_math_operators_enum_mapping for the -1. */
+      if (node->custom1 == -1) {
         node->custom1 = NODE_VECTOR_MATH_ADD;
         bNodeSocket *sockOutVector = nodeFindSocket(node, SOCK_OUT, "Vector");
         if (socket_is_used(sockOutVector)) {
@@ -839,6 +872,7 @@ void blo_do_versions_cycles(FileData *UNUSED(fd), Library *UNUSED(lib), Main *bm
       }
       update_math_socket_names_and_identifiers(ntree);
       update_vector_math_socket_names_and_identifiers(ntree);
+      update_vector_math_operators_enum_mapping(ntree);
     }
     FOREACH_NODETREE_END;
   }
diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl
index b327e821653..7d9f5fc1b18 100644
--- a/source/blender/gpu/shaders/gpu_shader_material.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_material.glsl
@@ -515,11 +515,6 @@ void vec_math_reflect(vec3 a, vec3 b, float scale, out vec3 outvec, out float ou
   outvec = reflect(a, normalize(b));
 }
 
-void vec_math_average(vec3 a, vec3 b, float scale, out vec3 outvec, out float outval)
-{
-  outvec = normalize(a + b);
-}
-
 void vec_math_dot(vec3 a, vec3 b, float scale, out vec3 outvec, out float outval)
 {
   outval = dot(a, b);
diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h
index 0898dc58d3e..929ae1840f9 100644
--- a/source/blender/makesdna/DNA_node_types.h
+++ b/source/blender/makesdna/DNA_node_types.h
@@ -1208,26 +1208,24 @@ enum {
 enum {
   NODE_VECTOR_MATH_ADD = 0,
   NODE_VECTOR_MATH_SUBTRACT = 1,
-  NODE_VECTOR_MATH_AVERAGE = 2,
-  NODE_VECTOR_MATH_DOT_PRODUCT = 3,
-  NODE_VECTOR_MATH_CROSS_PRODUCT = 4,
-  NODE_VECTOR_MATH_NORMALIZE = 5,
-
-  NODE_VECTOR_MATH_MULTIPLY = 6,
-  NODE_VECTOR_MATH_DIVIDE = 7,
-
-  NODE_VECTOR_MATH_PROJECT = 8,
-  NODE_VECTOR_MATH_REFLECT = 9,
+  NODE_VECTOR_MATH_MULTIPLY = 2,
+  NODE_VECTOR_MATH_DIVIDE = 3,
 
-  NODE_VECTOR_MATH_DISTANCE = 10,
-  NODE_VECTOR_MATH_LENGTH = 11,
-  NODE_VECTOR_MATH_SCALE = 12,
-
-  NODE_VECTOR_MATH_SNAP = 13,
-  NODE_VECTOR_MATH_MODULO = 14,
-  NODE_VECTOR_MATH_ABSOLUTE = 15,
-  NODE_VECTOR_MATH_MINIMUM = 16,
-  NODE_VECTOR_MATH_MAXIMUM = 17,
+  NODE_VECTOR_MATH_CROSS_PRODUCT = 4,
+  NODE_VECTOR_MATH_PROJECT = 5,
+  NODE_VECTOR_MATH_REFLECT = 6,
+  NODE_VECTOR_MATH_DOT_PRODUCT = 7,
+
+  NODE_VECTOR_MATH_DISTANCE = 8,
+  NODE_VECTOR_MATH_LENGTH = 9,
+  NODE_VECTOR_MATH_SCALE = 10,
+  NODE_VECTOR_MATH_NORMALIZE = 11,
+
+  NODE_VECTOR_MATH_SNAP = 12,
+  NODE_VECTOR_MATH_MODULO = 13,
+  NODE_VECTOR_MATH_ABSOLUTE = 14,
+  NODE_VECTOR_MATH_MINIMUM = 15,
+  NODE_VECTOR_MATH_MAXIMUM = 16,
 };
 
 /* mix rgb node flags */
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 1b72c880a3f..cefcf7e1995 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -160,9 +160,8 @@ const EnumPropertyItem rna_enum_node_vec_math_items[] = {
     {NODE_VECTOR_MATH_CROSS_PRODUCT, "CROSS_PRODUCT", 0, "Cross Product", "A x B"},
     {NODE_VECTOR_MATH_PROJECT, "PROJECT", 0, "Project", "Project A onto B"},
     {NODE_VECTOR_MATH_REFLECT, "REFLECT", 0, "Reflect", "Reflect A around the normal B"},
-    {NODE_VECTOR_MATH_AVERAGE, "AVERAGE", 0, "Average", "Normalized sum of vectors"},
-    {0, "", ICON_NONE, NULL, NULL},
     {NODE_VECTOR_MATH_DOT_PRODUCT, "DOT_PRODUCT", 0, "Dot Product", "A . B"},
+    {0, "", ICON_NONE, NULL, NULL},
     {NODE_VECTOR_MATH_DISTANCE, "DISTANCE", 0, "Distance", "Distance between A and B"},
     {NODE_VECTOR_MATH_LENGTH, "LENGTH", 0, "Length", "Length of A"},
     {NODE_VECTOR_MATH_SCALE, "SCALE", 0, "Scale", "Multiply A by Scale"},
diff --git a/source/blender/nodes/shader/nodes/node_shader_vectMath.c b/source/blender/nodes/shader/nodes/node_shader_vectMath.c
index 155292c5e06..fddcd8dac84 100644
--- a/source/blender/nodes/shader/nodes/node_shader_vectMath.c
+++ b/source/blender/nodes/shader/nodes/node_shader_vectMath.c
@@ -48,9 +48,8 @@ static int gpu_shader_vect_math(GPUMaterial *mat,
       [NODE_VECTOR_MATH_CROSS_PRODUCT] = "vec_math_cross",
       [NODE_VECTOR_MATH_PROJECT] = "vec_math_project",
       [NODE_VECTOR_MATH_REFLECT] = "vec_math_reflect",
-      [NODE_VECTOR_MATH_AVERAGE] = "vec_math_average",
-
       [NODE_VECTOR_MATH_DOT_PRODUCT] = "vec_math_dot",
+
       [NODE_VECTOR_MATH_DISTANCE] = "vec_math_distance",
       [NODE_VECTOR_MATH_LENGTH] = "vec_math_length",
       [NODE_VECTOR_MATH_SCALE] = "vec_math_scale",



More information about the Bf-blender-cvs mailing list