diff options
author | Charlie Jolly <mistajolly@gmail.com> | 2020-02-24 21:17:19 +0300 |
---|---|---|
committer | Charlie Jolly <mistajolly@gmail.com> | 2020-02-24 21:17:19 +0300 |
commit | f9b1e8f000ad636456e66e7a377814d79f7d85ac (patch) | |
tree | f2fde9f5b7e3957e2ceb9e8916b0ea2ada284f11 /intern/cycles/kernel/svm | |
parent | f7b6b7dda358c7928ca053c27357bc068b8c9d12 (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/svm')
-rw-r--r-- | intern/cycles/kernel/svm/svm_types.h | 5 | ||||
-rw-r--r-- | intern/cycles/kernel/svm/svm_vector_rotate.h | 22 |
2 files changed, 2 insertions, 25 deletions
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 */ |