67 static const mf::Signature
signature = []() {
69 mf::SignatureBuilder builder{
"Separate Matrix",
signature};
70 builder.single_input<
float4x4>(
"Matrix");
72 builder.single_output<
float>(
"Column 1 Row 1", mf::ParamFlag::SupportsUnusedOutput);
73 builder.single_output<
float>(
"Column 1 Row 2", mf::ParamFlag::SupportsUnusedOutput);
74 builder.single_output<
float>(
"Column 1 Row 3", mf::ParamFlag::SupportsUnusedOutput);
75 builder.single_output<
float>(
"Column 1 Row 4", mf::ParamFlag::SupportsUnusedOutput);
77 builder.single_output<
float>(
"Column 2 Row 1", mf::ParamFlag::SupportsUnusedOutput);
78 builder.single_output<
float>(
"Column 2 Row 2", mf::ParamFlag::SupportsUnusedOutput);
79 builder.single_output<
float>(
"Column 2 Row 3", mf::ParamFlag::SupportsUnusedOutput);
80 builder.single_output<
float>(
"Column 2 Row 4", mf::ParamFlag::SupportsUnusedOutput);
82 builder.single_output<
float>(
"Column 3 Row 1", mf::ParamFlag::SupportsUnusedOutput);
83 builder.single_output<
float>(
"Column 3 Row 2", mf::ParamFlag::SupportsUnusedOutput);
84 builder.single_output<
float>(
"Column 3 Row 3", mf::ParamFlag::SupportsUnusedOutput);
85 builder.single_output<
float>(
"Column 3 Row 4", mf::ParamFlag::SupportsUnusedOutput);
87 builder.single_output<
float>(
"Column 4 Row 1", mf::ParamFlag::SupportsUnusedOutput);
88 builder.single_output<
float>(
"Column 4 Row 2", mf::ParamFlag::SupportsUnusedOutput);
89 builder.single_output<
float>(
"Column 4 Row 3", mf::ParamFlag::SupportsUnusedOutput);
90 builder.single_output<
float>(
"Column 4 Row 4", mf::ParamFlag::SupportsUnusedOutput);
100 MutableSpan<float> column_1_row_1 = params.uninitialized_single_output_if_required<
float>(
101 1,
"Column 1 Row 1");
102 MutableSpan<float> column_1_row_2 = params.uninitialized_single_output_if_required<
float>(
103 2,
"Column 1 Row 2");
104 MutableSpan<float> column_1_row_3 = params.uninitialized_single_output_if_required<
float>(
105 3,
"Column 1 Row 3");
106 MutableSpan<float> column_1_row_4 = params.uninitialized_single_output_if_required<
float>(
107 4,
"Column 1 Row 4");
109 MutableSpan<float> column_2_row_1 = params.uninitialized_single_output_if_required<
float>(
110 5,
"Column 2 Row 1");
111 MutableSpan<float> column_2_row_2 = params.uninitialized_single_output_if_required<
float>(
112 6,
"Column 2 Row 2");
113 MutableSpan<float> column_2_row_3 = params.uninitialized_single_output_if_required<
float>(
114 7,
"Column 2 Row 3");
115 MutableSpan<float> column_2_row_4 = params.uninitialized_single_output_if_required<
float>(
116 8,
"Column 2 Row 4");
118 MutableSpan<float> column_3_row_1 = params.uninitialized_single_output_if_required<
float>(
119 9,
"Column 3 Row 1");
120 MutableSpan<float> column_3_row_2 = params.uninitialized_single_output_if_required<
float>(
121 10,
"Column 3 Row 2");
122 MutableSpan<float> column_3_row_3 = params.uninitialized_single_output_if_required<
float>(
123 11,
"Column 3 Row 3");
124 MutableSpan<float> column_3_row_4 = params.uninitialized_single_output_if_required<
float>(
125 12,
"Column 3 Row 4");
127 MutableSpan<float> column_4_row_1 = params.uninitialized_single_output_if_required<
float>(
128 13,
"Column 4 Row 1");
129 MutableSpan<float> column_4_row_2 = params.uninitialized_single_output_if_required<
float>(
130 14,
"Column 4 Row 2");
131 MutableSpan<float> column_4_row_3 = params.uninitialized_single_output_if_required<
float>(
132 15,
"Column 4 Row 3");
133 MutableSpan<float> column_4_row_4 = params.uninitialized_single_output_if_required<
float>(
134 16,
"Column 4 Row 4");
136 if (
const std::optional<float4x4> single = matrices.
get_if_single()) {
138 column_1_row_1.fill(matrix[0][0]);
139 column_1_row_2.fill(matrix[0][1]);
140 column_1_row_3.fill(matrix[0][2]);
141 column_1_row_4.fill(matrix[0][3]);
143 column_2_row_1.fill(matrix[1][0]);
144 column_2_row_2.fill(matrix[1][1]);
145 column_2_row_3.fill(matrix[1][2]);
146 column_2_row_4.fill(matrix[1][3]);
148 column_3_row_1.fill(matrix[2][0]);
149 column_3_row_2.fill(matrix[2][1]);
150 column_3_row_3.fill(matrix[2][2]);
151 column_3_row_4.fill(matrix[2][3]);
153 column_4_row_1.fill(matrix[3][0]);
154 column_4_row_2.fill(matrix[3][1]);
155 column_4_row_3.fill(matrix[3][2]);
156 column_4_row_4.fill(matrix[3][3]);