Skip to content

Commit bbaaab4

Browse files
Fix matrix comparison operators on CPU (shader-slang#6296)
Co-authored-by: Yong He <yonghe@outlook.com>
1 parent f5700bd commit bbaaab4

File tree

1 file changed

+42
-18
lines changed

1 file changed

+42
-18
lines changed

prelude/slang-cpp-types-core.h

+42-18
Original file line numberDiff line numberDiff line change
@@ -582,6 +582,17 @@ struct Matrix
582582
return result; \
583583
}
584584

585+
#define SLANG_MATRIX_BINARY_COMPARE_OP(T, op) \
586+
template<int R, int C> \
587+
Matrix<bool, R, C> operator op(const Matrix<T, R, C>& thisVal, const Matrix<T, R, C>& other) \
588+
{ \
589+
Matrix<bool, R, C> result; \
590+
for (int i = 0; i < R; i++) \
591+
for (int j = 0; j < C; j++) \
592+
result.rows[i][j] = thisVal.rows[i][j] op other.rows[i][j]; \
593+
return result; \
594+
}
595+
585596
#define SLANG_MATRIX_UNARY_OP(T, op) \
586597
template<int R, int C> \
587598
Matrix<T, R, C> operator op(const Matrix<T, R, C>& thisVal) \
@@ -592,25 +603,38 @@ struct Matrix
592603
result[i].rows[i][j] = op thisVal.rows[i][j]; \
593604
return result; \
594605
}
595-
#define SLANG_INT_MATRIX_OPS(T) \
596-
SLANG_MATRIX_BINARY_OP(T, +) \
597-
SLANG_MATRIX_BINARY_OP(T, -) \
598-
SLANG_MATRIX_BINARY_OP(T, *) \
599-
SLANG_MATRIX_BINARY_OP(T, /) \
600-
SLANG_MATRIX_BINARY_OP(T, &) \
601-
SLANG_MATRIX_BINARY_OP(T, |) \
602-
SLANG_MATRIX_BINARY_OP(T, &&) \
603-
SLANG_MATRIX_BINARY_OP(T, ||) \
604-
SLANG_MATRIX_BINARY_OP(T, ^) \
605-
SLANG_MATRIX_BINARY_OP(T, %) \
606-
SLANG_MATRIX_UNARY_OP(T, !) \
606+
607+
#define SLANG_INT_MATRIX_OPS(T) \
608+
SLANG_MATRIX_BINARY_OP(T, +) \
609+
SLANG_MATRIX_BINARY_OP(T, -) \
610+
SLANG_MATRIX_BINARY_OP(T, *) \
611+
SLANG_MATRIX_BINARY_OP(T, /) \
612+
SLANG_MATRIX_BINARY_OP(T, &) \
613+
SLANG_MATRIX_BINARY_OP(T, |) \
614+
SLANG_MATRIX_BINARY_OP(T, &&) \
615+
SLANG_MATRIX_BINARY_OP(T, ||) \
616+
SLANG_MATRIX_BINARY_OP(T, ^) \
617+
SLANG_MATRIX_BINARY_OP(T, %) \
618+
SLANG_MATRIX_BINARY_COMPARE_OP(T, >) \
619+
SLANG_MATRIX_BINARY_COMPARE_OP(T, <) \
620+
SLANG_MATRIX_BINARY_COMPARE_OP(T, >=) \
621+
SLANG_MATRIX_BINARY_COMPARE_OP(T, <=) \
622+
SLANG_MATRIX_BINARY_COMPARE_OP(T, ==) \
623+
SLANG_MATRIX_BINARY_COMPARE_OP(T, !=) \
624+
SLANG_MATRIX_UNARY_OP(T, !) \
607625
SLANG_MATRIX_UNARY_OP(T, ~)
608-
#define SLANG_FLOAT_MATRIX_OPS(T) \
609-
SLANG_MATRIX_BINARY_OP(T, +) \
610-
SLANG_MATRIX_BINARY_OP(T, -) \
611-
SLANG_MATRIX_BINARY_OP(T, *) \
612-
SLANG_MATRIX_BINARY_OP(T, /) \
613-
SLANG_MATRIX_UNARY_OP(T, -)
626+
#define SLANG_FLOAT_MATRIX_OPS(T) \
627+
SLANG_MATRIX_BINARY_OP(T, +) \
628+
SLANG_MATRIX_BINARY_OP(T, -) \
629+
SLANG_MATRIX_BINARY_OP(T, *) \
630+
SLANG_MATRIX_BINARY_OP(T, /) \
631+
SLANG_MATRIX_UNARY_OP(T, -) \
632+
SLANG_MATRIX_BINARY_COMPARE_OP(T, >) \
633+
SLANG_MATRIX_BINARY_COMPARE_OP(T, <) \
634+
SLANG_MATRIX_BINARY_COMPARE_OP(T, >=) \
635+
SLANG_MATRIX_BINARY_COMPARE_OP(T, <=) \
636+
SLANG_MATRIX_BINARY_COMPARE_OP(T, ==) \
637+
SLANG_MATRIX_BINARY_COMPARE_OP(T, !=)
614638
SLANG_INT_MATRIX_OPS(int)
615639
SLANG_INT_MATRIX_OPS(int8_t)
616640
SLANG_INT_MATRIX_OPS(int16_t)

0 commit comments

Comments
 (0)