| ▼GTC Extensions (Stable) | Functions and types that the GLSL specification doesn't define, but useful to have for a C++ program | 
| GLM_GTC_bitfield | Allow to perform bit operations on integer values | 
| GLM_GTC_color_space | Allow to perform bit operations on integer values | 
| GLM_GTC_constants | Provide a list of constants and precomputed useful values | 
| GLM_GTC_epsilon | Comparison functions for a user defined epsilon values | 
| GLM_GTC_functions | List of useful common functions | 
| GLM_GTC_integer | Allow to perform bit operations on integer values | 
| GLM_GTC_matrix_access | Defines functions to access rows or columns of a matrix easily | 
| GLM_GTC_matrix_integer | Defines a number of matrices with integer types | 
| GLM_GTC_matrix_inverse | Defines additional matrix inverting functions | 
| GLM_GTC_matrix_transform | Defines functions that generate common transformation matrices | 
| GLM_GTC_noise | Defines 2D, 3D and 4D procedural noise functions Based on the work of Stefan Gustavson and Ashima Arts on "webgl-noise": https://github.com/ashima/webgl-noise Following Stefan Gustavson's paper "Simplex noise demystified": http://www.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf <glm/gtc/noise.hpp> need to be included to use these functionalities | 
| GLM_GTC_packing | This extension provides a set of function to convert vertors to packed formats | 
| GLM_GTC_quaternion | Defines a templated quaternion type and several quaternion operations | 
| GLM_GTC_random | Generate random number from various distribution methods | 
| GLM_GTC_reciprocal | Define secant, cosecant and cotangent functions | 
| GLM_GTC_round | Rounding value to specific boundings | 
| GLM_GTC_type_aligned | Aligned types | 
| GLM_GTC_type_precision | Defines specific C++-based precision types | 
| GLM_GTC_type_ptr | Handles the interaction between pointers and vector, matrix types | 
| GLM_GTC_ulp | Allow the measurement of the accuracy of a function against a reference implementation | 
| GLM_GTC_vec1 | Add vec1, ivec1, uvec1 and bvec1 types | 
| ▼GTX Extensions (Experimental) | Functions and types that the GLSL specification doesn't define, but useful to have for a C++ program | 
| GLM_GTX_associated_min_max | Min and max functions that return associated values not the compared onces | 
| GLM_GTX_bit | Allow to perform bit operations on integer values | 
| GLM_GTX_closest_point | Find the point on a straight line which is the closet of a point | 
| GLM_GTX_color_space | Related to RGB to HSV conversions and operations | 
| GLM_GTX_color_space_YCoCg | RGB to YCoCg conversions and operations | 
| GLM_GTX_common | Provide functions to increase the compatibility with Cg and HLSL languages | 
| GLM_GTX_compatibility | Provide functions to increase the compatibility with Cg and HLSL languages | 
| GLM_GTX_component_wise | Operations between components of a type | 
| GLM_GTX_dual_quaternion | Defines a templated dual-quaternion type and several dual-quaternion operations | 
| GLM_GTX_euler_angles | Build matrices from Euler angles | 
| GLM_GTX_extend | Extend a position from a source to a position at a defined length | 
| GLM_GTX_extented_min_max | Min and max functions for 3 to 4 parameters | 
| GLM_GTX_fast_exponential | Fast but less accurate implementations of exponential based functions | 
| GLM_GTX_fast_square_root | Fast but less accurate implementations of square root based functions | 
| GLM_GTX_fast_trigonometry | Fast but less accurate implementations of trigonometric functions | 
| GLM_GTX_gradient_paint | Functions that return the color of procedural gradient for specific coordinates | 
| GLM_GTX_handed_coordinate_space | To know if a set of three basis vectors defines a right or left-handed coordinate system | 
| GLM_GTX_hash | Add std::hash support for glm types | 
| GLM_GTX_integer | Add support for integer for core functions | 
| GLM_GTX_intersect | Add intersection functions | 
| GLM_GTX_io | Std::[w]ostream support for glm types | 
| GLM_GTX_log_base | Logarithm for any base | 
| GLM_GTX_matrix_cross_product | Build cross product matrices | 
| GLM_GTX_matrix_decompose | Decomposes a model matrix to translations, rotation and scale components | 
| GLM_GTX_matrix_interpolation | Allows to directly interpolate two exiciting matrices | 
| GLM_GTX_matrix_major_storage | Build matrices with specific matrix order, row or column | 
| GLM_GTX_matrix_operation | Build diagonal matrices from vectors | 
| GLM_GTX_matrix_query | Query to evaluate matrix properties | 
| GLM_GTX_matrix_transform_2d | Defines functions that generate common 2d transformation matrices | 
| GLM_GTX_mixed_producte | Mixed product of 3 vectors | 
| GLM_GTX_norm | Various ways to compute vector norms | 
| GLM_GTX_normal | Compute the normal of a triangle | 
| GLM_GTX_normalize_dot | Dot product of vectors that need to be normalize with a single square root | 
| GLM_GTX_number_precision | Defined size types | 
| GLM_GTX_optimum_pow | Integer exponentiation of power functions | 
| GLM_GTX_orthonormalize | Orthonormalize matrices | 
| GLM_GTX_perpendicular | Perpendicular of a vector from other one | 
| GLM_GTX_polar_coordinates | Conversion from Euclidean space to polar space and revert | 
| GLM_GTX_projection | Projection of a vector to other one | 
| GLM_GTX_quaternion | Extented quaternion types and functions | 
| GLM_GTX_range | Defines begin and end for vectors and matrices | 
| GLM_GTX_raw_data | Projection of a vector to other one | 
| GLM_GTX_rotate_normalized_axis | Quaternions and matrices rotations around normalized axis | 
| GLM_GTX_rotate_vector | Function to directly rotate a vector | 
| GLM_GTX_scalar_relational | Extend a position from a source to a position at a defined length | 
| GLM_GTX_simd_mat4 | SIMD implementation of mat4 type | 
| GLM_GTX_simd_quat | SIMD implementation of quat type | 
| GLM_GTX_simd_vec4 | SIMD implementation of vec4 type | 
| GLM_GTX_spline | Spline functions | 
| GLM_GTX_std_based_type | Adds vector types based on STL value types | 
| GLM_GTX_string_cast | Setup strings for GLM type values | 
| GLM_GTX_transform | Add transformation matrices | 
| GLM_GTX_transform2 | Add extra transformation matrices | 
| GLM_GTX_type_aligned | Defines aligned types | 
| GLM_GTX_type_trait | Defines traits for each type | 
| GLM_GTX_vector_angle | Compute angle between vectors | 
| GLM_GTX_vector_query | Query informations of vector types | 
| GLM_GTX_wrap | Wrapping mode of texture coordinates | 
| ▼GLM Core | The core of GLM, which implements exactly and only the GLSL specification to the degree possible | 
| Common functions | These all operate component-wise | 
| Exponential functions | These all operate component-wise | 
| Geometric functions | These operate on vectors as vectors, not component-wise | 
| Integer functions | These all operate component-wise | 
| Matrix functions | For each of the following built-in matrix functions, there is both a single-precision floating point version, where all arguments and return values are single precision, and a double-precision floating version, where all arguments and return values are double precision | 
| Floating-Point Pack and Unpack Functions | These functions do not operate component-wise, rather as described in each case | 
| Angle and Trigonometry Functions | Function parameters specified as angle are assumed to be in units of radians | 
| Vector Relational Functions | Relational and equality operators (<, <=, >, >=, ==, !=) are defined to operate on scalars and produce scalar Boolean results | 
| ▼Types | The standard types defined by the specification | 
| Precision types | Non-GLSL types that are used to define precision-based types | 
| Precision types | Non-GLSL types that are used to define precision-based types | 
| Template types | The generic template types used as the basis for the core types |