diff --git a/glm/bvec2.hpp b/glm/bvec2.hpp new file mode 100644 index 00000000..a9cf604c --- /dev/null +++ b/glm/bvec2.hpp @@ -0,0 +1,24 @@ +/// @ref core +/// @file glm/bvec2.hpp + +#pragma once +#include "detail/type_vec2.hpp" + +namespace glm +{ + /// @addtogroup core + /// @{ + +# if(defined(GLM_PRECISION_LOWP_BOOL)) + typedef vec<2, bool, lowp> bvec2; +# elif(defined(GLM_PRECISION_MEDIUMP_BOOL)) + typedef vec<2, bool, mediump> bvec2; +# else //defined(GLM_PRECISION_HIGHP_BOOL) + /// 2 components vector of boolean. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef vec<2, bool, highp> bvec2; +# endif//GLM_PRECISION + + /// @} +}//namespace glm diff --git a/glm/bvec2_precision.hpp b/glm/bvec2_precision.hpp new file mode 100644 index 00000000..7c1b6919 --- /dev/null +++ b/glm/bvec2_precision.hpp @@ -0,0 +1,31 @@ +/// @ref core +/// @file glm/bvec2_precision.hpp + +#pragma once +#include "detail/type_vec2.hpp" + +namespace glm +{ + /// @addtogroup core_precision + /// @{ + + /// 2 components vector of high qualifier bool numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<2, bool, highp> highp_bvec2; + + /// 2 components vector of medium qualifier bool numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<2, bool, mediump> mediump_bvec2; + + /// 2 components vector of low qualifier bool numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<2, bool, lowp> lowp_bvec2; + + /// @} +}//namespace glm diff --git a/glm/bvec3.hpp b/glm/bvec3.hpp new file mode 100644 index 00000000..29f4f1cd --- /dev/null +++ b/glm/bvec3.hpp @@ -0,0 +1,24 @@ +/// @ref core +/// @file glm/bvec3.hpp + +#pragma once +#include "detail/type_vec3.hpp" + +namespace glm +{ + /// @addtogroup core + /// @{ + +# if(defined(GLM_PRECISION_LOWP_BOOL)) + typedef vec<3, bool, lowp> bvec3; +# elif(defined(GLM_PRECISION_MEDIUMP_BOOL)) + typedef vec<3, bool, mediump> bvec3; +# else //defined(GLM_PRECISION_HIGHP_BOOL) + /// 3 components vector of boolean. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef vec<3, bool, highp> bvec3; +# endif//GLM_PRECISION + + /// @} +}//namespace glm diff --git a/glm/bvec3_precision.hpp b/glm/bvec3_precision.hpp new file mode 100644 index 00000000..571e8359 --- /dev/null +++ b/glm/bvec3_precision.hpp @@ -0,0 +1,35 @@ +/// @ref core +/// @file glm/bvec3_precision.hpp + +#pragma once +#include "detail/setup.hpp" +#include "detail/type_vec3.hpp" + +namespace glm +{ + /// @addtogroup core_precision + /// @{ + + /// 3 components vector of high qualifier bool numbers. + /// There is no guarantee on the actual qualifier. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<3, bool, highp> highp_bvec3; + + /// 3 components vector of medium qualifier bool numbers. + /// There is no guarantee on the actual qualifier. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<3, bool, mediump> mediump_bvec3; + + /// 3 components vector of low qualifier bool numbers. + /// There is no guarantee on the actual qualifier. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<3, bool, lowp> lowp_bvec3; + +/// @} +}//namespace glm diff --git a/glm/bvec4.hpp b/glm/bvec4.hpp new file mode 100644 index 00000000..3d0a02c6 --- /dev/null +++ b/glm/bvec4.hpp @@ -0,0 +1,24 @@ +/// @ref core +/// @file glm/bvec4.hpp + +#pragma once +#include "detail/type_vec4.hpp" + +namespace glm +{ + /// @addtogroup core + /// @{ + +# if(defined(GLM_PRECISION_LOWP_BOOL)) + typedef vec<4, bool, lowp> bvec4; +# elif(defined(GLM_PRECISION_MEDIUMP_BOOL)) + typedef vec<4, bool, mediump> bvec4; +# else //defined(GLM_PRECISION_HIGHP_BOOL) + /// 4 components vector of boolean. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef vec<4, bool, highp> bvec4; +# endif//GLM_PRECISION + + /// @} +}//namespace glm diff --git a/glm/bvec4_precision.hpp b/glm/bvec4_precision.hpp new file mode 100644 index 00000000..963eee3d --- /dev/null +++ b/glm/bvec4_precision.hpp @@ -0,0 +1,31 @@ +/// @ref core +/// @file glm/bvec4_precision.hpp + +#pragma once +#include "detail/type_vec4.hpp" + +namespace glm +{ + /// @addtogroup core_precision + /// @{ + + /// 4 components vector of high qualifier bool numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<4, bool, highp> highp_bvec4; + + /// 4 components vector of medium qualifier bool numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<4, bool, mediump> mediump_bvec4; + + /// 4 components vector of low qualifier bool numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<4, bool, lowp> lowp_bvec4; + + /// @} +}//namespace glm diff --git a/glm/detail/type_vec.hpp b/glm/detail/type_vec.hpp index 34b904df..91f003b2 100644 --- a/glm/detail/type_vec.hpp +++ b/glm/detail/type_vec.hpp @@ -4,466 +4,4 @@ #pragma once #include "qualifier.hpp" -#include "type_int.hpp" #include "compute_vector_relational.hpp" - -namespace glm -{ -#if GLM_HAS_TEMPLATE_ALIASES - template using tvec2 = vec<2, T, Q>; - template using tvec3 = vec<3, T, Q>; - template using tvec4 = vec<4, T, Q>; -#endif//GLM_HAS_TEMPLATE_ALIASES - - /// @addtogroup core_precision - /// @{ - - /// 2 components vector of high single-qualifier floating-point numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<2, float, highp> highp_vec2; - - /// 2 components vector of medium single-qualifier floating-point numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<2, float, mediump> mediump_vec2; - - /// 2 components vector of low single-qualifier floating-point numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<2, float, lowp> lowp_vec2; - - /// 2 components vector of high double-qualifier floating-point numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<2, double, highp> highp_dvec2; - - /// 2 components vector of medium double-qualifier floating-point numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<2, double, mediump> mediump_dvec2; - - /// 2 components vector of low double-qualifier floating-point numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<2, double, lowp> lowp_dvec2; - - /// 2 components vector of high qualifier signed integer numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<2, int, highp> highp_ivec2; - - /// 2 components vector of medium qualifier signed integer numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<2, int, mediump> mediump_ivec2; - - /// 2 components vector of low qualifier signed integer numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<2, int, lowp> lowp_ivec2; - - /// 2 components vector of high qualifier unsigned integer numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<2, uint, highp> highp_uvec2; - - /// 2 components vector of medium qualifier unsigned integer numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<2, uint, mediump> mediump_uvec2; - - /// 2 components vector of low qualifier unsigned integer numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<2, uint, lowp> lowp_uvec2; - - /// 2 components vector of high qualifier bool numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<2, bool, highp> highp_bvec2; - - /// 2 components vector of medium qualifier bool numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<2, bool, mediump> mediump_bvec2; - - /// 2 components vector of low qualifier bool numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<2, bool, lowp> lowp_bvec2; - - /// @} - - /// @addtogroup core_precision - /// @{ - - /// 3 components vector of high single-qualifier floating-point numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<3, float, highp> highp_vec3; - - /// 3 components vector of medium single-qualifier floating-point numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<3, float, mediump> mediump_vec3; - - /// 3 components vector of low single-qualifier floating-point numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<3, float, lowp> lowp_vec3; - - /// 3 components vector of high double-qualifier floating-point numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<3, double, highp> highp_dvec3; - - /// 3 components vector of medium double-qualifier floating-point numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<3, double, mediump> mediump_dvec3; - - /// 3 components vector of low double-qualifier floating-point numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<3, double, lowp> lowp_dvec3; - - /// 3 components vector of high qualifier signed integer numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<3, int, highp> highp_ivec3; - - /// 3 components vector of medium qualifier signed integer numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<3, int, mediump> mediump_ivec3; - - /// 3 components vector of low qualifier signed integer numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<3, int, lowp> lowp_ivec3; - - /// 3 components vector of high qualifier unsigned integer numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<3, uint, highp> highp_uvec3; - - /// 3 components vector of medium qualifier unsigned integer numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<3, uint, mediump> mediump_uvec3; - - /// 3 components vector of low qualifier unsigned integer numbers. - /// There is no guarantee on the actual qualifier. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<3, uint, lowp> lowp_uvec3; - - /// 3 components vector of high qualifier bool numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<3, bool, highp> highp_bvec3; - - /// 3 components vector of medium qualifier bool numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<3, bool, mediump> mediump_bvec3; - - /// 3 components vector of low qualifier bool numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<3, bool, lowp> lowp_bvec3; - - /// @} - - /// @addtogroup core_precision - /// @{ - - /// 4 components vector of high single-qualifier floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<4, float, highp> highp_vec4; - - /// 4 components vector of medium single-qualifier floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<4, float, mediump> mediump_vec4; - - /// 4 components vector of low single-qualifier floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<4, float, lowp> lowp_vec4; - - /// 4 components vector of high double-qualifier floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<4, double, highp> highp_dvec4; - - /// 4 components vector of medium double-qualifier floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<4, double, mediump> mediump_dvec4; - - /// 4 components vector of low double-qualifier floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<4, double, lowp> lowp_dvec4; - - /// 4 components vector of high qualifier signed integer numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<4, int, highp> highp_ivec4; - - /// 4 components vector of medium qualifier signed integer numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<4, int, mediump> mediump_ivec4; - - /// 4 components vector of low qualifier signed integer numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<4, int, lowp> lowp_ivec4; - - /// 4 components vector of high qualifier unsigned integer numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<4, uint, highp> highp_uvec4; - - /// 4 components vector of medium qualifier unsigned integer numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<4, uint, mediump> mediump_uvec4; - - /// 4 components vector of low qualifier unsigned integer numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<4, uint, lowp> lowp_uvec4; - - /// 4 components vector of high qualifier bool numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<4, bool, highp> highp_bvec4; - - /// 4 components vector of medium qualifier bool numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<4, bool, mediump> mediump_bvec4; - - /// 4 components vector of low qualifier bool numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef vec<4, bool, lowp> lowp_bvec4; - - /// @} - - /// @addtogroup core_types - /// @{ - - // -- Default float definition -- - -#if(defined(GLM_PRECISION_LOWP_FLOAT)) - typedef lowp_vec2 vec2; - typedef lowp_vec3 vec3; - typedef lowp_vec4 vec4; -#elif(defined(GLM_PRECISION_MEDIUMP_FLOAT)) - typedef mediump_vec2 vec2; - typedef mediump_vec3 vec3; - typedef mediump_vec4 vec4; -#else //defined(GLM_PRECISION_HIGHP_FLOAT) - /// 2 components vector of floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef highp_vec2 vec2; - - //! 3 components vector of floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef highp_vec3 vec3; - - //! 4 components vector of floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef highp_vec4 vec4; -#endif//GLM_PRECISION - - // -- Default double definition -- - -#if(defined(GLM_PRECISION_LOWP_DOUBLE)) - typedef lowp_dvec2 dvec2; - typedef lowp_dvec3 dvec3; - typedef lowp_dvec4 dvec4; -#elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE)) - typedef mediump_dvec2 dvec2; - typedef mediump_dvec3 dvec3; - typedef mediump_dvec4 dvec4; -#else //defined(GLM_PRECISION_HIGHP_DOUBLE) - /// 2 components vector of double-qualifier floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef highp_dvec2 dvec2; - - //! 3 components vector of double-qualifier floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef highp_dvec3 dvec3; - - //! 4 components vector of double-qualifier floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef highp_dvec4 dvec4; -#endif//GLM_PRECISION - - // -- Signed integer definition -- - -#if(defined(GLM_PRECISION_LOWP_INT)) - typedef lowp_ivec2 ivec2; - typedef lowp_ivec3 ivec3; - typedef lowp_ivec4 ivec4; -#elif(defined(GLM_PRECISION_MEDIUMP_INT)) - typedef mediump_ivec2 ivec2; - typedef mediump_ivec3 ivec3; - typedef mediump_ivec4 ivec4; -#else //defined(GLM_PRECISION_HIGHP_INT) - /// 2 components vector of signed integer numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef highp_ivec2 ivec2; - - /// 3 components vector of signed integer numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef highp_ivec3 ivec3; - - /// 4 components vector of signed integer numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef highp_ivec4 ivec4; -#endif//GLM_PRECISION - - // -- Unsigned integer definition -- - -#if(defined(GLM_PRECISION_LOWP_UINT)) - typedef lowp_uvec2 uvec2; - typedef lowp_uvec3 uvec3; - typedef lowp_uvec4 uvec4; -#elif(defined(GLM_PRECISION_MEDIUMP_UINT)) - typedef mediump_uvec2 uvec2; - typedef mediump_uvec3 uvec3; - typedef mediump_uvec4 uvec4; -#else //defined(GLM_PRECISION_HIGHP_UINT) - /// 2 components vector of unsigned integer numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef highp_uvec2 uvec2; - - /// 3 components vector of unsigned integer numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef highp_uvec3 uvec3; - - /// 4 components vector of unsigned integer numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef highp_uvec4 uvec4; -#endif//GLM_PRECISION - - // -- Boolean definition -- - -#if(defined(GLM_PRECISION_LOWP_BOOL)) - typedef lowp_bvec2 bvec2; - typedef lowp_bvec3 bvec3; - typedef lowp_bvec4 bvec4; -#elif(defined(GLM_PRECISION_MEDIUMP_BOOL)) - typedef mediump_bvec2 bvec2; - typedef mediump_bvec3 bvec3; - typedef mediump_bvec4 bvec4; -#else //defined(GLM_PRECISION_HIGHP_BOOL) - /// 2 components vector of boolean. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef highp_bvec2 bvec2; - - /// 3 components vector of boolean. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef highp_bvec3 bvec3; - - /// 4 components vector of boolean. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef highp_bvec4 bvec4; -#endif//GLM_PRECISION - - /// @} -}//namespace glm diff --git a/glm/dvec2.hpp b/glm/dvec2.hpp new file mode 100644 index 00000000..cf0626ee --- /dev/null +++ b/glm/dvec2.hpp @@ -0,0 +1,24 @@ +/// @ref core +/// @file glm/dvec2.hpp + +#pragma once +#include "detail/type_vec2.hpp" + +namespace glm +{ + /// @addtogroup core + /// @{ + +# if(defined(GLM_PRECISION_LOWP_DOUBLE)) + typedef vec<2, double, lowp> dvec2; +# elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE)) + typedef vec<2, double, mediump> dvec2; +# else //defined(GLM_PRECISION_HIGHP_DOUBLE) + /// 2 components vector of double-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef vec<2, double, highp> dvec2; +# endif//GLM_PRECISION + + /// @} +}//namespace glm diff --git a/glm/dvec2_precision.hpp b/glm/dvec2_precision.hpp new file mode 100644 index 00000000..522a071c --- /dev/null +++ b/glm/dvec2_precision.hpp @@ -0,0 +1,31 @@ +/// @ref core +/// @file glm/dvec2_precision.hpp + +#pragma once +#include "detail/type_vec2.hpp" + +namespace glm +{ + /// @addtogroup core_precision + /// @{ + + /// 2 components vector of high double-qualifier floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<2, double, highp> highp_dvec2; + + /// 2 components vector of medium double-qualifier floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<2, double, mediump> mediump_dvec2; + + /// 2 components vector of low double-qualifier floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<2, double, lowp> lowp_dvec2; + + /// @} +}//namespace glm diff --git a/glm/dvec3.hpp b/glm/dvec3.hpp new file mode 100644 index 00000000..943576cd --- /dev/null +++ b/glm/dvec3.hpp @@ -0,0 +1,24 @@ +/// @ref core +/// @file glm/dvec3.hpp + +#pragma once +#include "detail/type_vec3.hpp" + +namespace glm +{ + /// @addtogroup core + /// @{ + +# if(defined(GLM_PRECISION_LOWP_DOUBLE)) + typedef vec<3, double, lowp> dvec3; +# elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE)) + typedef vec<3, double, mediump> dvec3; +# else //defined(GLM_PRECISION_HIGHP_DOUBLE) + /// 3 components vector of double-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef vec<3, double, highp> dvec3; +# endif//GLM_PRECISION + + /// @} +}//namespace glm diff --git a/glm/dvec3_precision.hpp b/glm/dvec3_precision.hpp new file mode 100644 index 00000000..2550bb5b --- /dev/null +++ b/glm/dvec3_precision.hpp @@ -0,0 +1,35 @@ +/// @ref core +/// @file glm/dvec3_precision.hpp + +#pragma once +#include "detail/setup.hpp" +#include "detail/type_vec3.hpp" + +namespace glm +{ + /// @addtogroup core_precision + /// @{ + + /// 3 components vector of high double-qualifier floating-point numbers. + /// There is no guarantee on the actual qualifier. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<3, double, highp> highp_dvec3; + + /// 3 components vector of medium double-qualifier floating-point numbers. + /// There is no guarantee on the actual qualifier. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<3, double, mediump> mediump_dvec3; + + /// 3 components vector of low double-qualifier floating-point numbers. + /// There is no guarantee on the actual qualifier. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<3, double, lowp> lowp_dvec3; + + /// @} +}//namespace glm diff --git a/glm/dvec4.hpp b/glm/dvec4.hpp new file mode 100644 index 00000000..76830efb --- /dev/null +++ b/glm/dvec4.hpp @@ -0,0 +1,24 @@ +/// @ref core +/// @file glm/dvec4.hpp + +#pragma once +#include "detail/type_vec4.hpp" + +namespace glm +{ + /// @addtogroup core + /// @{ + +# if(defined(GLM_PRECISION_LOWP_DOUBLE)) + typedef vec<4, double, lowp> dvec4; +# elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE)) + typedef vec<4, double, mediump> dvec4; +# else //defined(GLM_PRECISION_HIGHP_DOUBLE) + /// 4 components vector of double-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef vec<4, double, highp> dvec4; +# endif//GLM_PRECISION + + /// @} +}//namespace glm diff --git a/glm/dvec4_precision.hpp b/glm/dvec4_precision.hpp new file mode 100644 index 00000000..588d7775 --- /dev/null +++ b/glm/dvec4_precision.hpp @@ -0,0 +1,35 @@ +/// @ref core +/// @file glm/dvec4_precision.hpp + +#pragma once +#include "detail/setup.hpp" +#include "detail/type_vec4.hpp" + +namespace glm +{ + /// @addtogroup core_precision + /// @{ + + /// 4 components vector of high double-qualifier floating-point numbers. + /// There is no guarantee on the actual qualifier. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<4, double, highp> highp_dvec4; + + /// 4 components vector of medium double-qualifier floating-point numbers. + /// There is no guarantee on the actual qualifier. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<4, double, mediump> mediump_dvec4; + + /// 4 components vector of low double-qualifier floating-point numbers. + /// There is no guarantee on the actual qualifier. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<4, double, lowp> lowp_dvec4; + + /// @} +}//namespace glm diff --git a/glm/ext/bvec1.hpp b/glm/ext/bvec1.hpp new file mode 100644 index 00000000..ffedcec1 --- /dev/null +++ b/glm/ext/bvec1.hpp @@ -0,0 +1,38 @@ +/// @ref ext_bvec1 +/// @file glm/ext/bvec1.hpp +/// +/// @see core (dependence) +/// +/// @defgroup ext_bvec1 GLM_EXT_bvec1 +/// @ingroup ext +/// +/// Include to use the features of this extension. +/// +/// Expose bvec1 type. + +#pragma once + +#include "../detail/type_vec1.hpp" + +#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED) +# pragma message("GLM: GLM_EXT_bvec1 extension included") +#endif + +namespace glm +{ + /// @addtogroup ext_bvec1 + /// @{ + +# if(defined(GLM_PRECISION_LOWP_BOOL)) + typedef vec<1, bool, lowp> bvec1; +# elif(defined(GLM_PRECISION_MEDIUMP_BOOL)) + typedef vec<1, bool, mediump> bvec1; +# else //defined(GLM_PRECISION_HIGHP_BOOL) + /// 1 components vector of boolean. + /// + /// @see ext_bvec1 extension. + typedef vec<1, bool, highp> bvec1; +# endif//GLM_PRECISION + + /// @} +}//namespace glm diff --git a/glm/ext/bvec1_precision.hpp b/glm/ext/bvec1_precision.hpp new file mode 100644 index 00000000..1ec3b898 --- /dev/null +++ b/glm/ext/bvec1_precision.hpp @@ -0,0 +1,42 @@ +/// @ref ext_bvec1_precision +/// @file glm/ext/bvec1_precision.hpp +/// +/// @see core (dependence) +/// +/// @defgroup ext_bvec1_precision GLM_EXT_bvec1_precision +/// @ingroup ext +/// +/// Include to use the features of this extension. +/// +/// Add Exposes highp_bvec1, mediump_bvec1 and lowp_bvec1 types. + +#pragma once + +#include "../detail/type_vec1.hpp" + +#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED) +# pragma message("GLM: GLM_EXT_bvec1_precision extension included") +#endif + +namespace glm +{ + /// @addtogroup ext_bvec1_precision + /// @{ + + /// 1 component vector of bool values. + /// + /// @see ext_vec1 + typedef vec<1, bool, highp> highp_bvec1; + + /// 1 component vector of bool values. + /// + /// @see ext_vec1 + typedef vec<1, bool, mediump> mediump_bvec1; + + /// 1 component vector of bool values. + /// + /// @see ext_vec1 + typedef vec<1, bool, lowp> lowp_bvec1; + + /// @} +}//namespace glm diff --git a/glm/ext/dvec1.hpp b/glm/ext/dvec1.hpp new file mode 100644 index 00000000..23a66b6c --- /dev/null +++ b/glm/ext/dvec1.hpp @@ -0,0 +1,38 @@ +/// @ref ext_dvec1 +/// @file glm/ext/dvec1.hpp +/// +/// @see core (dependence) +/// +/// @defgroup ext_dvec1 GLM_EXT_dvec1 +/// @ingroup ext +/// +/// Include to use the features of this extension. +/// +/// Expose dvec1 vector type. + +#pragma once + +#include "../detail/type_vec1.hpp" + +#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED) +# pragma message("GLM: GLM_EXT_dvec1 extension included") +#endif + +namespace glm +{ + /// @addtogroup ext_dvec1 + /// @{ + +# if(defined(GLM_PRECISION_LOWP_DOUBLE)) + typedef vec<1, double, lowp> dvec1; +# elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE)) + typedef vec<1, double, mediump> dvec1; +# else //defined(GLM_PRECISION_HIGHP_DOUBLE) + /// 1 components vector of double-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef vec<1, double, highp> dvec1; +# endif//GLM_PRECISION + + /// @} +}//namespace glm diff --git a/glm/ext/dvec1_precision.hpp b/glm/ext/dvec1_precision.hpp new file mode 100644 index 00000000..2299f65c --- /dev/null +++ b/glm/ext/dvec1_precision.hpp @@ -0,0 +1,42 @@ +/// @ref ext_dvec1_precision +/// @file glm/ext/dvec1_precision.hpp +/// +/// @see core (dependence) +/// +/// @defgroup ext_dvec1_precision GLM_EXT_dvec1_precision +/// @ingroup ext +/// +/// Include to use the features of this extension. +/// +/// Exposes highp_dvec1, mediump_dvec1 and lowp_dvec1 types. + +#pragma once + +#include "../detail/type_vec1.hpp" + +#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED) +# pragma message("GLM: GLM_EXT_dvec1_precision extension included") +#endif + +namespace glm +{ + /// @addtogroup ext_dvec1_precision + /// @{ + + /// 1 component vector of double-precision floating-point numbers using high precision arithmetic in term of ULPs. + /// + /// @see ext_dvec1_precision + typedef vec<1, double, highp> highp_dvec1; + + /// 1 component vector of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. + /// + /// @see ext_dvec1_precision + typedef vec<1, double, mediump> mediump_dvec1; + + /// 1 component vector of double-precision floating-point numbers using low precision arithmetic in term of ULPs. + /// + /// @see ext_dvec1_precision + typedef vec<1, double, lowp> lowp_dvec1; + + /// @} +}//namespace glm diff --git a/glm/ext/fvec1.hpp b/glm/ext/fvec1.hpp new file mode 100644 index 00000000..5d605305 --- /dev/null +++ b/glm/ext/fvec1.hpp @@ -0,0 +1,38 @@ +/// @ref ext_vec1 +/// @file glm/ext/vec1.hpp +/// +/// @see core (dependence) +/// +/// @defgroup ext_vec1 GLM_EXT_fvec1 +/// @ingroup ext +/// +/// Include to use the features of this extension. +/// +/// Expose vec1 vector type. + +#pragma once + +#include "../detail/type_vec1.hpp" + +#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED) +# pragma message("GLM: GLM_EXT_fvec1 extension included") +#endif + +namespace glm +{ + /// @addtogroup ext_fvec1 + /// @{ + +# if(defined(GLM_PRECISION_LOWP_FLOAT)) + typedef vec<1, float, lowp> vec1; +# elif(defined(GLM_PRECISION_MEDIUMP_FLOAT)) + typedef vec<1, float, mediump> vec1; +# else //defined(GLM_PRECISION_HIGHP_FLOAT) + /// 1 components vector of single-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef vec<1, float, highp> vec1; +# endif//GLM_PRECISION + + /// @} +}//namespace glm diff --git a/glm/ext/fvec1_precision.hpp b/glm/ext/fvec1_precision.hpp new file mode 100644 index 00000000..33af9a51 --- /dev/null +++ b/glm/ext/fvec1_precision.hpp @@ -0,0 +1,42 @@ +/// @ref ext_fvec1_precision +/// @file glm/ext/fvec1_precision.hpp +/// +/// @see core (dependence) +/// +/// @defgroup ext_fvec1_precision GLM_EXT_fvec1_precision +/// @ingroup ext +/// +/// Include to use the features of this extension. +/// +/// Exposes highp_vec1, mediump_vec1 and lowp_vec1 types. + +#pragma once + +#include "../detail/type_vec1.hpp" + +#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED) +# pragma message("GLM: GLM_EXT_fvec1_precision extension included") +#endif + +namespace glm +{ + /// @addtogroup ext_fvec1_precision + /// @{ + + /// 1 component vector of single-precision floating-point numbers using high precision arithmetic in term of ULPs. + /// + /// @see ext_fvec1_precision + typedef vec<1, float, highp> highp_vec1; + + /// 1 component vector of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. + /// + /// @see ext_fvec1_precision + typedef vec<1, float, mediump> mediump_vec1; + + /// 1 component vector of single-precision floating-point numbers using low precision arithmetic in term of ULPs. + /// + /// @see ext_fvec1_precision + typedef vec<1, float, lowp> lowp_vec1; + + /// @} +}//namespace glm diff --git a/glm/ext/ivec1.hpp b/glm/ext/ivec1.hpp new file mode 100644 index 00000000..fb03ede5 --- /dev/null +++ b/glm/ext/ivec1.hpp @@ -0,0 +1,39 @@ +/// @ref ext_ivec1 +/// @file glm/ext/ivec1.hpp +/// +/// @see core (dependence) +/// +/// @defgroup ext_ivec1 GLM_EXT_ivec1 +/// @ingroup ext +/// +/// Include to use the features of this extension. +/// +/// Exposes ivec1 vector type. + +#pragma once + +#include "../detail/type_vec1.hpp" + +#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED) +# pragma message("GLM: GLM_EXT_ivec1 extension included") +#endif + +namespace glm +{ + /// @addtogroup ext_ivec1 + /// @{ + +# if(defined(GLM_PRECISION_LOWP_INT)) + typedef vec<1, int, lowp> ivec1; +# elif(defined(GLM_PRECISION_MEDIUMP_INT)) + typedef vec<1, int, mediump> ivec1; + #else //defined(GLM_PRECISION_HIGHP_INT) + /// 1 component vector of signed integer numbers. + /// + /// @see ext_ivec1 extension. + typedef vec<1, int, highp> ivec1; +# endif//GLM_PRECISION + + /// @} +}//namespace glm + diff --git a/glm/ext/ivec1_precision.hpp b/glm/ext/ivec1_precision.hpp new file mode 100644 index 00000000..fbc1fb7a --- /dev/null +++ b/glm/ext/ivec1_precision.hpp @@ -0,0 +1,42 @@ +/// @ref ext_ivec1_precision +/// @file glm/ext/ivec1_precision.hpp +/// +/// @see core (dependence) +/// +/// @defgroup ext_ivec1_precision GLM_EXT_ivec1_precision +/// @ingroup ext +/// +/// Include to use the features of this extension. +/// +/// Add Exposes highp_ivec1, mediump_ivec1 and lowp_ivec1 types. + +#pragma once + +#include "../detail/type_vec1.hpp" + +#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED) +# pragma message("GLM: GLM_EXT_uvec1_precision extension included") +#endif + +namespace glm +{ + /// @addtogroup ext_ivec1_precision + /// @{ + + /// 1 component vector of signed integer values. + /// + /// @see ext_ivec1_precision + typedef vec<1, int, highp> highp_ivec1; + + /// 1 component vector of signed integer values. + /// + /// @see ext_ivec1_precision + typedef vec<1, int, mediump> mediump_ivec1; + + /// 1 component vector of signed integer values. + /// + /// @see ext_ivec1_precision + typedef vec<1, int, lowp> lowp_ivec1; + + /// @} +}//namespace glm diff --git a/glm/ext/uvec1.hpp b/glm/ext/uvec1.hpp new file mode 100644 index 00000000..711a6dc2 --- /dev/null +++ b/glm/ext/uvec1.hpp @@ -0,0 +1,39 @@ +/// @ref ext_uvec1 +/// @file glm/ext/uvec1.hpp +/// +/// @see core (dependence) +/// +/// @defgroup ext_uvec1 GLM_EXT_uvec1 +/// @ingroup ext +/// +/// Include to use the features of this extension. +/// +/// Exposes uvec1 vector type. + +#pragma once + +#include "../detail/type_vec1.hpp" + +#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED) +# pragma message("GLM: GLM_EXT_uvec1 extension included") +#endif + +namespace glm +{ + /// @addtogroup ext_uvec1 + /// @{ + +# if(defined(GLM_PRECISION_LOWP_INT)) + typedef vec<1, uint, lowp> uvec1; +# elif(defined(GLM_PRECISION_MEDIUMP_INT)) + typedef vec<1, uint, mediump> uvec1; +#else //defined(GLM_PRECISION_HIGHP_INT) + /// 1 component vector of unsigned integer numbers. + /// + /// @see ext_uvec1 extension. + typedef vec<1, uint, highp> uvec1; +# endif//GLM_PRECISION + + /// @} +}//namespace glm + diff --git a/glm/ext/uvec1_precision.hpp b/glm/ext/uvec1_precision.hpp new file mode 100644 index 00000000..8546119a --- /dev/null +++ b/glm/ext/uvec1_precision.hpp @@ -0,0 +1,42 @@ +/// @ref ext_uvec1_precision +/// @file glm/ext/uvec1_precision.hpp +/// +/// @see core (dependence) +/// +/// @defgroup ext_uvec1_precision GLM_EXT_uvec1_precision +/// @ingroup ext +/// +/// Include to use the features of this extension. +/// +/// Add Exposes highp_uvec1, mediump_uvec1 and lowp_uvec1 types. + +#pragma once + +#include "../detail/type_vec1.hpp" + +#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED) +# pragma message("GLM: GLM_EXT_uvec1_precision extension included") +#endif + +namespace glm +{ + /// @addtogroup ext_uvec1_precision + /// @{ + + /// 1 component vector of unsigned integer values. + /// + /// @see ext_vec1 + typedef vec<1, uint, highp> highp_uvec1; + + /// 1 component vector of unsigned integer values. + /// + /// @see ext_vec1 + typedef vec<1, uint, mediump> mediump_uvec1; + + /// 1 component vector of unsigned integer values. + /// + /// @see ext_vec1 + typedef vec<1, uint, lowp> lowp_uvec1; + + /// @} +}//namespace glm diff --git a/glm/ext/vec1.hpp b/glm/ext/vec1.hpp index 1a578b52..456e59ac 100644 --- a/glm/ext/vec1.hpp +++ b/glm/ext/vec1.hpp @@ -1,171 +1,21 @@ -/// @ref ext_vec1 -/// @file glm/ext/vec1.hpp -/// -/// @see core (dependence) -/// -/// @defgroup ext_vec1 GLM_EXT_vec1 -/// @ingroup ext -/// -/// Include to use the features of this extension. -/// -/// Add vec1, ivec1, uvec1 and bvec1 types. +/// @ref core +/// @file glm/vec1.hpp #pragma once - -#include "../detail/type_vec1.hpp" -#include - -#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED) -# pragma message("GLM: GLM_EXT_vec1 extension included") -#endif +#include "bvec1.hpp" +#include "bvec1_precision.hpp" +#include "fvec1.hpp" +#include "fvec1_precision.hpp" +#include "dvec1.hpp" +#include "dvec1_precision.hpp" +#include "ivec1.hpp" +#include "ivec1_precision.hpp" +#include "uvec1.hpp" +#include "uvec1_precision.hpp" namespace glm { - /// 1 component vector of single-precision floating-point numbers using high precision arithmetic in term of ULPs. - /// - /// @see ext_vec1 - typedef vec<1, float, highp> highp_vec1; - - /// 1 component vector of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. - /// - /// @see ext_vec1 - typedef vec<1, float, mediump> mediump_vec1; - - /// 1 component vector of single-precision floating-point numbers using low precision arithmetic in term of ULPs. - /// - /// @see ext_vec1 - typedef vec<1, float, lowp> lowp_vec1; - - /// 1 component vector of double-precision floating-point numbers using high precision arithmetic in term of ULPs. - /// - /// @see ext_vec1 - typedef vec<1, double, highp> highp_dvec1; - - /// 1 component vector of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. - /// - /// @see ext_vec1 - typedef vec<1, double, mediump> mediump_dvec1; - - /// 1 component vector of double-precision floating-point numbers using low precision arithmetic in term of ULPs. - /// - /// @see ext_vec1 - typedef vec<1, double, lowp> lowp_dvec1; - - /// 1 component vector of signed integer numbers. - /// - /// @see ext_vec1 - typedef vec<1, int, highp> highp_ivec1; - - /// 1 component vector of signed integer numbers. - /// - /// @see ext_vec1 - typedef vec<1, int, mediump> mediump_ivec1; - - /// 1 component vector of signed integer numbers. - /// - /// @see ext_vec1 - typedef vec<1, int, lowp> lowp_ivec1; - - /// 1 component vector of unsigned integer numbers. - /// - /// @see ext_vec1 - typedef vec<1, uint, highp> highp_uvec1; - - /// 1 component vector of unsigned integer numbers. - /// - /// @see ext_vec1 - typedef vec<1, uint, mediump> mediump_uvec1; - - /// 1 component vector of unsigned integer numbers. - /// - /// @see ext_vec1 - typedef vec<1, uint, lowp> lowp_uvec1; - - /// 1 component vector of bool values. - /// - /// @see ext_vec1 - typedef vec<1, bool, highp> highp_bvec1; - - /// 1 component vector of bool values. - /// - /// @see ext_vec1 - typedef vec<1, bool, mediump> mediump_bvec1; - - /// 1 component vector of bool values. - /// - /// @see ext_vec1 - typedef vec<1, bool, lowp> lowp_bvec1; - -#if GLM_HAS_TEMPLATE_ALIASES +# if GLM_HAS_TEMPLATE_ALIASES template using tvec1 = vec<1, T, Q>; -#endif//GLM_HAS_TEMPLATE_ALIASES - - ////////////////////////// - // vec1 definition - -#if(defined(GLM_PRECISION_HIGHP_BOOL)) - typedef highp_bvec1 bvec1; -#elif(defined(GLM_PRECISION_MEDIUMP_BOOL)) - typedef mediump_bvec1 bvec1; -#elif(defined(GLM_PRECISION_LOWP_BOOL)) - typedef lowp_bvec1 bvec1; -#else - /// 1 component vector of boolean. - /// @see gtc_vec1 extension. - typedef highp_bvec1 bvec1; -#endif//GLM_PRECISION - -#if(defined(GLM_PRECISION_HIGHP_FLOAT)) - typedef highp_vec1 vec1; -#elif(defined(GLM_PRECISION_MEDIUMP_FLOAT)) - typedef mediump_vec1 vec1; -#elif(defined(GLM_PRECISION_LOWP_FLOAT)) - typedef lowp_vec1 vec1; -#else - /// 1 component vector of floating-point numbers. - /// @see gtc_vec1 extension. - typedef highp_vec1 vec1; -#endif//GLM_PRECISION - -#if(defined(GLM_PRECISION_HIGHP_DOUBLE)) - typedef highp_dvec1 dvec1; -#elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE)) - typedef mediump_dvec1 dvec1; -#elif(defined(GLM_PRECISION_LOWP_DOUBLE)) - typedef lowp_dvec1 dvec1; -#else - /// 1 component vector of floating-point numbers. - /// @see gtc_vec1 extension. - typedef highp_dvec1 dvec1; -#endif//GLM_PRECISION - -#if(defined(GLM_PRECISION_HIGHP_INT)) - typedef highp_ivec1 ivec1; -#elif(defined(GLM_PRECISION_MEDIUMP_INT)) - typedef mediump_ivec1 ivec1; -#elif(defined(GLM_PRECISION_LOWP_INT)) - typedef lowp_ivec1 ivec1; -#else - /// 1 component vector of signed integer numbers. - /// @see gtc_vec1 extension. - typedef highp_ivec1 ivec1; -#endif//GLM_PRECISION - -#if(defined(GLM_PRECISION_HIGHP_UINT)) - typedef highp_uvec1 uvec1; -#elif(defined(GLM_PRECISION_MEDIUMP_UINT)) - typedef mediump_uvec1 uvec1; -#elif(defined(GLM_PRECISION_LOWP_UINT)) - typedef lowp_uvec1 uvec1; -#else - /// 1 component vector of unsigned integer numbers. - /// @see gtc_vec1 extension. - typedef highp_uvec1 uvec1; -#endif//GLM_PRECISION - - /// @} +# endif }//namespace glm - -#ifndef GLM_EXTERNAL_TEMPLATE -#include "../detail/type_vec1.hpp" -#endif//GLM_EXTERNAL_TEMPLATE diff --git a/glm/fvec2.hpp b/glm/fvec2.hpp new file mode 100644 index 00000000..b0e62b98 --- /dev/null +++ b/glm/fvec2.hpp @@ -0,0 +1,24 @@ +/// @ref core +/// @file glm/fvec2.hpp + +#pragma once +#include "detail/type_vec2.hpp" + +namespace glm +{ + /// @addtogroup core + /// @{ + +# if(defined(GLM_PRECISION_LOWP_FLOAT)) + typedef vec<2, float, lowp> vec2; +# elif(defined(GLM_PRECISION_MEDIUMP_FLOAT)) + typedef vec<2, float, mediump> vec2; +# else //defined(GLM_PRECISION_HIGHP_FLOAT) + /// 2 components vector of single-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef vec<2, float, highp> vec2; +# endif//GLM_PRECISION + + /// @} +}//namespace glm diff --git a/glm/fvec2_precision.hpp b/glm/fvec2_precision.hpp new file mode 100644 index 00000000..4d6006f0 --- /dev/null +++ b/glm/fvec2_precision.hpp @@ -0,0 +1,31 @@ +/// @ref core +/// @file glm/fvec2_precision.hpp + +#pragma once +#include "detail/type_vec2.hpp" + +namespace glm +{ + /// @addtogroup core_precision + /// @{ + + /// 2 components vector of high single-qualifier floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<2, float, highp> highp_vec2; + + /// 2 components vector of medium single-qualifier floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<2, float, mediump> mediump_vec2; + + /// 2 components vector of low single-qualifier floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<2, float, lowp> lowp_vec2; + + /// @} +}//namespace glm diff --git a/glm/fvec3.hpp b/glm/fvec3.hpp new file mode 100644 index 00000000..34be3f21 --- /dev/null +++ b/glm/fvec3.hpp @@ -0,0 +1,24 @@ +/// @ref core +/// @file glm/fvec3.hpp + +#pragma once +#include "detail/type_vec3.hpp" + +namespace glm +{ + /// @addtogroup core + /// @{ + +# if(defined(GLM_PRECISION_LOWP_FLOAT)) + typedef vec<3, float, lowp> vec3; +# elif(defined(GLM_PRECISION_MEDIUMP_FLOAT)) + typedef vec<3, float, mediump> vec3; +# else //defined(GLM_PRECISION_HIGHP_FLOAT) + /// 3 components vector of single-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef vec<3, float, highp> vec3; +# endif//GLM_PRECISION + + /// @} +}//namespace glm diff --git a/glm/fvec3_precision.hpp b/glm/fvec3_precision.hpp new file mode 100644 index 00000000..5c718c17 --- /dev/null +++ b/glm/fvec3_precision.hpp @@ -0,0 +1,32 @@ +/// @ref core +/// @file glm/fvec3_precision.hpp + +#pragma once +#include "detail/setup.hpp" +#include "detail/type_vec3.hpp" + +namespace glm +{ + /// @addtogroup core_precision + /// @{ + + /// 3 components vector of high single-qualifier floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<3, float, highp> highp_vec3; + + /// 3 components vector of medium single-qualifier floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<3, float, mediump> mediump_vec3; + + /// 3 components vector of low single-qualifier floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<3, float, lowp> lowp_vec3; + + /// @} +}//namespace glm diff --git a/glm/fvec4.hpp b/glm/fvec4.hpp new file mode 100644 index 00000000..336833f7 --- /dev/null +++ b/glm/fvec4.hpp @@ -0,0 +1,24 @@ +/// @ref core +/// @file glm/fvec4.hpp + +#pragma once +#include "detail/type_vec4.hpp" + +namespace glm +{ + /// @addtogroup core + /// @{ + +# if(defined(GLM_PRECISION_LOWP_FLOAT)) + typedef vec<4, float, lowp> vec4; +# elif(defined(GLM_PRECISION_MEDIUMP_FLOAT)) + typedef vec<4, float, mediump> vec4; +# else //defined(GLM_PRECISION_HIGHP_FLOAT) + /// 4 components vector of single-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef vec<4, float, highp> vec4; +# endif//GLM_PRECISION + + /// @} +}//namespace glm diff --git a/glm/fvec4_precision.hpp b/glm/fvec4_precision.hpp new file mode 100644 index 00000000..4ed8bcd1 --- /dev/null +++ b/glm/fvec4_precision.hpp @@ -0,0 +1,31 @@ +/// @ref core +/// @file glm/fvec4_precision.hpp + +#pragma once +#include "detail/type_vec4.hpp" + +namespace glm +{ + /// @addtogroup core_precision + /// @{ + + /// 4 components vector of high single-qualifier floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<4, float, highp> highp_vec4; + + /// 4 components vector of medium single-qualifier floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<4, float, mediump> mediump_vec4; + + /// 4 components vector of low single-qualifier floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<4, float, lowp> lowp_vec4; + + /// @} +}//namespace glm diff --git a/glm/ivec2.hpp b/glm/ivec2.hpp new file mode 100644 index 00000000..1b6bb608 --- /dev/null +++ b/glm/ivec2.hpp @@ -0,0 +1,24 @@ +/// @ref core +/// @file glm/ivec2.hpp + +#pragma once +#include "detail/type_vec2.hpp" + +namespace glm +{ + /// @addtogroup core + /// @{ + +# if(defined(GLM_PRECISION_LOWP_INT)) + typedef vec<2, int, lowp> ivec2; +# elif(defined(GLM_PRECISION_MEDIUMP_INT)) + typedef vec<2, int, mediump> ivec2; +# else //defined(GLM_PRECISION_HIGHP_INT) + /// 2 components vector of signed integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef vec<2, int, highp> ivec2; +# endif//GLM_PRECISION + + /// @} +}//namespace glm diff --git a/glm/ivec2_precision.hpp b/glm/ivec2_precision.hpp new file mode 100644 index 00000000..b3e5b3c8 --- /dev/null +++ b/glm/ivec2_precision.hpp @@ -0,0 +1,32 @@ +/// @ref core +/// @file glm/ivec2_precision.hpp + +#pragma once +#include "detail/setup.hpp" +#include "detail/type_vec2.hpp" + +namespace glm +{ + /// @addtogroup core_precision + /// @{ + + /// 2 components vector of high qualifier signed integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<2, int, highp> highp_ivec2; + + /// 2 components vector of medium qualifier signed integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<2, int, mediump> mediump_ivec2; + + /// 2 components vector of low qualifier signed integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<2, int, lowp> lowp_ivec2; + + /// @} +}//namespace glm diff --git a/glm/ivec3.hpp b/glm/ivec3.hpp new file mode 100644 index 00000000..29e9c64b --- /dev/null +++ b/glm/ivec3.hpp @@ -0,0 +1,24 @@ +/// @ref core +/// @file glm/ivec3.hpp + +#pragma once +#include "detail/type_vec3.hpp" + +namespace glm +{ + /// @addtogroup core + /// @{ + +# if(defined(GLM_PRECISION_LOWP_INT)) + typedef vec<3, int, lowp> ivec3; +# elif(defined(GLM_PRECISION_MEDIUMP_INT)) + typedef vec<3, int, mediump> ivec3; +# else //defined(GLM_PRECISION_HIGHP_INT) + /// 3 components vector of signed integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef vec<3, int, highp> ivec3; +# endif//GLM_PRECISION + + /// @} +}//namespace glm diff --git a/glm/ivec3_precision.hpp b/glm/ivec3_precision.hpp new file mode 100644 index 00000000..e4d20bfa --- /dev/null +++ b/glm/ivec3_precision.hpp @@ -0,0 +1,32 @@ +/// @ref core +/// @file glm/ivec3_precision.hpp + +#pragma once +#include "detail/setup.hpp" +#include "detail/type_vec3.hpp" + +namespace glm +{ + /// @addtogroup core_precision + /// @{ + + /// 3 components vector of high qualifier signed integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<3, int, highp> highp_ivec3; + + /// 3 components vector of medium qualifier signed integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<3, int, mediump> mediump_ivec3; + + /// 3 components vector of low qualifier signed integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<3, int, lowp> lowp_ivec3; + + /// @} +}//namespace glm diff --git a/glm/ivec4.hpp b/glm/ivec4.hpp new file mode 100644 index 00000000..ed55b55d --- /dev/null +++ b/glm/ivec4.hpp @@ -0,0 +1,24 @@ +/// @ref core +/// @file glm/ivec4.hpp + +#pragma once +#include "detail/type_vec4.hpp" + +namespace glm +{ + /// @addtogroup core + /// @{ + +# if(defined(GLM_PRECISION_LOWP_INT)) + typedef vec<4, int, lowp> ivec4; +# elif(defined(GLM_PRECISION_MEDIUMP_INT)) + typedef vec<4, int, mediump> ivec4; +# else //defined(GLM_PRECISION_HIGHP_INT) + /// 4 components vector of signed integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef vec<4, int, highp> ivec4; +# endif//GLM_PRECISION + + /// @} +}//namespace glm diff --git a/glm/ivec4_precision.hpp b/glm/ivec4_precision.hpp new file mode 100644 index 00000000..fb8e74e3 --- /dev/null +++ b/glm/ivec4_precision.hpp @@ -0,0 +1,31 @@ +/// @ref core +/// @file glm/ivec4_precision.hpp + +#pragma once +#include "detail/type_vec4.hpp" + +namespace glm +{ + /// @addtogroup core_precision + /// @{ + + /// 4 components vector of high qualifier signed integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<4, int, highp> highp_ivec4; + + /// 4 components vector of medium qualifier signed integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<4, int, mediump> mediump_ivec4; + + /// 4 components vector of low qualifier signed integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<4, int, lowp> lowp_ivec4; + + /// @} +}//namespace glm diff --git a/glm/packing.hpp b/glm/packing.hpp index c509fbfc..6e8546b8 100644 --- a/glm/packing.hpp +++ b/glm/packing.hpp @@ -13,8 +13,9 @@ #pragma once -#include "detail/type_vec2.hpp" -#include "detail/type_vec4.hpp" +#include "uvec2.hpp" +#include "fvec2.hpp" +#include "fvec4.hpp" namespace glm { diff --git a/glm/uvec2.hpp b/glm/uvec2.hpp new file mode 100644 index 00000000..2e13fdd3 --- /dev/null +++ b/glm/uvec2.hpp @@ -0,0 +1,24 @@ +/// @ref core +/// @file glm/uvec2.hpp + +#pragma once +#include "detail/type_vec2.hpp" + +namespace glm +{ + /// @addtogroup core + /// @{ + +# if(defined(GLM_PRECISION_LOWP_UINT)) + typedef vec<2, uint, lowp> uvec2; +# elif(defined(GLM_PRECISION_MEDIUMP_UINT)) + typedef vec<2, uint, mediump> uvec2; +# else //defined(GLM_PRECISION_HIGHP_UINT) + /// 2 components vector of unsigned integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef vec<2, uint, highp> uvec2; +# endif//GLM_PRECISION + + /// @} +}//namespace glm diff --git a/glm/uvec2_precision.hpp b/glm/uvec2_precision.hpp new file mode 100644 index 00000000..ba72baba --- /dev/null +++ b/glm/uvec2_precision.hpp @@ -0,0 +1,31 @@ +/// @ref core +/// @file glm/uvec2_precision.hpp + +#pragma once +#include "detail/type_vec2.hpp" + +namespace glm +{ + /// @addtogroup core_precision + /// @{ + + /// 2 components vector of high qualifier unsigned integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<2, uint, highp> highp_uvec2; + + /// 2 components vector of medium qualifier unsigned integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<2, uint, mediump> mediump_uvec2; + + /// 2 components vector of low qualifier unsigned integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<2, uint, lowp> lowp_uvec2; + + /// @} +}//namespace glm diff --git a/glm/uvec3.hpp b/glm/uvec3.hpp new file mode 100644 index 00000000..7dd36993 --- /dev/null +++ b/glm/uvec3.hpp @@ -0,0 +1,24 @@ +/// @ref core +/// @file glm/uvec3.hpp + +#pragma once +#include "detail/type_vec3.hpp" + +namespace glm +{ + /// @addtogroup core + /// @{ + +# if(defined(GLM_PRECISION_LOWP_UINT)) + typedef vec<3, uint, lowp> uvec3; +# elif(defined(GLM_PRECISION_MEDIUMP_UINT)) + typedef vec<3, uint, mediump> uvec3; +# else //defined(GLM_PRECISION_HIGHP_UINT) + /// 3 components vector of unsigned integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef vec<3, uint, highp> uvec3; +# endif//GLM_PRECISION + + /// @} +}//namespace glm diff --git a/glm/uvec3_precision.hpp b/glm/uvec3_precision.hpp new file mode 100644 index 00000000..17813fbd --- /dev/null +++ b/glm/uvec3_precision.hpp @@ -0,0 +1,32 @@ +/// @ref core +/// @file glm/uvec3_precision.hpp + +#pragma once +#include "detail/setup.hpp" +#include "detail/type_vec3.hpp" + +namespace glm +{ + /// @addtogroup core_precision + /// @{ + + /// 3 components vector of high qualifier unsigned integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<3, uint, highp> highp_uvec3; + + /// 3 components vector of medium qualifier unsigned integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<3, uint, mediump> mediump_uvec3; + + /// 3 components vector of low qualifier unsigned integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<3, uint, lowp> lowp_uvec3; + + /// @} +}//namespace glm diff --git a/glm/uvec4.hpp b/glm/uvec4.hpp new file mode 100644 index 00000000..8933e2d0 --- /dev/null +++ b/glm/uvec4.hpp @@ -0,0 +1,24 @@ +/// @ref core +/// @file glm/uvec4.hpp + +#pragma once +#include "detail/type_vec4.hpp" + +namespace glm +{ + /// @addtogroup core + /// @{ + +# if(defined(GLM_PRECISION_LOWP_UINT)) + typedef vec<4, uint, lowp> uvec4; +# elif(defined(GLM_PRECISION_MEDIUMP_UINT)) + typedef vec<4, uint, mediump> uvec4; +# else //defined(GLM_PRECISION_HIGHP_UINT) + /// 4 components vector of unsigned integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef vec<4, uint, highp> uvec4; +# endif//GLM_PRECISION + + /// @} +}//namespace glm diff --git a/glm/uvec4_precision.hpp b/glm/uvec4_precision.hpp new file mode 100644 index 00000000..c7aeee2d --- /dev/null +++ b/glm/uvec4_precision.hpp @@ -0,0 +1,32 @@ +/// @ref core +/// @file glm/uvec4_precision.hpp + +#pragma once +#include "detail/setup.hpp" +#include "detail/type_vec4.hpp" + +namespace glm +{ + /// @addtogroup core_precision + /// @{ + + /// 4 components vector of high qualifier unsigned integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<4, uint, highp> highp_uvec4; + + /// 4 components vector of medium qualifier unsigned integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<4, uint, mediump> mediump_uvec4; + + /// 4 components vector of low qualifier unsigned integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef vec<4, uint, lowp> lowp_uvec4; + + /// @} +}//namespace glm diff --git a/glm/vec2.hpp b/glm/vec2.hpp index 8f5bf601..f2a80fbe 100644 --- a/glm/vec2.hpp +++ b/glm/vec2.hpp @@ -1,8 +1,21 @@ /// @ref core /// @file glm/vec2.hpp -#include "detail/setup.hpp" - #pragma once +#include "bvec2.hpp" +#include "bvec2_precision.hpp" +#include "fvec2.hpp" +#include "fvec2_precision.hpp" +#include "dvec2.hpp" +#include "dvec2_precision.hpp" +#include "ivec2.hpp" +#include "ivec2_precision.hpp" +#include "uvec2.hpp" +#include "uvec2_precision.hpp" -#include "detail/type_vec2.hpp" +namespace glm +{ +# if GLM_HAS_TEMPLATE_ALIASES + template using tvec2 = vec<2, T, Q>; +# endif +}//namespace glm diff --git a/glm/vec3.hpp b/glm/vec3.hpp index d2aedd1b..bd8063b6 100644 --- a/glm/vec3.hpp +++ b/glm/vec3.hpp @@ -1,8 +1,22 @@ /// @ref core /// @file glm/vec3.hpp -#include "detail/setup.hpp" - #pragma once +#include "bvec3.hpp" +#include "bvec3_precision.hpp" +#include "fvec3.hpp" +#include "fvec3_precision.hpp" +#include "dvec3.hpp" +#include "dvec3_precision.hpp" +#include "ivec3.hpp" +#include "ivec3_precision.hpp" +#include "uvec3.hpp" +#include "uvec3_precision.hpp" + +namespace glm +{ +# if GLM_HAS_TEMPLATE_ALIASES + template using tvec3 = vec<3, T, Q>; +# endif +}//namespace glm -#include "detail/type_vec3.hpp" diff --git a/glm/vec4.hpp b/glm/vec4.hpp index 428b5415..0acb2117 100644 --- a/glm/vec4.hpp +++ b/glm/vec4.hpp @@ -1,8 +1,22 @@ /// @ref core /// @file glm/vec4.hpp -#include "detail/setup.hpp" - #pragma once +#include "bvec4.hpp" +#include "bvec4_precision.hpp" +#include "fvec4.hpp" +#include "fvec4_precision.hpp" +#include "dvec4.hpp" +#include "dvec4_precision.hpp" +#include "ivec4.hpp" +#include "ivec4_precision.hpp" +#include "uvec4.hpp" +#include "uvec4_precision.hpp" + +namespace glm +{ +# if GLM_HAS_TEMPLATE_ALIASES + template using tvec4 = vec<4, T, Q>; +# endif +}//namespace glm -#include "detail/type_vec4.hpp" diff --git a/readme.md b/readme.md index 2b85d563..80170091 100644 --- a/readme.md +++ b/readme.md @@ -65,6 +65,7 @@ glm::mat4 camera(float Translate, glm::vec2 const& Rotate) - Redesigned constexpr support which excludes both SIMD and constexpr #783 - Added detection of Visual C++ 2017 toolsets - Added identity functions #765 +- Split headers to improve compilation time #670 #### Fixes: - Fixed build problems due to printf and std::clock_t #778 diff --git a/test/core/core_func_common.cpp b/test/core/core_func_common.cpp index eed19651..d3a3980c 100644 --- a/test/core/core_func_common.cpp +++ b/test/core/core_func_common.cpp @@ -4,6 +4,11 @@ #include #include #include +#include +#include +#include +#include +#include #include #include #include @@ -18,7 +23,7 @@ namespace floor_ { static int test() { - int Error(0); + int Error = 0; { float A = 1.1f; diff --git a/test/core/core_func_geometric.cpp b/test/core/core_func_geometric.cpp index c33687be..1ae5fc2a 100644 --- a/test/core/core_func_geometric.cpp +++ b/test/core/core_func_geometric.cpp @@ -2,7 +2,13 @@ #include #include #include -#include +#include +#include +#include +#include +#include +#include +#include #include namespace length diff --git a/test/core/core_func_integer.cpp b/test/core/core_func_integer.cpp index 7fa14d3f..3de61d12 100644 --- a/test/core/core_func_integer.cpp +++ b/test/core/core_func_integer.cpp @@ -1,6 +1,11 @@ #include #include -#include +#include +#include +#include +#include +#include +#include #include #include #include diff --git a/test/ext/CMakeLists.txt b/test/ext/CMakeLists.txt index f6c20bd1..778df1c7 100644 --- a/test/ext/CMakeLists.txt +++ b/test/ext/CMakeLists.txt @@ -1,3 +1,4 @@ +glmCreateTestGTC(ext_bvec1) glmCreateTestGTC(ext_matrix_relational) glmCreateTestGTC(ext_scalar_relational) glmCreateTestGTC(ext_vec1) diff --git a/test/ext/ext_bvec1.cpp b/test/ext/ext_bvec1.cpp new file mode 100644 index 00000000..702712de --- /dev/null +++ b/test/ext/ext_bvec1.cpp @@ -0,0 +1,105 @@ +#include +#include +#include + +template +static int test_operators() +{ + int Error = 0; + + genType const A(true); + genType const B(true); + { + bool const R = A != B; + bool const S = A == B; + Error += (S && !R) ? 0 : 1; + } + + return Error; +} + +template +static int test_ctor() +{ + int Error = 0; + + glm::bvec1 const A = genType(true); + + glm::bvec1 const E(genType(true)); + Error += A == E ? 0 : 1; + + glm::bvec1 const F(E); + Error += A == F ? 0 : 1; + + return Error; +} + +template +static int test_size() +{ + int Error = 0; + + Error += sizeof(glm::bvec1) == sizeof(genType) ? 0 : 1; + Error += genType().length() == 1 ? 0 : 1; + Error += genType::length() == 1 ? 0 : 1; + + return Error; +} + +template +static int test_relational() +{ + int Error = 0; + + genType const A(true); + genType const B(true); + genType const C(false); + + Error += A == B ? 0 : 1; + Error += (A && B) == A ? 0 : 1; + Error += (A || C) == A ? 0 : 1; + + return Error; +} + +template +static int test_constexpr() +{ +# if GLM_HAS_CONSTEXPR + static_assert(genType::length() == 1, "GLM: Failed constexpr"); +# endif + + return 0; +} + +int main() +{ + int Error = 0; + + Error += test_operators(); + Error += test_operators(); + Error += test_operators(); + Error += test_operators(); + + Error += test_ctor(); + Error += test_ctor(); + Error += test_ctor(); + Error += test_ctor(); + + Error += test_size(); + Error += test_size(); + Error += test_size(); + Error += test_size(); + + Error += test_relational(); + Error += test_relational(); + Error += test_relational(); + Error += test_relational(); + + Error += test_constexpr(); + Error += test_constexpr(); + Error += test_constexpr(); + Error += test_constexpr(); + + return Error; +} diff --git a/test/ext/ext_matrix_relational.cpp b/test/ext/ext_matrix_relational.cpp index 4f8a6fb6..de12ff70 100644 --- a/test/ext/ext_matrix_relational.cpp +++ b/test/ext/ext_matrix_relational.cpp @@ -1,5 +1,6 @@ #include #include +#include int test_equal() { diff --git a/test/gtx/gtx_functions.cpp b/test/gtx/gtx_functions.cpp index 2fd6f6e6..770aed28 100644 --- a/test/gtx/gtx_functions.cpp +++ b/test/gtx/gtx_functions.cpp @@ -1,4 +1,5 @@ #include +#include #include int test_gauss_1d()