diff --git a/glm/common.hpp b/glm/common.hpp
index aafc6451..5ad29013 100644
--- a/glm/common.hpp
+++ b/glm/common.hpp
@@ -173,7 +173,7 @@ namespace glm
/// @see GLSL min man page
/// @see GLSL 4.20.8 specification, section 8.3 Common Functions
template
- GLM_FUNC_DECL genType min(genType x, genType y);
+ GLM_FUNC_DECL GLM_CONSTEXPR genType min(genType x, genType y);
/// Returns y if y < x; otherwise, it returns x.
///
@@ -184,7 +184,7 @@ namespace glm
/// @see GLSL min man page
/// @see GLSL 4.20.8 specification, section 8.3 Common Functions
template
- GLM_FUNC_DECL vec min(vec const& x, T y);
+ GLM_FUNC_DECL GLM_CONSTEXPR vec min(vec const& x, T y);
/// Returns y if y < x; otherwise, it returns x.
///
@@ -195,7 +195,7 @@ namespace glm
/// @see GLSL min man page
/// @see GLSL 4.20.8 specification, section 8.3 Common Functions
template
- GLM_FUNC_DECL vec min(vec const& x, vec const& y);
+ GLM_FUNC_DECL GLM_CONSTEXPR vec min(vec const& x, vec const& y);
/// Returns y if x < y; otherwise, it returns x.
///
@@ -204,7 +204,7 @@ namespace glm
/// @see GLSL max man page
/// @see GLSL 4.20.8 specification, section 8.3 Common Functions
template
- GLM_FUNC_DECL genType max(genType x, genType y);
+ GLM_FUNC_DECL GLM_CONSTEXPR genType max(genType x, genType y);
/// Returns y if x < y; otherwise, it returns x.
///
@@ -215,7 +215,7 @@ namespace glm
/// @see GLSL max man page
/// @see GLSL 4.20.8 specification, section 8.3 Common Functions
template
- GLM_FUNC_DECL vec max(vec const& x, T y);
+ GLM_FUNC_DECL GLM_CONSTEXPR vec max(vec const& x, T y);
/// Returns y if x < y; otherwise, it returns x.
///
@@ -226,7 +226,7 @@ namespace glm
/// @see GLSL max man page
/// @see GLSL 4.20.8 specification, section 8.3 Common Functions
template
- GLM_FUNC_DECL vec max(vec const& x, vec const& y);
+ GLM_FUNC_DECL GLM_CONSTEXPR vec max(vec const& x, vec const& y);
/// Returns min(max(x, minVal), maxVal) for each component in x
/// using the floating-point values minVal and maxVal.
@@ -236,7 +236,7 @@ namespace glm
/// @see GLSL clamp man page
/// @see GLSL 4.20.8 specification, section 8.3 Common Functions
template
- GLM_FUNC_DECL genType clamp(genType x, genType minVal, genType maxVal);
+ GLM_FUNC_DECL GLM_CONSTEXPR genType clamp(genType x, genType minVal, genType maxVal);
/// Returns min(max(x, minVal), maxVal) for each component in x
/// using the floating-point values minVal and maxVal.
@@ -248,7 +248,7 @@ namespace glm
/// @see GLSL clamp man page
/// @see GLSL 4.20.8 specification, section 8.3 Common Functions
template
- GLM_FUNC_DECL vec clamp(vec const& x, T minVal, T maxVal);
+ GLM_FUNC_DECL GLM_CONSTEXPR vec clamp(vec const& x, T minVal, T maxVal);
/// Returns min(max(x, minVal), maxVal) for each component in x
/// using the floating-point values minVal and maxVal.
@@ -260,7 +260,7 @@ namespace glm
/// @see GLSL clamp man page
/// @see GLSL 4.20.8 specification, section 8.3 Common Functions
template
- GLM_FUNC_DECL vec clamp(vec const& x, vec const& minVal, vec const& maxVal);
+ GLM_FUNC_DECL GLM_CONSTEXPR vec clamp(vec const& x, vec const& minVal, vec const& maxVal);
/// If genTypeU is a floating scalar or vector:
/// Returns x * (1.0 - a) + y * a, i.e., the linear blend of
diff --git a/glm/detail/func_common.inl b/glm/detail/func_common.inl
index 938f59af..2816b86b 100644
--- a/glm/detail/func_common.inl
+++ b/glm/detail/func_common.inl
@@ -13,7 +13,7 @@ namespace glm
{
// min
template
- GLM_FUNC_QUALIFIER genType min(genType x, genType y)
+ GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType min(genType x, genType y)
{
GLM_STATIC_ASSERT(std::numeric_limits::is_iec559 || std::numeric_limits::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, "'min' only accept floating-point or integer inputs");
return (y < x) ? y : x;
@@ -21,7 +21,7 @@ namespace glm
// max
template
- GLM_FUNC_QUALIFIER genType max(genType x, genType y)
+ GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType max(genType x, genType y)
{
GLM_STATIC_ASSERT(std::numeric_limits::is_iec559 || std::numeric_limits::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, "'max' only accept floating-point or integer inputs");
@@ -472,49 +472,49 @@ namespace detail
// min
template
- GLM_FUNC_QUALIFIER vec min(vec const& a, T b)
+ GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec min(vec const& a, T b)
{
GLM_STATIC_ASSERT(std::numeric_limits::is_iec559 || std::numeric_limits::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, "'min' only accept floating-point or integer inputs");
return detail::compute_min_vector::value>::call(a, vec(b));
}
template
- GLM_FUNC_QUALIFIER vec min(vec const& a, vec const& b)
+ GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec min(vec const& a, vec const& b)
{
return detail::compute_min_vector::value>::call(a, b);
}
// max
template
- GLM_FUNC_QUALIFIER vec max(vec const& a, T b)
+ GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec max(vec const& a, T b)
{
GLM_STATIC_ASSERT(std::numeric_limits::is_iec559 || std::numeric_limits::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, "'max' only accept floating-point or integer inputs");
return detail::compute_max_vector::value>::call(a, vec(b));
}
template
- GLM_FUNC_QUALIFIER vec max(vec const& a, vec const& b)
+ GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec max(vec const& a, vec const& b)
{
return detail::compute_max_vector::value>::call(a, b);
}
// clamp
template
- GLM_FUNC_QUALIFIER genType clamp(genType x, genType minVal, genType maxVal)
+ GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType clamp(genType x, genType minVal, genType maxVal)
{
GLM_STATIC_ASSERT(std::numeric_limits::is_iec559 || std::numeric_limits::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, "'clamp' only accept floating-point or integer inputs");
return min(max(x, minVal), maxVal);
}
template
- GLM_FUNC_QUALIFIER vec clamp(vec const& x, T minVal, T maxVal)
+ GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec clamp(vec const& x, T minVal, T maxVal)
{
GLM_STATIC_ASSERT(std::numeric_limits::is_iec559 || std::numeric_limits::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, "'clamp' only accept floating-point or integer inputs");
return detail::compute_clamp_vector::value>::call(x, vec(minVal), vec(maxVal));
}
template
- GLM_FUNC_QUALIFIER vec clamp(vec const& x, vec const& minVal, vec const& maxVal)
+ GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec clamp(vec const& x, vec const& minVal, vec const& maxVal)
{
GLM_STATIC_ASSERT(std::numeric_limits::is_iec559 || std::numeric_limits::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, "'clamp' only accept floating-point or integer inputs");
return detail::compute_clamp_vector::value>::call(x, minVal, maxVal);
diff --git a/glm/detail/type_mat2x2.inl b/glm/detail/type_mat2x2.inl
index d51da72e..fe5d1aa3 100644
--- a/glm/detail/type_mat2x2.inl
+++ b/glm/detail/type_mat2x2.inl
@@ -1,5 +1,3 @@
-/// @ref core
-
#include "../matrix.hpp"
namespace glm
diff --git a/glm/detail/type_mat2x3.inl b/glm/detail/type_mat2x3.inl
index 49c4f520..5fec17e5 100644
--- a/glm/detail/type_mat2x3.inl
+++ b/glm/detail/type_mat2x3.inl
@@ -1,5 +1,3 @@
-/// @ref core
-
namespace glm
{
// -- Constructors --
diff --git a/glm/detail/type_mat2x4.inl b/glm/detail/type_mat2x4.inl
index 9a404a43..b6d2b9dd 100644
--- a/glm/detail/type_mat2x4.inl
+++ b/glm/detail/type_mat2x4.inl
@@ -1,5 +1,3 @@
-/// @ref core
-
namespace glm
{
// -- Constructors --
diff --git a/glm/detail/type_mat3x2.inl b/glm/detail/type_mat3x2.inl
index 5fb864b9..b4b948b7 100644
--- a/glm/detail/type_mat3x2.inl
+++ b/glm/detail/type_mat3x2.inl
@@ -1,5 +1,3 @@
-/// @ref core
-
namespace glm
{
// -- Constructors --
diff --git a/glm/detail/type_mat3x3.inl b/glm/detail/type_mat3x3.inl
index e7ef6a12..1ddaf99d 100644
--- a/glm/detail/type_mat3x3.inl
+++ b/glm/detail/type_mat3x3.inl
@@ -1,5 +1,3 @@
-/// @ref core
-
#include "../matrix.hpp"
namespace glm
diff --git a/glm/detail/type_mat3x4.inl b/glm/detail/type_mat3x4.inl
index 798847c0..6ee416cf 100644
--- a/glm/detail/type_mat3x4.inl
+++ b/glm/detail/type_mat3x4.inl
@@ -1,5 +1,3 @@
-/// @ref core
-
namespace glm
{
// -- Constructors --
diff --git a/glm/detail/type_mat4x2.inl b/glm/detail/type_mat4x2.inl
index 7f7687da..419c80c4 100644
--- a/glm/detail/type_mat4x2.inl
+++ b/glm/detail/type_mat4x2.inl
@@ -1,5 +1,3 @@
-/// @ref core
-
namespace glm
{
// -- Constructors --
diff --git a/glm/detail/type_mat4x3.inl b/glm/detail/type_mat4x3.inl
index cd871a05..702025dd 100644
--- a/glm/detail/type_mat4x3.inl
+++ b/glm/detail/type_mat4x3.inl
@@ -1,5 +1,3 @@
-/// @ref core
-
namespace glm
{
// -- Constructors --
diff --git a/glm/detail/type_mat4x4.inl b/glm/detail/type_mat4x4.inl
index 980da8f1..e38b87f7 100644
--- a/glm/detail/type_mat4x4.inl
+++ b/glm/detail/type_mat4x4.inl
@@ -1,5 +1,3 @@
-/// @ref core
-
#include "../matrix.hpp"
namespace glm
diff --git a/glm/ext/vector_common.hpp b/glm/ext/vector_common.hpp
index 0c7d5631..208db26a 100644
--- a/glm/ext/vector_common.hpp
+++ b/glm/ext/vector_common.hpp
@@ -33,7 +33,7 @@ namespace glm
///
/// @see ext_vector_common
template
- GLM_FUNC_DECL vec min(vec const& a, vec const& b, vec const& c);
+ GLM_FUNC_DECL GLM_CONSTEXPR vec min(vec const& a, vec const& b, vec const& c);
/// Return the minimum component-wise values of 4 inputs
///
@@ -43,7 +43,7 @@ namespace glm
///
/// @see ext_vector_common
template
- GLM_FUNC_DECL vec min(vec const& a, vec const& b, vec const& c, vec const& d);
+ GLM_FUNC_DECL GLM_CONSTEXPR vec min(vec const& a, vec const& b, vec const& c, vec const& d);
/// Return the maximum component-wise values of 3 inputs
///
@@ -53,7 +53,7 @@ namespace glm
///
/// @see ext_vector_common
template
- GLM_FUNC_DECL vec max(vec const& x, vec const& y, vec const& z);
+ GLM_FUNC_DECL GLM_CONSTEXPR vec max(vec const& x, vec const& y, vec const& z);
/// Return the maximum component-wise values of 4 inputs
///
@@ -63,7 +63,7 @@ namespace glm
///
/// @see ext_vector_common
template
- GLM_FUNC_DECL vec max( vec const& x, vec const& y, vec const& z, vec const& w);
+ GLM_FUNC_DECL GLM_CONSTEXPR vec max( vec const& x, vec const& y, vec const& z, vec const& w);
/// Returns y if y < x; otherwise, it returns x. If one of the two arguments is NaN, the value of the other argument is returned.
///
diff --git a/glm/ext/vector_common.inl b/glm/ext/vector_common.inl
index 43ae6d84..71f38093 100644
--- a/glm/ext/vector_common.inl
+++ b/glm/ext/vector_common.inl
@@ -3,28 +3,28 @@
namespace glm
{
template
- GLM_FUNC_QUALIFIER vec min(vec const& x, vec const& y, vec const& z)
+ GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec min(vec const& x, vec const& y, vec const& z)
{
GLM_STATIC_ASSERT(std::numeric_limits::is_iec559, "'min' only accept floating-point or integer inputs");
return glm::min(glm::min(x, y), z);
}
template
- GLM_FUNC_QUALIFIER vec min(vec const& x, vec const& y, vec const& z, vec const& w)
+ GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec min(vec const& x, vec const& y, vec const& z, vec const& w)
{
GLM_STATIC_ASSERT(std::numeric_limits::is_iec559, "'min' only accept floating-point or integer inputs");
return glm::min(glm::min(x, y), glm::min(z, w));
}
template
- GLM_FUNC_QUALIFIER vec max(vec const& x, vec const& y, vec const& z)
+ GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec max(vec const& x, vec const& y, vec const& z)
{
GLM_STATIC_ASSERT(std::numeric_limits::is_iec559, "'max' only accept floating-point or integer inputs");
return glm::max(glm::max(x, y), z);
}
template
- GLM_FUNC_QUALIFIER vec max(vec const& x, vec const& y, vec const& z, vec const& w)
+ GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec max(vec const& x, vec const& y, vec const& z, vec const& w)
{
GLM_STATIC_ASSERT(std::numeric_limits::is_iec559, "'max' only accept floating-point or integer inputs");
return glm::max(glm::max(x, y), glm::max(z, w));
diff --git a/glm/ext/vector_relational.inl b/glm/ext/vector_relational.inl
index f38a97af..812cce38 100644
--- a/glm/ext/vector_relational.inl
+++ b/glm/ext/vector_relational.inl
@@ -1,6 +1,3 @@
-/// @ref ext_vector_relational
-
-// Dependency:
#include "../vector_relational.hpp"
#include "../common.hpp"
#include "../detail/qualifier.hpp"
diff --git a/manual.md b/manual.md
index 2aafcd2f..36f20d98 100644
--- a/manual.md
+++ b/manual.md
@@ -30,10 +30,33 @@
+ [2.15. GLM\_FORCE\_DEFAULT\_ALIGNED_GENTYPES: Force GLM to use aligned types by default](#section2_15)
+ [2.16. GLM_\FORCE\_PLATFORM\_UNKNOWN: Force GLM to no detect the build platform](#section2_16)
+ [3. Stable extensions](#section3)
-+ [3.1. GLM_EXT_matrix_relational](#section3_1)
-+ [3.2. GLM_EXT_scalar_relational](#section3_2)
-+ [3.3. GLM_EXT_vec1](#section3_3)
-+ [3.4. GLM_EXT_vector_relational](#section3_4)
++ [3.1. GLM_EXT_matrix_clip_space](#section3_1)
++ [3.2. GLM_EXT_matrix_doubleMxN(_precision)](#section3_2)
++ [3.3. GLM_EXT_matrix_floatMxN(_precision)](#section3_3)
++ [3.4. GLM_EXT_matrix_projection](#section3_4)
++ [3.5. GLM_EXT_matrix_relational](#section3_5)
++ [3.6. GLM_EXT_matrix_transform](#section3_6)
++ [3.7. GLM_EXT_quaternion_common](#section3_7)
++ [3.8. GLM_EXT_quaternion_double(_precision)](#section3_8)
++ [3.9. GLM_EXT_quaternion_exponential](#section3_9)
++ [3.10. GLM_EXT_quaternion_float(_precision)](#section3_10)
++ [3.11. GLM_EXT_quaternion_geometric](#section3_11)
++ [3.12. GLM_EXT_quaternion_relation](#section3_12)
++ [3.13. GLM_EXT_quaternion_transform](#section3_13)
++ [3.14. GLM_EXT_quaternion_trigonometric](#section3_14)
++ [3.15. GLM_EXT_scalar_common](#section3_15)
++ [3.16. GLM_EXT_scalar_constants](#section3_16)
++ [3.17. GLM_EXT_scalar_float_sized](#section3_17)
++ [3.18. GLM_EXT_scalar_int_sized](#section3_18)
++ [3.19. GLM_EXT_scalar_relational](#section3_19)
++ [3.20. GLM_EXT_scalar_uint_sized](#section3_20)
++ [3.21. GLM_EXT_vector_boolX(_precision)](#section3_21)
++ [3.22. GLM_EXT_vector_common](#section3_22)
++ [3.23. GLM_EXT_vector_doubleX(_precision)](#section3_23)
++ [3.24. GLM_EXT_vector_floatX(_precision)](#section3_24)
++ [3.25. GLM_EXT_vector_intX(_precision)](#section3_25)
++ [3.26. GLM_EXT_vector_relational](#section3_26)
++ [3.27. GLM_EXT_vector_uintX](#section3_27)
+ [4. Recommended extensions](#section4)
+ [4.1. GLM_GTC_bitfield](#section4_1)
+ [4.2. GLM_GTC_color_space](#section4_2)