22#define _NBL_BUILTIN_HLSL_PROJECTION_PROJECTION_INCLUDED_
33
44#include <nbl/builtin/hlsl/cpp_compat.hlsl>
5+ #include <nbl/builtin/hlsl/concepts.hlsl>
56
67namespace nbl
78{
89namespace hlsl
910{
1011// TODO: use glm instead for c++
11- template<typename FloatingPoint>
12+ template<typename FloatingPoint NBL_FUNC_REQUIRES (concepts::FloatingPoint<FloatingPoint>)
1213inline matrix <FloatingPoint, 4 , 4 > buildProjectionMatrixPerspectiveFovRH (FloatingPoint fieldOfViewRadians, FloatingPoint aspectRatio, FloatingPoint zNear, FloatingPoint zFar)
1314{
1415 const FloatingPoint h = core::reciprocal<FloatingPoint>(tan (fieldOfViewRadians * 0.5f ));
@@ -25,7 +26,7 @@ inline matrix<FloatingPoint, 4, 4> buildProjectionMatrixPerspectiveFovRH(Floatin
2526
2627 return m;
2728}
28- template<typename FloatingPoint>
29+ template<typename FloatingPoint NBL_FUNC_REQUIRES (concepts::FloatingPoint<FloatingPoint>)
2930inline matrix <FloatingPoint, 4 , 4 > buildProjectionMatrixPerspectiveFovLH (FloatingPoint fieldOfViewRadians, FloatingPoint aspectRatio, FloatingPoint zNear, FloatingPoint zFar)
3031{
3132 const FloatingPoint h = core::reciprocal<FloatingPoint>(tan (fieldOfViewRadians * 0.5f ));
@@ -43,7 +44,7 @@ inline matrix<FloatingPoint, 4, 4> buildProjectionMatrixPerspectiveFovLH(Floatin
4344 return m;
4445}
4546
46- template<typename FloatingPoint>
47+ template<typename FloatingPoint NBL_FUNC_REQUIRES (concepts::FloatingPoint<FloatingPoint>)
4748inline matrix <FloatingPoint, 4 , 4 > buildProjectionMatrixOrthoRH (FloatingPoint widthOfViewVolume, FloatingPoint heightOfViewVolume, FloatingPoint zNear, FloatingPoint zFar)
4849{
4950 _NBL_DEBUG_BREAK_IF (widthOfViewVolume == 0.f ); //division by zero
@@ -59,7 +60,7 @@ inline matrix<FloatingPoint, 4, 4> buildProjectionMatrixOrthoRH(FloatingPoint wi
5960 return m;
6061}
6162
62- template<typename FloatingPoint>
63+ template<typename FloatingPoint NBL_FUNC_REQUIRES (concepts::FloatingPoint<FloatingPoint>)
6364inline matrix <FloatingPoint, 4 , 4 > buildProjectionMatrixOrthoLH (FloatingPoint widthOfViewVolume, FloatingPoint heightOfViewVolume, FloatingPoint zNear, FloatingPoint zFar)
6465{
6566 _NBL_DEBUG_BREAK_IF (widthOfViewVolume == 0.f ); //division by zero
0 commit comments