 |
Blender V4.3
|
Go to the documentation of this file.
23#define BLI_UNROLL_MATH_VEC_OP_VEC_VEC(op, a, b) \
24 if constexpr (Size == 4) { \
25 return VecBase<T, Size>(a.x op b.x, a.y op b.y, a.z op b.z, a.w op b.w); \
27 else if constexpr (Size == 3) { \
28 return VecBase<T, Size>(a.x op b.x, a.y op b.y, a.z op b.z); \
30 else if constexpr (Size == 2) { \
31 return VecBase<T, Size>(a.x op b.x, a.y op b.y); \
34 VecBase<T, Size> result; \
35 for (int i = 0; i < Size; i++) { \
36 result[i] = a[i] op b[i]; \
42#define BLI_UNROLL_MATH_VEC_FUNC_VEC_VEC(op, a, b) \
43 if constexpr (Size == 4) { \
44 return VecBase<T, Size>(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z), op(a.w, b.w)); \
46 else if constexpr (Size == 3) { \
47 return VecBase<T, Size>(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z)); \
49 else if constexpr (Size == 2) { \
50 return VecBase<T, Size>(op(a.x, b.x), op(a.y, b.y)); \
53 VecBase<T, Size> result; \
54 for (int i = 0; i < Size; i++) { \
55 result[i] = op(a[i], b[i]); \
61#define BLI_UNROLL_MATH_VEC_OP_VEC(op, a) \
62 if constexpr (Size == 4) { \
63 return VecBase<T, Size>(op(a.x), op(a.y), op(a.z), op(a.w)); \
65 else if constexpr (Size == 3) { \
66 return VecBase<T, Size>(op(a.x), op(a.y), op(a.z)); \
68 else if constexpr (Size == 2) { \
69 return VecBase<T, Size>(op(a.x), op(a.y)); \
72 VecBase<T, Size> result; \
73 for (int i = 0; i < Size; i++) { \
74 result[i] = op(a[i]); \
80#define BLI_UNROLL_MATH_VEC_OP_SCALAR_VEC(op, a, b) \
81 if constexpr (Size == 4) { \
82 return VecBase<T, Size>(a op b.x, a op b.y, a op b.z, a op b.w); \
84 else if constexpr (Size == 3) { \
85 return VecBase<T, Size>(a op b.x, a op b.y, a op b.z); \
87 else if constexpr (Size == 2) { \
88 return VecBase<T, Size>(a op b.x, a op b.y); \
91 VecBase<T, Size> result; \
92 for (int i = 0; i < Size; i++) { \
93 result[i] = a op b[i]; \
99#define BLI_UNROLL_MATH_VEC_OP_VEC_SCALAR(op, a, b) \
100 if constexpr (Size == 4) { \
101 return VecBase<T, Size>(a.x op b, a.y op b, a.z op b, a.w op b); \
103 else if constexpr (Size == 3) { \
104 return VecBase<T, Size>(a.x op b, a.y op b, a.z op b); \
106 else if constexpr (Size == 2) { \
107 return VecBase<T, Size>(a.x op b, a.y op b); \
110 VecBase<T, Size> result; \
111 for (int i = 0; i < Size; i++) { \
112 result[i] = a[i] op b; \
118#define BLI_UNROLL_MATH_VEC_OP_ASSIGN_VEC(op, b) \
119 if constexpr (Size == 4) { \
125 else if constexpr (Size == 3) { \
130 else if constexpr (Size == 2) { \
135 for (int i = 0; i < Size; i++) { \
136 (*this)[i] op b[i]; \
142#define BLI_UNROLL_MATH_VEC_OP_ASSIGN_SCALAR(op, b) \
143 if constexpr (Size == 4) { \
149 else if constexpr (Size == 3) { \
154 else if constexpr (Size == 2) { \
159 for (int i = 0; i < Size; i++) { \
166#define BLI_UNROLL_MATH_VEC_OP_INIT_INDEX(a) \
167 if constexpr (Size == 4) { \
173 else if constexpr (Size == 3) { \
178 else if constexpr (Size == 2) { \
183 for (int i = 0; i < Size; i++) { \
189#define BLI_UNROLL_MATH_VEC_OP_INIT_VECTOR(a) \
190 if constexpr (Size == 4) { \
196 else if constexpr (Size == 3) { \
201 else if constexpr (Size == 2) { \
206 for (int i = 0; i < Size; i++) { \
207 (*this)[i] = T(a[i]); \