16 "The inverted matrix or the identity matrix if the input is not invertible");
17 b.add_output<
decl::Bool>(
"Invertible").description(
"True if the input matrix is invertible");
27 builder.single_input<
float4x4>(
"Matrix");
28 builder.single_output<
float4x4>(
"Matrix", mf::ParamFlag::SupportsUnusedOutput);
29 builder.single_output<
bool>(
"Invertible", mf::ParamFlag::SupportsUnusedOutput);
42 mask.foreach_index([&](
const int64_t i) {
43 const float4x4 &matrix = in_matrices[i];
46 if (!out_matrices.is_empty()) {
49 if (!out_invertible.is_empty()) {
50 out_invertible[i] = success;
#define NODE_CLASS_CONVERTER
#define NOD_REGISTER_NODE(REGISTER_FUNC)
const Signature & signature() const
void set_signature(const Signature *signature)
void set_matching_fn(const mf::MultiFunction *fn)
void call(const IndexMask &mask, mf::Params params, mf::Context) const override
local_group_size(16, 16) .push_constant(Type b
void node_register_type(bNodeType *ntype)
CartesianBasis invert(const CartesianBasis &basis)
static void node_declare(NodeDeclarationBuilder &b)
static void node_build_multi_function(NodeMultiFunctionBuilder &builder)
static void node_register()
void fn_node_type_base(blender::bke::bNodeType *ntype, int type, const char *name, short nclass)
static MatBase identity()
NodeMultiFunctionBuildFunction build_multi_function
NodeDeclareFunction declare