@@ -677,11 +677,13 @@ namespace omath
677677 {0 .f , 1 .f / fov_half_tan, 0 .f , 0 .f },
678678 {0 .f , 0 .f , far / (far - near), -(near * far) / (far - near)},
679679 {0 .f , 0 .f , 1 .f , 0 .f }};
680- else
680+ else if constexpr (DepthRange == NDCDepthRange::NEGATIVE_ONE_TO_ONE)
681681 return {{1 .f / (aspect_ratio * fov_half_tan), 0 .f , 0 .f , 0 .f },
682682 {0 .f , 1 .f / fov_half_tan, 0 .f , 0 .f },
683683 {0 .f , 0 .f , (far + near) / (far - near), -(2 .f * near * far) / (far - near)},
684684 {0 .f , 0 .f , 1 .f , 0 .f }};
685+ else
686+ std::unreachable ();
685687 }
686688
687689 template <class Type = float , MatStoreType St = MatStoreType::ROW_MAJOR,
@@ -697,11 +699,13 @@ namespace omath
697699 {0 .f , 1 .f / fov_half_tan, 0 .f , 0 .f },
698700 {0 .f , 0 .f , -far / (far - near), -(near * far) / (far - near)},
699701 {0 .f , 0 .f , -1 .f , 0 .f }};
700- else
702+ else if constexpr (DepthRange == NDCDepthRange::NEGATIVE_ONE_TO_ONE)
701703 return {{1 .f / (aspect_ratio * fov_half_tan), 0 .f , 0 .f , 0 .f },
702704 {0 .f , 1 .f / fov_half_tan, 0 .f , 0 .f },
703705 {0 .f , 0 .f , -(far + near) / (far - near), -(2 .f * near * far) / (far - near)},
704706 {0 .f , 0 .f , -1 .f , 0 .f }};
707+ else
708+ std::unreachable ();
705709 }
706710 template <class Type = float , MatStoreType St = MatStoreType::ROW_MAJOR,
707711 NDCDepthRange DepthRange = NDCDepthRange::NEGATIVE_ONE_TO_ONE>
@@ -717,14 +721,16 @@ namespace omath
717721 { 0 .f , 0 .f , static_cast <Type>(1 ) / (far - near), -near / (far - near) },
718722 { 0 .f , 0 .f , 0 .f , 1 .f }
719723 };
720- else
724+ else if constexpr (DepthRange == NDCDepthRange::NEGATIVE_ONE_TO_ONE)
721725 return
722726 {
723727 { static_cast <Type>(2 ) / (right - left), 0 .f , 0 .f , -(right + left) / (right - left)},
724728 { 0 .f , static_cast <Type>(2 ) / (top - bottom), 0 .f , -(top + bottom) / (top - bottom)},
725729 { 0 .f , 0 .f , static_cast <Type>(2 ) / (far - near), -(far + near) / (far - near) },
726730 { 0 .f , 0 .f , 0 .f , 1 .f }
727731 };
732+ else
733+ std::unreachable ();
728734 }
729735 template <class Type = float , MatStoreType St = MatStoreType::ROW_MAJOR,
730736 NDCDepthRange DepthRange = NDCDepthRange::NEGATIVE_ONE_TO_ONE>
@@ -740,14 +746,16 @@ namespace omath
740746 { 0 .f , 0 .f , -static_cast <Type>(1 ) / (far - near), -near / (far - near) },
741747 { 0 .f , 0 .f , 0 .f , 1 .f }
742748 };
743- else
749+ else if constexpr (DepthRange == NDCDepthRange::NEGATIVE_ONE_TO_ONE)
744750 return
745751 {
746752 { static_cast <Type>(2 ) / (right - left), 0 .f , 0 .f , -(right + left) / (right - left)},
747753 { 0 .f , static_cast <Type>(2 ) / (top - bottom), 0 .f , -(top + bottom) / (top - bottom)},
748754 { 0 .f , 0 .f , -static_cast <Type>(2 ) / (far - near), -(far + near) / (far - near) },
749755 { 0 .f , 0 .f , 0 .f , 1 .f }
750756 };
757+ else
758+ std::unreachable ();
751759 }
752760 template <class T = float , MatStoreType St = MatStoreType::COLUMN_MAJOR>
753761 Mat<4 , 4 , T, St> mat_look_at_left_handed (const Vector3<T>& eye, const Vector3<T>& center, const Vector3<T>& up)
0 commit comments