Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharlie Jolly <mistajolly@gmail.com>2020-02-24 21:17:19 +0300
committerCharlie Jolly <mistajolly@gmail.com>2020-02-24 21:17:19 +0300
commitf9b1e8f000ad636456e66e7a377814d79f7d85ac (patch)
treef2fde9f5b7e3957e2ceb9e8916b0ea2ada284f11 /intern/cycles/kernel
parentf7b6b7dda358c7928ca053c27357bc068b8c9d12 (diff)
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.
Diffstat (limited to 'intern/cycles/kernel')
-rw-r--r--intern/cycles/kernel/shaders/node_vector_rotate.osl25
-rw-r--r--intern/cycles/kernel/svm/svm_types.h5
-rw-r--r--intern/cycles/kernel/svm/svm_vector_rotate.h22
3 files changed, 2 insertions, 50 deletions
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 */