[Bf-blender-cvs] [f9b1e8f000a] master: Fix T74169: Vector Rotate Node - Euler modes not working as intended

Charlie Jolly noreply at git.blender.org
Mon Feb 24 19:18:02 CET 2020


Commit: f9b1e8f000ad636456e66e7a377814d79f7d85ac
Author: Charlie Jolly
Date:   Mon Feb 24 18:17:19 2020 +0000
Branches: master
https://developer.blender.org/rBf9b1e8f000ad636456e66e7a377814d79f7d85ac

Fix T74169: Vector Rotate Node - Euler modes not working as intended

Remove additional Euler modes for the time being, not working as intended, will add back if there is a need.

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

M	intern/cycles/kernel/shaders/node_vector_rotate.osl
M	intern/cycles/kernel/svm/svm_types.h
M	intern/cycles/kernel/svm/svm_vector_rotate.h
M	intern/cycles/render/nodes.cpp
M	source/blender/gpu/shaders/material/gpu_shader_material_vector_rotate.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_vector_rotate.c

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

diff --git a/intern/cycles/kernel/shaders/node_vector_rotate.osl b/intern/cycles/kernel/shaders/node_vector_rotate.osl
index a049ee92dbc..533aa7bbe13 100644
--- a/intern/cycles/kernel/shaders/node_vector_rotate.osl
+++ b/intern/cycles/kernel/shaders/node_vector_rotate.osl
@@ -28,31 +28,6 @@ shader node_vector_rotate(string type = "axis",
   if (type == "euler_xyz") {
     VectorOut = transform(euler_to_mat(Rotation), VectorIn - Center) + Center;
   }
-  else if (type == "euler_xzy") {
-    VectorOut = transform(euler_to_mat(point(-Rotation[0], -Rotation[2], -Rotation[1])),
-                          VectorIn - Center) +
-                Center;
-  }
-  else if (type == "euler_yxz") {
-    VectorOut = transform(euler_to_mat(point(-Rotation[1], -Rotation[0], -Rotation[2])),
-                          VectorIn - Center) +
-                Center;
-  }
-  else if (type == "euler_yzx") {
-    VectorOut = transform(euler_to_mat(point(Rotation[1], Rotation[2], Rotation[0])),
-                          VectorIn - Center) +
-                Center;
-  }
-  else if (type == "euler_zxy") {
-    VectorOut = transform(euler_to_mat(point(Rotation[2], Rotation[0], Rotation[1])),
-                          VectorIn - Center) +
-                Center;
-  }
-  else if (type == "euler_zyx") {
-    VectorOut = transform(euler_to_mat(point(-Rotation[2], -Rotation[1], -Rotation[0])),
-                          VectorIn - Center) +
-                Center;
-  }
   else if (type == "x_axis") {
     VectorOut = rotate(VectorIn - Center, Angle, point(0.0), vector(1.0, 0.0, 0.0)) + Center;
   }
diff --git a/intern/cycles/kernel/svm/svm_types.h b/intern/cycles/kernel/svm/svm_types.h
index cff2b964c51..9877b75fab8 100644
--- a/intern/cycles/kernel/svm/svm_types.h
+++ b/intern/cycles/kernel/svm/svm_types.h
@@ -358,11 +358,6 @@ typedef enum NodeVectorRotateType {
   NODE_VECTOR_ROTATE_TYPE_AXIS_Y,
   NODE_VECTOR_ROTATE_TYPE_AXIS_Z,
   NODE_VECTOR_ROTATE_TYPE_EULER_XYZ,
-  NODE_VECTOR_ROTATE_TYPE_EULER_XZY,
-  NODE_VECTOR_ROTATE_TYPE_EULER_YXZ,
-  NODE_VECTOR_ROTATE_TYPE_EULER_YZX,
-  NODE_VECTOR_ROTATE_TYPE_EULER_ZXY,
-  NODE_VECTOR_ROTATE_TYPE_EULER_ZYX,
 } NodeVectorRotateType;
 
 typedef enum NodeVectorTransformType {
diff --git a/intern/cycles/kernel/svm/svm_vector_rotate.h b/intern/cycles/kernel/svm/svm_vector_rotate.h
index c7923e10c53..903a9c1d1db 100644
--- a/intern/cycles/kernel/svm/svm_vector_rotate.h
+++ b/intern/cycles/kernel/svm/svm_vector_rotate.h
@@ -35,26 +35,8 @@ ccl_device void svm_node_vector_rotate(ShaderData *sd,
   float3 center = stack_load_float3(stack, center_stack_offset);
   float3 result = make_float3(0.0f, 0.0f, 0.0f);
 
-  if (type != NODE_VECTOR_ROTATE_TYPE_AXIS && type != NODE_VECTOR_ROTATE_TYPE_AXIS_X &&
-      type != NODE_VECTOR_ROTATE_TYPE_AXIS_Y && type != NODE_VECTOR_ROTATE_TYPE_AXIS_Z) {
+  if (type == NODE_VECTOR_ROTATE_TYPE_EULER_XYZ) {
     float3 rotation = stack_load_float3(stack, rotation_stack_offset);  // Default XYZ.
-    switch (type) {
-      case NODE_VECTOR_ROTATE_TYPE_EULER_XZY:
-        rotation = make_float3(-rotation.x, -rotation.z, -rotation.y);
-        break;
-      case NODE_VECTOR_ROTATE_TYPE_EULER_YXZ:
-        rotation = make_float3(-rotation.y, -rotation.x, -rotation.z);
-        break;
-      case NODE_VECTOR_ROTATE_TYPE_EULER_YZX:
-        rotation = make_float3(rotation.y, rotation.z, rotation.x);
-        break;
-      case NODE_VECTOR_ROTATE_TYPE_EULER_ZXY:
-        rotation = make_float3(rotation.z, rotation.x, rotation.y);
-        break;
-      case NODE_VECTOR_ROTATE_TYPE_EULER_ZYX:
-        rotation = make_float3(-rotation.z, -rotation.y, -rotation.x);
-        break;
-    }
     Transform rotationTransform = euler_to_transform(rotation);
     result = transform_direction(&rotationTransform, vector - center) + center;
   }
@@ -75,7 +57,7 @@ ccl_device void svm_node_vector_rotate(ShaderData *sd,
         break;
     }
     float angle = stack_load_float(stack, angle_stack_offset);
-    result = is_zero(axis) ? vector : rotate_around_axis(vector - center, axis, angle) + center;
+    result = len(axis) ? rotate_around_axis(vector - center, axis, angle) + center : vector;
   }
 
   /* Output */
diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp
index 9c909c2131f..f975ef993fc 100644
--- a/intern/cycles/render/nodes.cpp
+++ b/intern/cycles/render/nodes.cpp
@@ -6165,11 +6165,6 @@ NODE_DEFINE(VectorRotateNode)
   type_enum.insert("y_axis", NODE_VECTOR_ROTATE_TYPE_AXIS_Y);
   type_enum.insert("z_axis", NODE_VECTOR_ROTATE_TYPE_AXIS_Z);
   type_enum.insert("euler_xyz", NODE_VECTOR_ROTATE_TYPE_EULER_XYZ);
-  type_enum.insert("euler_xzy", NODE_VECTOR_ROTATE_TYPE_EULER_XZY);
-  type_enum.insert("euler_yxz", NODE_VECTOR_ROTATE_TYPE_EULER_YXZ);
-  type_enum.insert("euler_yzx", NODE_VECTOR_ROTATE_TYPE_EULER_YZX);
-  type_enum.insert("euler_zxy", NODE_VECTOR_ROTATE_TYPE_EULER_ZXY);
-  type_enum.insert("euler_zyx", NODE_VECTOR_ROTATE_TYPE_EULER_ZYX);
   SOCKET_ENUM(type, "Type", type_enum, NODE_VECTOR_ROTATE_TYPE_AXIS);
 
   SOCKET_IN_VECTOR(vector, "Vector", make_float3(0.0f, 0.0f, 0.0f));
diff --git a/source/blender/gpu/shaders/material/gpu_shader_material_vector_rotate.glsl b/source/blender/gpu/shaders/material/gpu_shader_material_vector_rotate.glsl
index 7d707706a03..405821e01e3 100644
--- a/source/blender/gpu/shaders/material/gpu_shader_material_vector_rotate.glsl
+++ b/source/blender/gpu/shaders/material/gpu_shader_material_vector_rotate.glsl
@@ -50,33 +50,3 @@ void node_vector_rotate_euler_xyz(
 {
   vec = euler_to_mat3(rotation) * (vector_in - center) + center;
 }
-
-void node_vector_rotate_euler_xzy(
-    vec3 vector_in, vec3 center, vec3 axis, float angle, vec3 rotation, out vec3 vec)
-{
-  vec = euler_to_mat3(-rotation.xzy) * (vector_in - center) + center;
-}
-
-void node_vector_rotate_euler_yxz(
-    vec3 vector_in, vec3 center, vec3 axis, float angle, vec3 rotation, out vec3 vec)
-{
-  vec = euler_to_mat3(-rotation.yxz) * (vector_in - center) + center;
-}
-
-void node_vector_rotate_euler_yzx(
-    vec3 vector_in, vec3 center, vec3 axis, float angle, vec3 rotation, out vec3 vec)
-{
-  vec = euler_to_mat3(rotation.yzx) * (vector_in - center) + center;
-}
-
-void node_vector_rotate_euler_zxy(
-    vec3 vector_in, vec3 center, vec3 axis, float angle, vec3 rotation, out vec3 vec)
-{
-  vec = euler_to_mat3(rotation.zxy) * (vector_in - center) + center;
-}
-
-void node_vector_rotate_euler_zyx(
-    vec3 vector_in, vec3 center, vec3 axis, float angle, vec3 rotation, out vec3 vec)
-{
-  vec = euler_to_mat3(-rotation.zyx) * (vector_in - center) + center;
-}
diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h
index 5f7c42b7521..44d44b92499 100644
--- a/source/blender/makesdna/DNA_node_types.h
+++ b/source/blender/makesdna/DNA_node_types.h
@@ -1212,11 +1212,6 @@ enum {
   NODE_VECTOR_ROTATE_TYPE_AXIS_Y = 2,
   NODE_VECTOR_ROTATE_TYPE_AXIS_Z = 3,
   NODE_VECTOR_ROTATE_TYPE_EULER_XYZ = 4,
-  NODE_VECTOR_ROTATE_TYPE_EULER_XZY = 5,
-  NODE_VECTOR_ROTATE_TYPE_EULER_YXZ = 6,
-  NODE_VECTOR_ROTATE_TYPE_EULER_YZX = 7,
-  NODE_VECTOR_ROTATE_TYPE_EULER_ZXY = 8,
-  NODE_VECTOR_ROTATE_TYPE_EULER_ZYX = 9,
 };
 
 /* math node clamp */
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 36bb65294fb..994d0471113 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -134,34 +134,8 @@ const EnumPropertyItem rna_enum_vector_rotate_type_items[] = {
     {NODE_VECTOR_ROTATE_TYPE_EULER_XYZ,
      "EULER_XYZ",
      0,
-     "XYZ Euler",
+     "Euler",
      "Rotate a point using XYZ order"},
-
-    {NODE_VECTOR_ROTATE_TYPE_EULER_XZY,
-     "EULER_XZY",
-     0,
-     "XZY Euler",
-     "Rotate a point using XZY order"},
-    {NODE_VECTOR_ROTATE_TYPE_EULER_YXZ,
-     "EULER_YXZ",
-     0,
-     "YXZ Euler",
-     "Rotate a point using YXZ order"},
-    {NODE_VECTOR_ROTATE_TYPE_EULER_YZX,
-     "EULER_YZX",
-     0,
-     "YZX Euler",
-     "Rotate a point using YZX order"},
-    {NODE_VECTOR_ROTATE_TYPE_EULER_ZXY,
-     "EULER_ZXY",
-     0,
-     "ZXY Euler",
-     "Rotate a point using ZXY order"},
-    {NODE_VECTOR_ROTATE_TYPE_EULER_ZYX,
-     "EULER_ZYX",
-     0,
-     "XZY Euler",
-     "Rotate a point using ZYX order"},
     {0, NULL, 0, NULL, NULL},
 };
 
diff --git a/source/blender/nodes/shader/nodes/node_shader_vector_rotate.c b/source/blender/nodes/shader/nodes/node_shader_vector_rotate.c
index 3fd627cd886..bee5377c438 100644
--- a/source/blender/nodes/shader/nodes/node_shader_vector_rotate.c
+++ b/source/blender/nodes/shader/nodes/node_shader_vector_rotate.c
@@ -48,11 +48,6 @@ static int gpu_shader_vector_rotate(GPUMaterial *mat,
       [NODE_VECTOR_ROTATE_TYPE_AXIS_Y] = "node_vector_rotate_axis_y",
       [NODE_VECTOR_ROTATE_TYPE_AXIS_Z] = "node_vector_rotate_axis_z",
       [NODE_VECTOR_ROTATE_TYPE_EULER_XYZ] = "node_vector_rotate_euler_xyz",
-      [NODE_VECTOR_ROTATE_TYPE_EULER_XZY] = "node_vector_rotate_euler_xzy",
-      [NODE_VECTOR_ROTATE_TYPE_EULER_YXZ] = "node_vector_rotate_euler_yxz",
-      [NODE_VECTOR_ROTATE_TYPE_EULER_YZX] = "node_vector_rotate_euler_yzx",
-      [NODE_VECTOR_ROTATE_TYPE_EULER_ZXY] = "node_vector_rotate_euler_zxy",
-      [NODE_VECTOR_ROTATE_TYPE_EULER_ZYX] = "node_vector_rotate_euler_zyx",
   };
 
   if (node->custom1 < ARRAY_SIZE(names) && names[node->custom1]) {
@@ -66,21 +61,11 @@ static int gpu_shader_vector_rotate(GPUMaterial *mat,
 static void node_shader_update_vector_rotate(bNodeTree *UNUSED(ntree), bNode *node)
 {
   bNodeSocket *sock_rotation = nodeFindSocket(node, SOCK_IN, "Rotation");
-  nodeSetSocketAvailability(sock_rotation,
-                            !ELEM(node->custom1,
-                                  NODE_VECTOR_ROTATE_TYPE_AXIS,
-                                  NODE_VECTOR_ROTATE_TYPE_AXIS_X,
-                                  NODE_VECTOR_ROTATE_TYPE_AXIS_Y,
-                                  NODE_VECTOR_ROTATE_TYPE_AXIS_Z));
+  nodeSetSocketAvailability(sock_rotation, ELEM(node->custom1, NODE_VECTOR_ROTATE_TYPE_EULER_XYZ));
   bNodeSocket *sock_axis = nodeFindSocket(node, SOCK_IN, "

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list