[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