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", _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs