23 .default_value({0.0f, 0.0f, 1.0f})
42 return "node_vector_rotate_axis_angle";
44 return "node_vector_rotate_axis_x";
46 return "node_vector_rotate_axis_y";
48 return "node_vector_rotate_axis_z";
50 return "node_vector_rotate_euler_xyz";
64 if (name !=
nullptr) {
102 const int mode =
node.custom1;
void node_type_gpu(struct bNodeType *ntype, NodeGPUExecFunction gpu_fn)
void node_type_update(struct bNodeType *ntype, void(*updatefunc)(struct bNodeTree *ntree, struct bNode *node))
#define SH_NODE_VECTOR_ROTATE
void nodeSetSocketAvailability(struct bNodeTree *ntree, struct bNodeSocket *sock, bool is_available)
struct bNodeSocket * nodeFindSocket(const struct bNode *node, eNodeSocketInOut in_out, const char *identifier)
#define NODE_CLASS_OP_VECTOR
void nodeRegisterType(struct bNodeType *ntype)
#define BLI_assert_unreachable()
void mul_m3_v3(const float M[3][3], float r[3])
bool invert_m3(float R[3][3])
void eul_to_mat3(float mat[3][3], const float eul[3])
void axis_angle_to_mat3(float R[3][3], const float axis[3], float angle)
@ NODE_VECTOR_ROTATE_TYPE_AXIS
@ NODE_VECTOR_ROTATE_TYPE_AXIS_Z
@ NODE_VECTOR_ROTATE_TYPE_AXIS_X
@ NODE_VECTOR_ROTATE_TYPE_EULER_XYZ
@ NODE_VECTOR_ROTATE_TYPE_AXIS_Y
NSNotificationCenter * center
GPUNodeLink * GPU_constant(const float *num)
bool GPU_stack_link(GPUMaterial *mat, struct bNode *node, const char *name, GPUNodeStack *in, GPUNodeStack *out,...)
@ UI_ITEM_R_SPLIT_EMPTY_NAME
void uiItemR(uiLayout *layout, struct PointerRNA *ptr, const char *propname, int flag, const char *name, int icon)
SIMD_FORCE_INLINE btScalar angle(const btVector3 &v) const
Return the angle between this and another vector.
void set_matching_fn(const MultiFunction *fn)
void make_available(bNode &node) const
CCL_NAMESPACE_BEGIN ccl_device float invert(float color, float factor)
static float3 sh_node_vector_rotate_around_axis(const float3 &vector, const float3 ¢er, const float3 &axis, const float angle)
static void sh_node_vector_rotate_declare(NodeDeclarationBuilder &b)
static void sh_node_vector_rotate_build_multi_function(NodeMultiFunctionBuilder &builder)
static void node_shader_buts_vector_rotate(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static float3 sh_node_vector_rotate_euler(const float3 &vector, const float3 ¢er, const float3 &rotation, const bool invert)
static const char * gpu_shader_get_name(int mode)
static const fn::MultiFunction * get_multi_function(bNode &node)
static int gpu_shader_vector_rotate(GPUMaterial *mat, bNode *node, bNodeExecData *UNUSED(execdata), GPUNodeStack *in, GPUNodeStack *out)
static void node_shader_update_vector_rotate(bNodeTree *ntree, bNode *node)
vec_base< float, 3 > float3
static const pxr::TfToken out("out", pxr::TfToken::Immortal)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
void sh_fn_node_type_base(bNodeType *ntype, int type, const char *name, short nclass)
void register_node_type_sh_vector_rotate()
void(* draw_buttons)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr)
NodeMultiFunctionBuildFunction build_multi_function
NodeDeclareFunction declare