13 uint input_stack_offsets,
14 uint axis_stack_offsets,
15 uint result_stack_offset)
17 uint type, vector_stack_offset, rotation_stack_offset, center_stack_offset, axis_stack_offset,
18 angle_stack_offset,
invert;
21 input_stack_offsets, &type, &vector_stack_offset, &rotation_stack_offset, &
invert);
23 axis_stack_offsets, ¢er_stack_offset, &axis_stack_offset, &angle_stack_offset);
59 axis_length =
len(axis);
64 result = (axis_length != 0.0f) ?
@ NODE_VECTOR_ROTATE_TYPE_AXIS_Z
@ NODE_VECTOR_ROTATE_TYPE_AXIS_X
@ NODE_VECTOR_ROTATE_TYPE_EULER_XYZ
@ NODE_VECTOR_ROTATE_TYPE_AXIS_Y
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
#define ccl_device_noinline
#define CCL_NAMESPACE_END
CCL_NAMESPACE_BEGIN ccl_device float invert(float color, float factor)
ccl_device_inline void stack_store_float3(ccl_private float *stack, uint a, float3 f)
CCL_NAMESPACE_BEGIN ccl_device_inline float3 stack_load_float3(ccl_private float *stack, uint a)
ccl_device_forceinline void svm_unpack_node_uchar3(uint i, ccl_private uint *x, ccl_private uint *y, ccl_private uint *z)
ccl_device_inline float stack_load_float(ccl_private float *stack, uint a)
ccl_device_forceinline void svm_unpack_node_uchar4(uint i, ccl_private uint *x, ccl_private uint *y, ccl_private uint *z, ccl_private uint *w)
ccl_device_inline bool stack_valid(uint a)
ccl_device_inline float3 rotate_around_axis(float3 p, float3 axis, float angle)
CCL_NAMESPACE_BEGIN ccl_device_noinline void svm_node_vector_rotate(ccl_private ShaderData *sd, ccl_private float *stack, uint input_stack_offsets, uint axis_stack_offsets, uint result_stack_offset)