/*!
	\defgroup gtx GTX Extensions (Experimental)
	
	\brief Functions and types that the GLSL specification doesn't define, but useful to have for a C++ program.
	
	Experimental extensions are useful functions and types, but the development of
	their API and functionality is not necessarily stable. They can change substantially
	between versions. Backwards compatibility is not much of an issue for them.
	
	Even if it's highly unrecommended, it's possible to include all the extensions at once by
	including <glm/ext.hpp>. Otherwise, each extension needs to be included  a specific file.
**/

/*!
	\defgroup gtx_associated_min_max GLM_GTX_associated_min_max: Associated Min/Max
	\ingroup gtx
	
	\brief Min and max functions that return associated values not the compared onces.
	<glm/gtx/associated_min_max.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_bit GLM_GTX_bit: Extended bitwise operations
	\ingroup gtx
	
	\brief Allow to perform bit operations on integer values

	<glm/gtx/bit.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_closest_point GLM_GTX_closest_point: Find closest point
	\ingroup gtx
	
	\brief Find the point on a straight line which is the closet of a point.

	<glm/gtx/closest_point.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_color_cast GLM_GTX_color_cast: Color conversion
	\ingroup gtx
	
	\brief Conversion between two color types.

	<glm/gtx/color_cast.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_color_space GLM_GTX_color_space: RGB to HSV conversion
	\ingroup gtx
	
	\brief Related to RGB to HSV conversions and operations.

	<glm/gtx/color_space.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_color_space_YCoCg GLM_GTX_color_space_YCoCg: RGB to YCoCg conversion
	\ingroup gtx
	
	\brief RGB to YCoCg conversions and operations

	<glm/gtx/color_space_YCoCg.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_compatibility GLM_GTX_compatibility: Cg and HLSL compatibility
	\ingroup gtx
	
	\brief Provide functions to increase the compatibility with Cg and HLSL languages

	<glm/gtx/compatibility.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_component_wise GLM_GTX_component_wise: Component wise
	\ingroup gtx
	
	\brief Operations between components of a type

	<glm/gtx/component_wise.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_epsilon GLM_GTX_epsilon: Epsilon comparison
	\ingroup gtx
	
	\brief Comparison functions for a user defined epsilon values.

	<glm/gtx/epsilon.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_euler_angles GLM_GTX_euler_angles: Matrix from euler angles
	\ingroup gtx
	
	\brief Build matrices from Euler angles.

	<glm/gtx/euler_angles.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_extend GLM_GTX_extend: Position extending 
	\ingroup gtx
	
	\brief Extend a position from a source to a position at a defined length.

	<glm/gtx/extend.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_extented_min_max GLM_GTX_extented_min_max: Extended min max
	\ingroup gtx
	
	\brief Min and max functions for 3 to 4 parameters.

	<glm/gtx/extented_min_max.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_fast_exponential GLM_GTX_fast_exponential: Fast exponentiation functions
	\ingroup gtx
	
	\brief Fast but less accurate implementations of exponential based functions.

	<glm/gtx/fast_exponential.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_fast_square_root GLM_GTX_fast_square_root: Fast square root functions
	\ingroup gtx
	
	\brief Fast but less accurate implementations of square root based functions.

	<glm/gtx/fast_square_root.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_fast_trigonometry GLM_GTX_fast_trigonometry: Fast trigonometric functions
	\ingroup gtx
	
	\brief Fast but less accurate implementations of trigonometric functions.

	<glm/gtx/fast_trigonometry.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_handed_coordinate_space GLM_GTX_handed_coordinate_space: Space Handedness
	\ingroup gtx
	
	\brief To know if a set of three basis vectors defines a right or left-handed coordinate system.

	<glm/gtx/handed_coordinate_system.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_inertia GLM_GTX_inertia: Intertial matrix
	\ingroup gtx
	
	\brief Create inertia matrices

	<glm/gtx/inertia.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_int_10_10_10_2 GLM_GTX_int_10_10_10_2: Packed integer
	\ingroup gtx
	
	\brief Pack vector to 1010102 integers. Storage only.

	<glm/gtx/int_10_10_10_2.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_integer GLM_GTX_integer: Extended integer functions
	\ingroup gtx
	
	\brief Add support for integer for core functions

	<glm/gtx/integer.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_intersect GLM_GTX_intersect: Intersection tests
	\ingroup gtx
	
	\brief Add intersection functions

	<glm/gtx/intersect.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_log_base GLM_GTX_log_base: Log with base
	\ingroup gtx
	
	\brief Logarithm for any base. base can be a vector or a scalar.

	<glm/gtx/log_base.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_matrix_cross_product GLM_GTX_matrix_cross_product: Cross product matrix form
	\ingroup gtx
	
	\brief Build cross product matrices

	<glm/gtx/matrix_cross_product.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_matrix_major_storage GLM_GTX_matrix_major_storage: Build matrix
	\ingroup gtx
	
	\brief Build matrices with specific matrix order, row or column

	<glm/gtx/matrix_major_storage.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_matrix_operation GLM_GTX_matrix_operation: Extended matrix operations
	\ingroup gtx
	
	\brief Build diagonal matrices from vectors.

	<glm/gtx/matrix_operation.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_matrix_query GLM_GTX_matrix_query: Query matrix properties
	\ingroup gtx
	
	\brief Query to evaluate matrix properties

	<glm/gtx/matrix_query.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_mixed_product GLM_GTX_mixed_producte: Mixed product
	\ingroup gtx
	
	\brief Mixed product of 3 vectors.

	<glm/gtx/mixed_product.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_multiple GLM_GTX_multiple: Multiples 
	\ingroup gtx
	
	\brief Find the closest number of a number multiple of other number.

	<glm/gtx/multiple.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_norm GLM_GTX_norm: Vector norm calculations
	\ingroup gtx
	
	\brief Various way to compute vector norms.

	<glm/gtx/norm.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_normal GLM_GTX_normal: Compute normals
	\ingroup gtx
	
	\brief Compute the normal of a triangle.

	<glm/gtx/normal.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_normalize_dot GLM_GTX_normalize_dot: Normalize dot product
	\ingroup gtx
	
	\brief Dot product of vectors that need to be normalize with a single square root.

	<glm/gtx/normalized_dot.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_number_precision GLM_GTX_number_precision: Number precision
	\ingroup gtx
	
	\brief Defined size types.

	<glm/gtx/number_precision.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_ocl_type GLM_GTX_ocl_type: OpenCL types
	\ingroup gtx
	
	\brief OpenCL types.

	<glm/gtx/ocl_type.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_optimum_pow GLM_GTX_optimum_pow: Optimum pow
	\ingroup gtx
	
	\brief Integer exponentiation of power functions.

	<glm/gtx/optimum_pow.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_orthonormalize GLM_GTX_orthonormalize: Orthonormalize
	\ingroup gtx
	
	\brief Orthonormalize matrices.

	<glm/gtx/orthonormalize.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_perpendicular GLM_GTX_perpendicular: Perpendicular
	\ingroup gtx
	
	\brief Perpendicular of a vector from other one

	<glm/gtx/perpendicular.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_polar_coordinates GLM_GTX_polar_coordinates: Polar coordinates
	\ingroup gtx
	
	\brief Conversion from Euclidean space to polar space and revert.

	<glm/gtx/polar_coordinates.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_projection GLM_GTX_projection: Projection
	\ingroup gtx
	
	\brief Projection of a vector to other one

	<glm/gtx/projection.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_quaternion GLM_GTX_quaternion: Extented quaternion types and functions
	\ingroup gtx
	
	\brief Extented quaternion types and functions

	<glm/gtx/quaternion.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_random GLM_GTX_random: Random
	\ingroup gtx
	
	\brief Generate random number from various distribution methods

	<glm/gtx/random.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_raw_data GLM_GTX_raw_data: Raw data
	\ingroup gtx
	
	\brief Projection of a vector to other one

	<glm/gtx/raw_data.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_reciprocal GLM_GTX_reciprocal: Reciprocal
	\ingroup gtx
	
	\brief Define secant, cosecant and cotangent functions.

	<glm/gtx/reciprocal.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_rotate_vector GLM_GTX_rotate_vector: Rotate vector
	\ingroup gtx
	
	\brief Function to directly rotate a vector

	<glm/gtx/rotate_vector.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_simd_mat4 GLM_GTX_simd_mat4: SIMD mat4 type and functions
	\ingroup gtx
	
	\brief SIMD implementation of mat4 type.

	<glm/gtx/simd_mat4.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_simd_vec4 GLM_GTX_simd_vec4: SIMD vec4 type and functions
	\ingroup gtx
	
	\brief SIMD implementation of vec4 type.

	<glm/gtx/simd_vec4.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_spline GLM_GTX_spline: Spline
	\ingroup gtx
	
	\brief Spline functions

	<glm/gtx/spline.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_string_cast GLM_GTX_string_cast: String cast
	\ingroup gtx
	
	\brief Setup strings for GLM type values

	<glm/gtx/string_cast.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_transform GLM_GTX_transform: Extented transformation matrices
	\ingroup gtx
	
	\brief Add transformation matrices

	<glm/gtx/transform.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_transform2 GLM_GTX_transform2: Extra transformation matrices
	\ingroup gtx
	
	\brief Add extra transformation matrices

	<glm/gtx/transform2.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_unsigned_int GLM_GTX_unsigned_int: Unsigned int
	\ingroup gtx
	
	\brief Add support for unsigned integer for core functions

	<glm/gtx/unsigned_int.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_vector_access GLM_GTX_vector_angle: Vector access
	\ingroup gtx
	
	\brief Function to set values to vectors

	<glm/gtx/vector_access.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_vector_angle GLM_GTX_vector_angle: Vector angle
	\ingroup gtx
	
	\brief Compute angle between vectors

	<glm/gtx/vector_angle.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_vector_query GLM_GTX_vector_query: Vector query
	\ingroup gtx
	
	\brief Query informations of vector types

	<glm/gtx/vector_query.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_verbose_operator GLM_GTX_verbose_operator: Verbose operator
	\ingroup gtx
	
	\brief Use words to replace operators

	<glm/gtx/verbose_operator.hpp> need to be included to use these functionalities.
**/

/*!
	\defgroup gtx_wrap GLM_GTX_wrap: Texture coordinate wrap modes
	\ingroup gtx
	
	\brief Wrapping mode of texture coordinates.

	<glm/gtx/wrap.hpp> need to be included to use these functionalities.
**/

