{"id":13441607,"url":"https://github.com/g-truc/glm","last_synced_at":"2025-10-04T14:32:27.438Z","repository":{"id":4554385,"uuid":"5695275","full_name":"g-truc/glm","owner":"g-truc","description":"OpenGL Mathematics (GLM)","archived":false,"fork":true,"pushed_at":"2024-08-19T03:15:13.000Z","size":72909,"stargazers_count":9225,"open_issues_count":79,"forks_count":2124,"subscribers_count":271,"default_branch":"master","last_synced_at":"2024-10-25T07:16:49.970Z","etag":null,"topics":["cpp","cpp-library","glm","header-only","mathematics","matrix","opengl","quaternion","simd","sycl","vector","vulkan"],"latest_commit_sha":null,"homepage":"https://glm.g-truc.net","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"icaven/glm","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/g-truc.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"copying.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2012-09-06T00:04:56.000Z","updated_at":"2024-10-25T01:01:33.000Z","dependencies_parsed_at":"2023-10-17T05:01:05.390Z","dependency_job_id":"2b402b6c-3454-41d6-94e9-e91f648a3b62","html_url":"https://github.com/g-truc/glm","commit_stats":{"total_commits":3680,"total_committers":231,"mean_commits":"15.930735930735931","dds":0.7111413043478261,"last_synced_commit":"47585fde0c49fa77a2bf2fb1d2ead06999fd4b6e"},"previous_names":[],"tags_count":72,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g-truc%2Fglm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g-truc%2Fglm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g-truc%2Fglm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g-truc%2Fglm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/g-truc","download_url":"https://codeload.github.com/g-truc/glm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235116892,"owners_count":18938465,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","cpp-library","glm","header-only","mathematics","matrix","opengl","quaternion","simd","sycl","vector","vulkan"],"created_at":"2024-07-31T03:01:35.999Z","updated_at":"2025-10-04T14:32:21.484Z","avatar_url":"https://github.com/g-truc.png","language":"C++","funding_links":[],"categories":["C++","Math","Game-Math","C/C++","Libraries \u0026 Frameworks:","Projects/Repositories","进程间通信","Maths","Geometry, Graphics Processing, and Game Development","RAOE Camera","Libraries"],"sub_categories":["Mathematics","Math","数学","Dependencies","C++"],"readme":"![glm](/doc/manual/logo-mini.png)\n\n[OpenGL Mathematics](http://glm.g-truc.net/) (*GLM*) is a header only C++ mathematics library for graphics software based on the [OpenGL Shading Language (GLSL) specifications](https://www.opengl.org/registry/doc/GLSLangSpec.4.50.diff.pdf).\n\n*GLM* provides classes and functions designed and implemented with the same naming conventions and functionality than *GLSL* so that anyone who knows *GLSL*, can use *GLM* as well in C++.\n\nThis project isn't limited to *GLSL* features. An extension system, based on the *GLSL* extension conventions, provides extended capabilities: matrix transformations, quaternions, data packing, random numbers, noise, etc...\n\nThis library works perfectly with *[OpenGL](https://www.opengl.org)* but it also ensures interoperability with other third party libraries and SDK. It is a good candidate for software rendering (raytracing / rasterisation), image processing, physics simulations and any development context that requires a simple and convenient mathematics library.\n\n*GLM* is written in C++98 but can take advantage of C++11 when supported by the compiler. It is a platform independent library with no dependence and it officially supports the following compilers:\n- [*GCC*](http://gcc.gnu.org/) 4.7 and higher\n- [*Intel C++ Compose*](https://software.intel.com/en-us/intel-compilers) XE 2013 and higher\n- [*Clang*](http://llvm.org/) 3.4 and higher\n- [*Apple Clang 6.0*](https://developer.apple.com/library/mac/documentation/CompilerTools/Conceptual/LLVMCompilerOverview/index.html) and higher\n- [*Visual C++*](http://www.visualstudio.com/) 2013 and higher\n- [*CUDA*](https://developer.nvidia.com/about-cuda) 9.0 and higher (experimental)\n- Any C++11 compiler\n\nFor more information about *GLM*, please have a look at the [manual](manual.md) and the [API reference documentation](http://glm.g-truc.net/0.9.9/api/modules.html).\nThe source code and the documentation are licensed under either the [Happy Bunny License (Modified MIT) or the MIT License](manual.md#section0).\n\nThanks for contributing to the project by [submitting pull requests](https://github.com/g-truc/glm/pulls).\n\n```cpp\n#include \u003cglm/vec3.hpp\u003e // glm::vec3\n#include \u003cglm/vec4.hpp\u003e // glm::vec4\n#include \u003cglm/mat4x4.hpp\u003e // glm::mat4\n#include \u003cglm/ext/matrix_transform.hpp\u003e // glm::translate, glm::rotate, glm::scale\n#include \u003cglm/ext/matrix_clip_space.hpp\u003e // glm::perspective\n#include \u003cglm/ext/scalar_constants.hpp\u003e // glm::pi\n\nglm::mat4 camera(float Translate, glm::vec2 const\u0026 Rotate)\n{\n\tglm::mat4 Projection = glm::perspective(glm::pi\u003cfloat\u003e() * 0.25f, 4.0f / 3.0f, 0.1f, 100.f);\n\tglm::mat4 View = glm::translate(glm::mat4(1.0f), glm::vec3(0.0f, 0.0f, -Translate));\n\tView = glm::rotate(View, Rotate.y, glm::vec3(-1.0f, 0.0f, 0.0f));\n\tView = glm::rotate(View, Rotate.x, glm::vec3(0.0f, 1.0f, 0.0f));\n\tglm::mat4 Model = glm::scale(glm::mat4(1.0f), glm::vec3(0.5f));\n\treturn Projection * View * Model;\n}\n```\n\n## [Latest release](https://github.com/g-truc/glm/releases/latest)\n\n## Project Health\n\n| Service | Status |\n| ------- | ------ |\n| [GitHub actions](https://github.com/g-truc/glm/actions)| [![.github/workflows/ci.yml](https://github.com/g-truc/glm/actions/workflows/ci.yml/badge.svg)](https://github.com/g-truc/glm/actions/workflows/ci.yml)\n\n## Build and Install\n\n```shell\ncd /path/to/glm\ncmake \\\n    -DGLM_BUILD_TESTS=OFF \\\n    -DBUILD_SHARED_LIBS=OFF \\\n    -B build .\ncmake --build build -- all\ncmake --build build -- install\n```\n\nPassing `-DBUILD_SHARED_LIBS=ON` to build shared library\n\nAnd then in your `CMakeLists.txt`:\n\n```cmake\nfind_package(glm CONFIG REQUIRED)\ntarget_link_libraries(main PRIVATE glm::glm)\n```\n\nIf your prefer to use header-only version of GLM\n\n```cmake\nfind_package(glm CONFIG REQUIRED)\ntarget_link_libraries(main PRIVATE glm::glm-header-only)\n```\n\n## Vcpkg\n\n```shell\nvcpkg install glm\n```\n\n## CMake using FetchContent\nYou can add glm to your CMake project to be built together.\n\nAdd to the `CMakeLists.txt` file:\n```cmake\ncmake_minimum_required(VERSION 3.11) # FetchContent is new in version 3.11.\n\ninclude(FetchContent)\n\nFetchContent_Declare(\n\tglm\n\tGIT_REPOSITORY\thttps://github.com/g-truc/glm.git\n\tGIT_TAG \tbf71a834948186f4097caa076cd2663c69a10e1e #refs/tags/1.0.1\n)\n\nFetchContent_MakeAvailable(glm)\n\ntarget_link_libraries(main PRIVATE glm::glm)\n```\n\n## Release notes\n\n### [GLM 1.0.2](https://github.com/g-truc/glm/tree/master) - 2025-0X-XX\n\n#### Improvements:\n- Unit tests are not build by default, `GLM_BUILD_TESTS` set to `ON` required.\n\n### [GLM 1.0.1](https://github.com/g-truc/glm/releases/tag/1.0.1) - 2024-02-26\n\n#### Features:\n- Added C++17 [[nodiscard]] support\n\n#### Improvements:\n- Enables only warnings as errors while building unit tests\n- Added aligned_*vec3 simd support #1245\n\n#### Fixes:\n- Fixed C++ language auto detection build, disable C++98 warnings with Clang #1235, #1231\n- Fixed `GTX_color_space` missing \u003cglm/ext/scalar_constants.hpp\u003e include #1233 #1238\n- Fixed `EXT_matrix_transform` `shear` implementation #1140 #1182\n- Fixed `smoothstep` SIMD implementation #1222\n\n### [GLM 1.0.0](https://github.com/g-truc/glm/releases/tag/1.0.0) - 2024-01-24\n#### Features:\n- Added *GLM_EXT_scalar_reciprocal* with tests\n- Added *GLM_EXT_vector_reciprocal* with tests\n- Added `glm::iround` and `glm::uround` to *GLM_EXT_scalar_common* and *GLM_EXT_vector_common*\n- Added *GLM_EXT_matrix_integer* with tests\n- Added Github Actions\n- Added GLM_FORCE_UNRESTRICTED_FLOAT to prevent static asserts when using other scalar types with function expecting floats. \n\n#### Improvements:\n- Added `constexpr` qualifier for `cross` product #1040\n- Added `constexpr` qualifier for `dot` product #1040\n\n#### Fixes:\n- Fixed incorrect assertion for `glm::min` and `glm::max` #1009\n- Fixed quaternion orientation in `glm::decompose` #1012\n- Fixed singularity in quaternion to euler angle roll conversion #1019\n- Fixed `quat` `glm::pow` handling of small magnitude quaternions #1022\n- Fixed `glm::fastNormalize` build error #1033\n- Fixed `glm::isMultiple` build error #1034\n- Fixed `glm::adjugate` calculation #1035\n- Fixed `glm::angle` discards the sign of result for angles in range (2*pi-1, 2*pi) #1038\n- Removed ban on using `glm::string_cast` with *CUDA* host code #1041\n\n### [GLM 0.9.9.8](https://github.com/g-truc/glm/releases/tag/0.9.9.8) - 2020-04-13\n#### Features:\n- Added *GLM_EXT_vector_intX* and *GLM_EXT_vector_uintX* extensions\n- Added *GLM_EXT_matrix_intX* and *GLM_EXT_matrix_uintX* extensions\n\n#### Improvements:\n- Added `glm::clamp`, `glm::repeat`, `glm::mirrorClamp` and `glm::mirrorRepeat` function to `GLM_EXT_scalar_common` and `GLM_EXT_vector_common` extensions with tests\n\n#### Fixes:\n- Fixed unnecessary warnings from `matrix_projection.inl` #995\n- Fixed quaternion `glm::slerp` overload which interpolates with extra spins #996\n- Fixed for `glm::length` using arch64 #992\n- Fixed singularity check for `glm::quatLookAt` #770\n\n### [GLM 0.9.9.7](https://github.com/g-truc/glm/releases/tag/0.9.9.7) - 2020-01-05\n#### Improvements:\n- Improved *Neon* support with more functions optimized #950\n- Added *CMake* *GLM* interface #963\n- Added `glm::fma` implementation based on `std::fma` #969\n- Added missing quat constexpr #955\n- Added `GLM_FORCE_QUAT_DATA_WXYZ` to store quat data as w,x,y,z instead of x,y,z,w #983\n\n#### Fixes:\n- Fixed equal *ULP* variation when using negative sign #965\n- Fixed for intersection ray/plane and added related tests #953\n- Fixed ARM 64bit detection #949\n- Fixed *GLM_EXT_matrix_clip_space* warnings #980\n- Fixed Wimplicit-int-float-conversion warnings with clang 10+ #986\n- Fixed *GLM_EXT_matrix_clip_space* `perspectiveFov`\n\n### [GLM 0.9.9.6](https://github.com/g-truc/glm/releases/tag/0.9.9.6) - 2019-09-08\n#### Features:\n- Added *Neon* support #945\n- Added *SYCL* support #914\n- Added *GLM_EXT_scalar_integer* extension with power of two and multiple scalar functions\n- Added *GLM_EXT_vector_integer* extension with power of two and multiple vector functions\n\n#### Improvements:\n- Added *Visual C++ 2019* detection\n- Added *Visual C++ 2017* 15.8 and 15.9 detection\n- Added missing genType check for `glm::bitCount` and `glm::bitfieldReverse` #893\n\n#### Fixes:\n- Fixed for g++6 where -std=c++1z sets __cplusplus to 201500 instead of 201402 #921\n- Fixed hash hashes qua instead of tquat #919\n- Fixed `.natvis` as structs renamed #915\n- Fixed `glm::ldexp` and `glm::frexp` declaration #895\n- Fixed missing const to quaternion conversion operators #890\n- Fixed *GLM_EXT_scalar_ulp* and *GLM_EXT_vector_ulp* API coding style\n- Fixed quaternion component order: `w, {x, y, z}` #916\n- Fixed `GLM_HAS_CXX11_STL` broken on Clang with Linux #926\n- Fixed *Clang* or *GCC* build due to wrong `GLM_HAS_IF_CONSTEXPR` definition #907\n- Fixed *CUDA* 9 build #910\n\n#### Deprecation:\n - Removed CMake install and uninstall scripts\n\n### [GLM 0.9.9.5](https://github.com/g-truc/glm/releases/tag/0.9.9.5) - 2019-04-01\n#### Fixes:\n- Fixed build errors when defining `GLM_ENABLE_EXPERIMENTAL` #884 #883\n- Fixed `if constexpr` warning #887\n- Fixed missing declarations for `glm::frexp` and `glm::ldexp` #886\n\n### [GLM 0.9.9.4](https://github.com/g-truc/glm/releases/tag/0.9.9.4) - 2019-03-19\n#### Features:\n- Added `glm::mix` implementation for matrices in *GLM_EXT_matrix_common/ #842\n- Added *CMake* `BUILD_SHARED_LIBS` and `BUILD_STATIC_LIBS` build options #871\n\n#### Improvements:\n- Added GLM_FORCE_INTRINSICS to enable SIMD instruction code path. By default, it's disabled allowing constexpr support by default. #865\n- Optimized inverseTransform #867\n\n#### Fixes:\n- Fixed in `glm::mat4x3` conversion #829\n- Fixed `constexpr` issue on GCC #832 #865\n- Fixed `glm::mix` implementation to improve GLSL conformance #866\n- Fixed `glm::int8` being defined as unsigned char with some compiler #839\n- Fixed `glm::vec1` include #856\n- Ignore `.vscode` #848\n\n### [GLM 0.9.9.3](https://github.com/g-truc/glm/releases/tag/0.9.9.3) - 2018-10-31\n#### Features:\n- Added `glm::equal` and `glm::notEqual` overload with max ULPs parameters for scalar numbers #121\n- Added `GLM_FORCE_SILENT_WARNINGS` to silent *GLM* warnings when using language extensions but using W4 or Wpedantic warnings #814 #775\n- Added adjugate functions to `GLM_GTX_matrix_operation` #151\n- Added `GLM_FORCE_ALIGNED_GENTYPES` to enable aligned types and SIMD instruction are not enabled. This disable `constexpr` #816\n\n#### Improvements:\n- Added constant time ULP distance between float #121\n- Added `GLM_FORCE_SILENT_WARNINGS` to suppress *GLM* warnings #822\n\n#### Fixes:\n- Fixed `glm::simplex` noise build with double #734\n- Fixed `glm::bitfieldInsert` according to GLSL spec #818\n- Fixed `glm::refract` for negative 'k' #808\n\n### [GLM 0.9.9.2](https://github.com/g-truc/glm/releases/tag/0.9.9.2) - 2018-09-14\n#### Fixes:\n- Fixed `GLM_FORCE_CXX**` section in the manual\n- Fixed default initialization with vector and quaternion types using `GLM_FORCE_CTOR_INIT` #812\n\n### [GLM 0.9.9.1](https://github.com/g-truc/glm/releases/tag/0.9.9.1) - 2018-09-03\n#### Features:\n- Added `bitfieldDeinterleave` to *GLM_GTC_bitfield*\n- Added missing `glm::equal` and `glm::notEqual` with epsilon for quaternion types to *GLM_GTC_quaternion*\n- Added *GLM_EXT_matrix_relational*: `glm::equal` and `glm::notEqual` with epsilon for matrix types\n- Added missing aligned matrix types to *GLM_GTC_type_aligned*\n- Added C++17 detection\n- Added *Visual C++* language standard version detection\n- Added PDF manual build from markdown\n\n#### Improvements:\n- Added a section to the manual for contributing to *GLM*\n- Refactor manual, lists all configuration defines\n- Added missing `glm::vec1` based constructors\n- Redesigned constexpr support which excludes both SIMD and `constexpr` #783\n- Added detection of *Visual C++ 2017* toolsets\n- Added identity functions #765\n- Split headers into EXT extensions to improve compilation time #670\n- Added separate performance tests\n- Clarified refract valid range of the indices of refraction, between -1 and 1 inclusively #806\n\n#### Fixes:\n- Fixed SIMD detection on *Clang* and *GCC*\n- Fixed build problems due to `std::printf` and `std::clock_t` #778\n- Fixed int mod\n- Anonymous unions require C++ language extensions\n- Fixed `glm::ortho` #790\n- Fixed *Visual C++* 2013 warnings in vector relational code #782\n- Fixed *ICC* build errors with constexpr #704\n- Fixed defaulted operator= and constructors #791\n- Fixed invalid conversion from int scalar with vec4 constructor when using SSE instruction\n- Fixed infinite loop in random functions when using negative radius values using an assert #739\n\n### [GLM 0.9.9.0](https://github.com/g-truc/glm/releases/tag/0.9.9.0) - 2018-05-22\n#### Features:\n- Added *RGBM* encoding in *GLM_GTC_packing* #420\n- Added *GLM_GTX_color_encoding* extension\n- Added *GLM_GTX_vec_swizzle*, faster compile time swizzling then swizzle operator #558\n- Added *GLM_GTX_exterior_product* with a `vec2` `glm::cross` implementation #621\n- Added *GLM_GTX_matrix_factorisation* to factor matrices in various forms #654\n- Added [`GLM_ENABLE_EXPERIMENTAL`](manual.md#section7_4) to enable experimental features.\n- Added packing functions for integer vectors #639\n- Added conan packaging configuration #643 #641\n- Added `glm::quatLookAt` to *GLM_GTX_quaternion* #659\n- Added `glm::fmin`, `glm::fmax` and `glm::fclamp` to *GLM_GTX_extended_min_max* #372\n- Added *GLM_EXT_vector_relational*: extend `glm::equal` and `glm::notEqual` to take an epsilon argument\n- Added *GLM_EXT_vector_relational*: `glm::openBounded` and `glm::closeBounded`\n- Added *GLM_EXT_vec1*: `*vec1` types\n- Added *GLM_GTX_texture*: `levels` function\n- Added separate functions to use both negative one and zero near clip plans #680\n- Added `GLM_FORCE_SINGLE_ONLY` to use *GLM* on platforms that don't support double #627\n- Added *GLM_GTX_easing* for interpolation functions #761\n\n#### Improvements:\n- No more default initialization of vector, matrix and quaternion types\n- Added lowp variant of GTC_color_space convertLinearToSRGB #419\n- Replaced the manual by a markdown version #458\n- Improved API documentation #668\n- Optimized GTC_packing implementation\n- Optimized GTC_noise functions\n- Optimized GTC_color_space HSV to RGB conversions\n- Optimised GTX_color_space_YCoCg YCoCgR conversions\n- Optimized GTX_matrix_interpolation axisAngle function\n- Added FAQ 12: Windows headers cause build errors... #557\n- Removed GCC shadow warnings #595\n- Added error for including of different versions of GLM #619\n- Added GLM_FORCE_IGNORE_VERSION to ignore error caused by including different version of GLM #619\n- Reduced warnings when using very strict compilation flags #646\n- length() member functions are constexpr #657\n- Added support of -Weverything with Clang #646\n- Improved exponential function test coverage\n- Enabled warnings as error with Clang unit tests\n- Conan package is an external repository: https://github.com/bincrafters/conan-glm\n- Clarify quat_cast documentation, applying on pure rotation matrices #759\n\n#### Fixes:\n- Removed doxygen references to *GLM_GTC_half_float* which was removed in 0.9.4\n- Fixed `glm::decompose` #448\n- Fixed `glm::intersectRayTriangle` #6\n- Fixed dual quaternion != operator #629\n- Fixed usused variable warning in *GLM_GTX_spline* #618\n- Fixed references to `GLM_FORCE_RADIANS` which was removed #642\n- Fixed `glm::fastInverseSqrt` to use fast inverse square #640\n- Fixed `glm::axisAngle` NaN #638\n- Fixed integer pow from *GLM_GTX_integer* with null exponent #658\n- Fixed `quat` `normalize` build error #656\n- Fixed *Visual C++ 2017.2* warning regarding `__has_feature` definition #655\n- Fixed documentation warnings\n- Fixed `GLM_HAS_OPENMP` when *OpenMP* is not enabled\n- Fixed Better follow GLSL `min` and `max` specification #372\n- Fixed quaternion constructor from two vectors special cases #469\n- Fixed `glm::to_string` on quaternions wrong components order #681\n- Fixed `glm::acsch` #698\n- Fixed `glm::isnan` on *CUDA* #727\n\n#### Deprecation:\n- Requires *Visual Studio 2013*, *GCC 4.7*, *Clang 3.4*, *Cuda 7*, *ICC 2013* or a C++11 compiler\n- Removed *GLM_GTX_simd_vec4* extension\n- Removed *GLM_GTX_simd_mat4* extension\n- Removed *GLM_GTX_simd_quat* extension\n- Removed `GLM_SWIZZLE`, use `GLM_FORCE_SWIZZLE` instead\n- Removed `GLM_MESSAGES`, use `GLM_FORCE_MESSAGES` instead\n- Removed `GLM_DEPTH_ZERO_TO_ONE`, use `GLM_FORCE_DEPTH_ZERO_TO_ONE` instead\n- Removed `GLM_LEFT_HANDED`, use `GLM_FORCE_LEFT_HANDED` instead\n- Removed `GLM_FORCE_NO_CTOR_INIT`\n- Removed `glm::uninitialize`\n\n---\n### [GLM 0.9.8.5](https://github.com/g-truc/glm/releases/tag/0.9.8.5) - 2017-08-16\n#### Features:\n- Added *Conan* package support #647\n\n#### Fixes:\n- Fixed *Clang* version detection from source #608\n- Fixed `glm::packF3x9_E1x5` exponent packing #614\n- Fixed build error `min` and `max` specializations with integer #616\n- Fixed `simd_mat4` build error #652\n\n---\n### [GLM 0.9.8.4](https://github.com/g-truc/glm/releases/tag/0.9.8.4) - 2017-01-22\n#### Fixes:\n- Fixed *GLM_GTC_packing* test failing on *GCC* x86 due to denorms #212 #577\n- Fixed `POPCNT` optimization build in *Clang* #512\n- Fixed `glm::intersectRayPlane` returns true in parallel case #578\n- Fixed *GCC* 6.2 compiler warnings #580\n- Fixed *GLM_GTX_matrix_decompose* `glm::decompose` #582 #448\n- Fixed *GCC* 4.5 and older build #566\n- Fixed *Visual C++* internal error when declaring a global vec type with siwzzle expression enabled #594\n- Fixed `GLM_FORCE_CXX11` with Clang and libstlc++ which wasn't using C++11 STL features. #604\n\n---\n### [GLM 0.9.8.3](https://github.com/g-truc/glm/releases/tag/0.9.8.3) - 2016-11-12\n#### Improvements:\n- Broader support of `GLM_FORCE_UNRESTRICTED_GENTYPE` #378\n\n#### Fixes:\n- Fixed Android build error with C++11 compiler but C++98 STL #284 #564\n- Fixed *GLM_GTX_transform2* shear* functions #403\n- Fixed interaction between `GLM_FORCE_UNRESTRICTED_GENTYPE` and `glm::ortho` function #568\n- Fixed `glm::bitCount` with AVX on 32 bit builds #567\n- Fixed *CMake* `find_package` with version specification #572 #573\n\n---\n### [GLM 0.9.8.2](https://github.com/g-truc/glm/releases/tag/0.9.8.2) - 2016-11-01\n#### Improvements:\n- Added *Visual C++* 15 detection\n- Added *Clang* 4.0 detection\n- Added warning messages when using `GLM_FORCE_CXX**` but the compiler\n  is known to not fully support the requested C++ version #555\n- Refactored `GLM_COMPILER_VC` values\n- Made quat, vec, mat type component `length()` static #565\n\n#### Fixes:\n- Fixed *Visual C++* `constexpr` build error #555, #556\n\n---\n### [GLM 0.9.8.1](https://github.com/g-truc/glm/releases/tag/0.9.8.1) - 2016-09-25\n#### Improvements:\n- Optimized quaternion `glm::log` function #554\n\n#### Fixes:\n- Fixed *GCC* warning filtering, replaced -pedantic by -Wpedantic\n- Fixed SIMD faceforward bug. #549\n- Fixed *GCC* 4.8 with C++11 compilation option #550\n- Fixed *Visual Studio* aligned type W4 warning #548\n- Fixed packing/unpacking function fixed for 5_6_5 and 5_5_5_1 #552\n\n---\n### [GLM 0.9.8.0](https://github.com/g-truc/glm/releases/tag/0.9.8.0) - 2016-09-11\n#### Features:\n- Added right and left handed projection and clip control support #447 #415 #119\n- Added `glm::compNormalize` and `glm::compScale` functions to *GLM_GTX_component_wise*\n- Added `glm::packF3x9_E1x5` and `glm::unpackF3x9_E1x5` to *GLM_GTC_packing* for RGB9E5 #416\n- Added `(un)packHalf` to *GLM_GTC_packing*\n- Added `(un)packUnorm` and `(un)packSnorm` to *GLM_GTC_packing*\n- Added 16bit pack and unpack to *GLM_GTC_packing*\n- Added 8bit pack and unpack to *GLM_GTC_packing*\n- Added missing `bvec*` \u0026\u0026 and || operators\n- Added `glm::iround` and `glm::uround` to *GLM_GTC_integer*, fast round on positive values\n- Added raw SIMD API\n- Added 'aligned' qualifiers\n- Added *GLM_GTC_type_aligned* with aligned *vec* types\n- Added *GLM_GTC_functions* extension\n- Added quaternion version of `glm::isnan` and `glm::isinf` #521\n- Added `glm::lowestBitValue` to *GLM_GTX_bit* #536\n- Added `GLM_FORCE_UNRESTRICTED_GENTYPE` allowing non basic `genType` #543\n\n#### Improvements:\n- Improved SIMD and swizzle operators interactions with *GCC* and *Clang* #474\n- Improved *GLM_GTC_random* `linearRand` documentation\n- Improved *GLM_GTC_reciprocal* documentation\n- Improved `GLM_FORCE_EXPLICIT_CTOR` coverage #481\n- Improved *OpenMP* support detection for *Clang*, *GCC*, *ICC* and *VC*\n- Improved *GLM_GTX_wrap* for SIMD friendliness\n- Added `constexpr` for `*vec*`, `*mat*`, `*quat*` and `*dual_quat*` types #493\n- Added *NEON* instruction set detection\n- Added *MIPS* CPUs detection\n- Added *PowerPC* CPUs detection\n- Use *Cuda* built-in function for abs function implementation with Cuda compiler\n- Factorized `GLM_COMPILER_LLVM` and `GLM_COMPILER_APPLE_CLANG` into `GLM_COMPILER_CLANG`\n- No more warnings for use of long long\n- Added more information to build messages\n\n#### Fixes:\n- Fixed *GLM_GTX_extended_min_max* filename typo #386\n- Fixed `glm::intersectRayTriangle` to not do any unintentional backface culling\n- Fixed long long warnings when using C++98 on *GCC* and *Clang* #482\n- Fixed sign with signed integer function on non-x86 architecture\n- Fixed strict aliasing warnings #473\n- Fixed missing `glm::vec1` overload to `glm::length2` and `glm::distance2` functions #431\n- Fixed *GLM* test '/fp:fast' and '/Za' command-line options are incompatible\n- Fixed quaterion to mat3 cast function `glm::mat3_cast` from *GLM_GTC_quaternion* #542\n- Fixed *GLM_GTX_io* for *Cuda* #547 #546\n\n#### Deprecation:\n- Removed `GLM_FORCE_SIZE_FUNC` define\n- Deprecated *GLM_GTX_simd_vec4* extension\n- Deprecated *GLM_GTX_simd_mat4* extension\n- Deprecated *GLM_GTX_simd_quat* extension\n- Deprecated `GLM_SWIZZLE`, use `GLM_FORCE_SWIZZLE` instead\n- Deprecated `GLM_MESSAGES`, use `GLM_FORCE_MESSAGES` instead\n\n---\n### [GLM 0.9.7.6](https://github.com/g-truc/glm/releases/tag/0.9.7.6) - 2016-07-16\n#### Improvements:\n- Added pkg-config file #509\n- Updated list of compiler versions detected\n- Improved C++ 11 STL detection #523\n\n#### Fixes:\n- Fixed STL for C++11 detection on ICC #510\n- Fixed missing vec1 overload to length2 and distance2 functions #431\n- Fixed long long warnings when using C++98 on GCC and Clang #482\n- Fixed scalar reciprocal functions (GTC_reciprocal) #520\n\n---\n### [GLM 0.9.7.5](https://github.com/g-truc/glm/releases/tag/0.9.7.5) - 2016-05-24\n#### Improvements:\n- Added Visual C++ Clang toolset detection\n\n#### Fixes:\n- Fixed uaddCarry warning #497\n- Fixed roundPowerOfTwo and floorPowerOfTwo #503\n- Fixed Visual C++ SIMD instruction set automatic detection in 64 bits\n- Fixed to_string when used with GLM_FORCE_INLINE #506\n- Fixed GLM_FORCE_INLINE with binary vec4 operators\n- Fixed GTX_extended_min_max filename typo #386\n- Fixed intersectRayTriangle to not do any unintentional backface culling\n\n---\n### [GLM 0.9.7.4](https://github.com/g-truc/glm/releases/tag/0.9.7.4) - 2016-03-19\n#### Fixes:\n- Fixed asinh and atanh warning with C++98 STL #484\n- Fixed polar coordinates function latitude #485\n- Fixed outerProduct definitions and operator signatures for mat2x4 and vec4 #475\n- Fixed eulerAngles precision error, returns NaN  #451\n- Fixed undefined reference errors #489\n- Fixed missing GLM_PLATFORM_CYGWIN declaration #495\n- Fixed various undefined reference errors #490\n\n---\n### [GLM 0.9.7.3](https://github.com/g-truc/glm/releases/tag/0.9.7.3) - 2016-02-21\n#### Improvements:\n- Added AVX512 detection\n\n#### Fixes:\n- Fixed CMake policy warning\n- Fixed GCC 6.0 detection #477\n- Fixed Clang build on Windows #479\n- Fixed 64 bits constants warnings on GCC #463\n\n---\n### [GLM 0.9.7.2](https://github.com/g-truc/glm/releases/tag/0.9.7.2) - 2016-01-03\n#### Fixes:\n- Fixed GTC_round floorMultiple/ceilMultiple #412\n- Fixed GTC_packing unpackUnorm3x10_1x2 #414\n- Fixed GTC_matrix_inverse affineInverse #192\n- Fixed ICC on Linux build errors #449\n- Fixed ldexp and frexp compilation errors\n- Fixed \"Declaration shadows a field\" warning #468\n- Fixed 'GLM_COMPILER_VC2005 is not defined' warning #468\n- Fixed various 'X is not defined' warnings #468\n- Fixed missing unary + operator #435\n- Fixed Cygwin build errors when using C++11 #405\n\n---\n### [GLM 0.9.7.1](https://github.com/g-truc/glm/releases/tag/0.9.7.1) - 2015-09-07\n#### Improvements:\n- Improved constexpr for constant functions coverage #198\n- Added to_string for quat and dual_quat in GTX_string_cast #375\n- Improved overall execution time of unit tests #396\n\n#### Fixes:\n- Fixed strict alignment warnings #235 #370\n- Fixed link errors on compilers not supported default function #377\n- Fixed compilation warnings in vec4\n- Fixed non-identity quaternions for equal vectors #234\n- Fixed excessive GTX_fast_trigonometry execution time #396\n- Fixed Visual Studio 2015 'hides class member' warnings #394\n- Fixed builtin bitscan never being used #392\n- Removed unused func_noise.* files #398\n\n---\n### [GLM 0.9.7.0](https://github.com/g-truc/glm/releases/tag/0.9.7.0) - 2015-08-02\n#### Features:\n- Added GTC_color_space: convertLinearToSRGB and convertSRGBToLinear functions\n- Added 'fmod' overload to GTX_common with tests #308\n- Left handed perspective and lookAt functions #314\n- Added functions eulerAngleXYZ and extractEulerAngleXYZ #311\n- Added \u003cglm/gtx/hash.hpp\u003e to perform std::hash on GLM types #320 #367\n- Added \u003cglm/gtx/wrap.hpp\u003e for texcoord wrapping\n- Added static components and precision members to all vector and quat types #350\n- Added .gitignore #349\n- Added support of defaulted functions to GLM types, to use them in unions #366\n\n#### Improvements:\n- Changed usage of __has_include to support Intel compiler #307\n- Specialized integer implementation of YCoCg-R #310\n- Don't show status message in 'FindGLM' if 'QUIET' option is set. #317\n- Added master branch continuous integration service on Linux 64 #332\n- Clarified manual regarding angle unit in GLM, added FAQ 11 #326\n- Updated list of compiler versions\n\n#### Fixes:\n- Fixed default precision for quat and dual_quat type #312\n- Fixed (u)int64 MSB/LSB handling on BE archs #306\n- Fixed multi-line comment warning in g++. #315\n- Fixed specifier removal by 'std::make_pair\u003c\u003e' #333\n- Fixed perspective fovy argument documentation #327\n- Removed -m64 causing build issues on Linux 32 #331\n- Fixed isfinite with C++98 compilers #343\n- Fixed Intel compiler build error on Linux #354\n- Fixed use of libstdc++ with Clang #351\n- Fixed quaternion pow #346\n- Fixed decompose warnings #373\n- Fixed matrix conversions #371\n\n#### Deprecation:\n- Removed integer specification for 'mod' in GTC_integer #308\n- Removed GTX_multiple, replaced by GTC_round\n\n---\n### [GLM 0.9.6.3](https://github.com/g-truc/glm/releases/tag/0.9.6.3) - 2015-02-15\n- Fixed Android doesn't have C++ 11 STL #284\n\n---\n### [GLM 0.9.6.2](https://github.com/g-truc/glm/releases/tag/0.9.6.2) - 2015-02-15\n#### Features:\n- Added display of GLM version with other GLM_MESSAGES\n- Added ARM instruction set detection\n\n#### Improvements:\n- Removed assert for perspective with zFar \u003c zNear #298\n- Added Visual Studio natvis support for vec1, quat and dualqual types\n- Cleaned up C++11 feature detections\n- Clarify GLM licensing\n\n#### Fixes:\n- Fixed faceforward build #289\n- Fixed conflict with Xlib #define True 1 #293\n- Fixed decompose function VS2010 templating issues #294\n- Fixed mat4x3 = mat2x3 * mat4x2 operator #297\n- Fixed warnings in F2x11_1x10 packing function in GTC_packing #295\n- Fixed Visual Studio natvis support for vec4 #288\n- Fixed GTC_packing *pack*norm*x* build and added tests #292\n- Disabled GTX_scalar_multiplication for GCC, failing to build tests #242\n- Fixed Visual C++ 2015 constexpr errors: Disabled only partial support\n- Fixed functions not inlined with Clang #302\n- Fixed memory corruption (undefined behaviour) #303\n\n---\n### [GLM 0.9.6.1](https://github.com/g-truc/glm/releases/tag/0.9.6.1) - 2014-12-10\n#### Features:\n- Added GLM_LANG_CXX14_FLAG and GLM_LANG_CXX1Z_FLAG language feature flags\n- Added C++14 detection\n\n#### Improvements:\n- Clean up GLM_MESSAGES compilation log to report only detected capabilities\n\n#### Fixes:\n- Fixed scalar uaddCarry build error with Cuda #276\n- Fixed C++11 explicit conversion operators detection #282\n- Fixed missing explicit conversion when using integer log2 with *vec1 types\n- Fixed 64 bits integer GTX_string_cast to_string on VC 32 bit compiler\n- Fixed Android build issue, STL C++11 is not supported by the NDK #284\n- Fixed unsupported _BitScanForward64 and _BitScanReverse64 in VC10\n- Fixed Visual C++ 32 bit build #283\n- Fixed GLM_FORCE_SIZE_FUNC pragma message\n- Fixed C++98 only build\n- Fixed conflict between GTX_compatibility and GTC_quaternion #286\n- Fixed C++ language restriction using GLM_FORCE_CXX**\n\n---\n### [GLM 0.9.6.0](https://github.com/g-truc/glm/releases/tag/0.9.6.0) - 2014-11-30\n#### Features:\n- Exposed template vector and matrix types in 'glm' namespace #239, #244\n- Added GTX_scalar_multiplication for C++ 11 compiler only #242\n- Added GTX_range for C++ 11 compiler only #240\n- Added closestPointOnLine function for tvec2 to GTX_closest_point #238\n- Added GTC_vec1 extension, *vec1 support to *vec* types\n- Updated GTX_associated_min_max with vec1 support\n- Added support of precision and integers to linearRand #230\n- Added Integer types support to GTX_string_cast #249\n- Added vec3 slerp #237\n- Added GTX_common with isdenomal #223\n- Added GLM_FORCE_SIZE_FUNC to replace .length() by .size() #245\n- Added GLM_FORCE_NO_CTOR_INIT\n- Added 'uninitialize' to explicitly not initialize a GLM type\n- Added GTC_bitfield extension, promoted GTX_bit\n- Added GTC_integer extension, promoted GTX_bit and GTX_integer\n- Added GTC_round extension, promoted GTX_bit\n- Added GLM_FORCE_EXPLICIT_CTOR to require explicit type conversions #269\n- Added GTX_type_aligned for aligned vector, matrix and quaternion types\n\n#### Improvements:\n- Rely on C++11 to implement isinf and isnan\n- Removed GLM_FORCE_CUDA, Cuda is implicitly detected\n- Separated Apple Clang and LLVM compiler detection\n- Used pragma once\n- Undetected C++ compiler automatically compile with GLM_FORCE_CXX98 and \n  GLM_FORCE_PURE\n- Added not function (from GLSL specification) on VC12\n- Optimized bitfieldReverse and bitCount functions\n- Optimized findLSB and findMSB functions.\n- Optimized matrix-vector multiple performance with Cuda #257, #258\n- Reduced integer type redefinitions #233\n- Rewrote GTX_fast_trigonometry #264 #265\n- Made types trivially copyable #263\n- Removed \u003ciostream\u003e in GLM tests\n- Used std features within GLM without redeclaring\n- Optimized cot function #272\n- Optimized sign function #272\n- Added explicit cast from quat to mat3 and mat4 #275\n\n#### Fixes:\n- Fixed std::nextafter not supported with C++11 on Android #217\n- Fixed missing value_type for dual quaternion\n- Fixed return type of dual quaternion length\n- Fixed infinite loop in isfinite function with GCC #221\n- Fixed Visual Studio 14 compiler warnings\n- Fixed implicit conversion from another tvec2 type to another tvec2 #241\n- Fixed lack of consistency of quat and dualquat constructors\n- Fixed uaddCarray #253\n- Fixed float comparison warnings #270\n\n#### Deprecation:\n- Requires Visual Studio 2010, GCC 4.2, Apple Clang 4.0, LLVM 3.0, Cuda 4, ICC 2013 or a C++98 compiler\n- Removed degrees for function parameters\n- Removed GLM_FORCE_RADIANS, active by default\n- Removed VC 2005 / 8 and 2008 / 9 support\n- Removed GCC 3.4 to 4.3 support\n- Removed LLVM GCC support\n- Removed LLVM 2.6 to 3.1 support\n- Removed CUDA 3.0 to 3.2 support\n\n---\n### [GLM 0.9.5.4 - 2014-06-21](https://github.com/g-truc/glm/releases/tag/0.9.5.4)\n- Fixed non-utf8 character #196\n- Added FindGLM install for CMake #189\n- Fixed GTX_color_space - saturation #195\n- Fixed glm::isinf and glm::isnan for with Android NDK 9d #191\n- Fixed builtin GLM_ARCH_SSE4 #204\n- Optimized Quaternion vector rotation #205\n- Fixed missing doxygen @endcond tag #211\n- Fixed instruction set detection with Clang #158\n- Fixed orientate3 function #207\n- Fixed lerp when cosTheta is close to 1 in quaternion slerp #210\n- Added GTX_io for io with \u003ciostream\u003e #144\n- Fixed fastDistance ambiguity #215\n- Fixed tweakedInfinitePerspective #208 and added user-defined epsilon to\n  tweakedInfinitePerspective\n- Fixed std::copy and std::vector with GLM types #214\n- Fixed strict aliasing issues #212, #152\n- Fixed std::nextafter not supported with C++11 on Android #213\n- Fixed corner cases in exp and log functions for quaternions #199\n\n---\n### GLM 0.9.5.3 - 2014-04-02\n- Added instruction set auto detection with Visual C++ using _M_IX86_FP - /arch\n  compiler argument\n- Fixed GTX_raw_data code dependency\n- Fixed GCC instruction set detection\n- Added GLM_GTX_matrix_transform_2d extension (#178, #176)\n- Fixed CUDA issues (#169, #168, #183, #182)\n- Added support for all extensions but GTX_string_cast to CUDA\n- Fixed strict aliasing warnings in GCC 4.8.1 / Android NDK 9c (#152)\n- Fixed missing bitfieldInterleave definisions\n- Fixed usubBorrow (#171)\n- Fixed eulerAngle*** not consistent for right-handed coordinate system (#173)\n- Added full tests for eulerAngle*** functions (#173)\n- Added workaround for a CUDA compiler bug (#186, #185)\n\n---\n### GLM 0.9.5.2 - 2014-02-08\n- Fixed initializer list ambiguity (#159, #160)\n- Fixed warnings with the Android NDK 9c\n- Fixed non power of two matrix products\n- Fixed mix function link error\n- Fixed SSE code included in GLM tests on \"pure\" platforms\n- Fixed undefined reference to fastInverseSqrt (#161)\n- Fixed GLM_FORCE_RADIANS with \u003cglm/ext.hpp\u003e build error (#165)\n- Fix dot product clamp range for vector angle functions. (#163)\n- Tentative fix for strict aliasing warning in GCC 4.8.1 / Android NDK 9c (#152)\n- Fixed GLM_GTC_constants description brief (#162)\n\n---\n### GLM 0.9.5.1 - 2014-01-11\n- Fixed angle and orientedAngle that sometimes return NaN values (#145)\n- Deprecated degrees for function parameters and display a message\n- Added possible static_cast conversion of GLM types (#72)\n- Fixed error 'inverse' is not a member of 'glm' from glm::unProject (#146)\n- Fixed mismatch between some declarations and definitions\n- Fixed inverse link error when using namespace glm; (#147)\n- Optimized matrix inverse and division code (#149)\n- Added intersectRayPlane function (#153)\n- Fixed outerProduct return type (#155)\n\n---\n### GLM 0.9.5.0 - 2013-12-25\n- Added forward declarations (glm/fwd.hpp) for faster compilations\n- Added per feature headers\n- Minimized GLM internal dependencies\n- Improved Intel Compiler detection\n- Added bitfieldInterleave and _mm_bit_interleave_si128 functions\n- Added GTX_scalar_relational\n- Added GTX_dual_quaternion\n- Added rotation function to GTX_quaternion (#22)\n- Added precision variation of each type\n- Added quaternion comparison functions\n- Fixed GTX_multiple for negative value\n- Removed GTX_ocl_type extension\n- Fixed post increment and decrement operators\n- Fixed perspective with zNear == 0 (#71)\n- Removed l-value swizzle operators\n- Cleaned up compiler detection code for unsupported compilers\n- Replaced C cast by C++ casts\n- Fixed .length() that should return a int and not a size_t\n- Added GLM_FORCE_SIZE_T_LENGTH and glm::length_t\n- Removed unnecessary conversions\n- Optimized packing and unpacking functions\n- Removed the normalization of the up argument of lookAt function (#114)\n- Added low precision specializations of inversesqrt\n- Fixed ldexp and frexp implementations\n- Increased assert coverage\n- Increased static_assert coverage\n- Replaced GLM traits by STL traits when possible\n- Allowed including individual core feature\n- Increased unit tests completeness\n- Added creating of a quaternion from two vectors\n- Added C++11 initializer lists\n- Fixed umulExtended and imulExtended implementations for vector types (#76)\n- Fixed CUDA coverage for GTC extensions\n- Added GTX_io extension\n- Improved GLM messages enabled when defining GLM_MESSAGES\n- Hidden matrix_inverse function implementation detail into private section\n\n---\n### [GLM 0.9.4.6](https://github.com/g-truc/glm/releases/tag/0.9.4.6) - 2013-09-20\n- Fixed detection to select the last known compiler if newer version #106\n- Fixed is_int and is_uint code duplication with GCC and C++11 #107 \n- Fixed test suite build while using Clang in C++11 mode\n- Added c++1y mode support in CMake test suite\n- Removed ms extension mode to CMake when no using Visual C++\n- Added pedantic mode to CMake test suite for Clang and GCC\n- Added use of GCC frontend on Unix for ICC and Visual C++ fronted on Windows\n  for ICC\n- Added compilation errors for unsupported compiler versions\n- Fixed glm::orientation with GLM_FORCE_RADIANS defined #112\n- Fixed const ref issue on assignment operator taking a scalar parameter #116\n- Fixed glm::eulerAngleY implementation #117\n\n---\n### GLM 0.9.4.5 - 2013-08-12\n- Fixed CUDA support\n- Fixed inclusion of intrinsics in \"pure\" mode #92\n- Fixed language detection on GCC when the C++0x mode isn't enabled #95\n- Fixed issue #97: register is deprecated in C++11\n- Fixed issue #96: CUDA issues\n- Added Windows CE detection #92\n- Added missing value_ptr for quaternions #99\n\n---\n### GLM 0.9.4.4 - 2013-05-29\n- Fixed slerp when costheta is close to 1 #65\n- Fixed mat4x2 value_type constructor #70\n- Fixed glm.natvis for Visual C++ 12 #82\n- Added assert in inversesqrt to detect division by zero #61\n- Fixed missing swizzle operators #86\n- Fixed CUDA warnings #86\n- Fixed GLM natvis for VC11 #82\n- Fixed GLM_GTX_multiple with negative values #79\n- Fixed glm::perspective when zNear is zero #71\n\n---\n### GLM 0.9.4.3 - 2013-03-20\n- Detected qualifier for Clang\n- Fixed C++11 mode for GCC, couldn't be enabled without MS extensions\n- Fixed squad, intermediate and exp quaternion functions\n- Fixed GTX_polar_coordinates euclidean function, takes a vec2 instead of a vec3\n- Clarify the license applying on the manual\n- Added a docx copy of the manual\n- Fixed GLM_GTX_matrix_interpolation\n- Fixed isnan and isinf on Android with Clang\n- Autodetected C++ version using __cplusplus value\n- Fixed mix for bool and bvec* third parameter\n\n---\n### GLM 0.9.4.2 - 2013-02-14\n- Fixed compAdd from GTX_component_wise\n- Fixed SIMD support for Intel compiler on Windows\n- Fixed isnan and isinf for CUDA compiler\n- Fixed GLM_FORCE_RADIANS on glm::perspective\n- Fixed GCC warnings\n- Fixed packDouble2x32 on Xcode\n- Fixed mix for vec4 SSE implementation\n- Fixed 0x2013 dash character in comments that cause issue in Windows \n  Japanese mode\n- Fixed documentation warnings\n- Fixed CUDA warnings\n\n---\n### GLM 0.9.4.1 - 2012-12-22\n- Improved half support: -0.0 case and implicit conversions\n- Fixed Intel Composer Compiler support on Linux\n- Fixed interaction between quaternion and euler angles\n- Fixed GTC_constants build\n- Fixed GTX_multiple\n- Fixed quat slerp using mix function when cosTheta close to 1\n- Improved fvec4SIMD and fmat4x4SIMD implementations\n- Fixed assert messages\n- Added slerp and lerp quaternion functions and tests\n\n---\n### GLM 0.9.4.0 - 2012-11-18\n- Added Intel Composer Compiler support\n- Promoted GTC_espilon extension\n- Promoted GTC_ulp extension\n- Removed GLM website from the source repository\n- Added GLM_FORCE_RADIANS so that all functions takes radians for arguments\n- Fixed detection of Clang and LLVM GCC on MacOS X\n- Added debugger visualizers for Visual C++ 2012\n- Requires Visual Studio 2005, GCC 4.2, Clang 2.6, Cuda 3, ICC 2013 or a C++98 compiler\n\n---\n### [GLM 0.9.3.4](https://github.com/g-truc/glm/releases/tag/0.9.3.4) - 2012-06-30\n- Added SSE4 and AVX2 detection.\n- Removed VIRTREV_xstream and the incompatibility generated with GCC\n- Fixed C++11 compiler option for GCC\n- Removed MS language extension option for GCC (not fonctionnal)\n- Fixed bitfieldExtract for vector types\n- Fixed warnings\n- Fixed SSE includes\n\n---\n### GLM 0.9.3.3 - 2012-05-10\n- Fixed isinf and isnan\n- Improved compatibility with Intel compiler\n- Added CMake test build options: SIMD, C++11, fast math and MS land ext\n- Fixed SIMD mat4 test on GCC\n- Fixed perspectiveFov implementation\n- Fixed matrixCompMult for none-square matrices\n- Fixed namespace issue on stream operators\n- Fixed various warnings\n- Added VC11 support\n\n---\n### GLM 0.9.3.2 - 2012-03-15\n- Fixed doxygen documentation\n- Fixed Clang version detection\n- Fixed simd mat4 /= operator\n\n---\n### GLM 0.9.3.1 - 2012-01-25\n- Fixed platform detection\n- Fixed warnings\n- Removed detail code from Doxygen doc\n\n---\n### GLM 0.9.3.0 - 2012-01-09\n- Added CPP Check project\n- Fixed conflict with Windows headers\n- Fixed isinf implementation\n- Fixed Boost conflict\n- Fixed warnings\n\n---\n### GLM 0.9.3.B - 2011-12-12\n- Added support for Chrone Native Client\n- Added epsilon constant\n- Removed value_size function from vector types\n- Fixed roundEven on GCC\n- Improved API documentation\n- Fixed modf implementation\n- Fixed step function accuracy\n- Fixed outerProduct\n\n---\n### GLM 0.9.3.A - 2011-11-11\n- Improved doxygen documentation\n- Added new swizzle operators for C++11 compilers\n- Added new swizzle operators declared as functions\n- Added GLSL 4.20 length for vector and matrix types\n- Promoted GLM_GTC_noise extension: simplex, perlin, periodic noise functions\n- Promoted GLM_GTC_random extension: linear, gaussian and various random number \ngeneration distribution\n- Added GLM_GTX_constants: provides useful constants\n- Added extension versioning\n- Removed many unused namespaces\n- Fixed half based type constructors\n- Added GLSL core noise functions\n\n---\n### [GLM 0.9.2.7](https://github.com/g-truc/glm/releases/tag/0.9.2.7) - 2011-10-24\n- Added more swizzling constructors\n- Added missing non-squared matrix products\n\n---\n### [GLM 0.9.2.6](https://github.com/g-truc/glm/releases/tag/0.9.2.6) - 2011-10-01\n- Fixed half based type build on old GCC\n- Fixed /W4 warnings on Visual C++\n- Fixed some missing l-value swizzle operators\n\n---\n### GLM 0.9.2.5 - 2011-09-20\n- Fixed floatBitToXint functions\n- Fixed pack and unpack functions\n- Fixed round functions\n\n---\n### GLM 0.9.2.4 - 2011-09-03\n- Fixed extensions bugs\n\n---\n### GLM 0.9.2.3 - 2011-06-08\n- Fixed build issues\n\n---\n### GLM 0.9.2.2 - 2011-06-02\n- Expend matrix constructors flexibility\n- Improved quaternion implementation\n- Fixed many warnings across platforms and compilers\n\n---\n### GLM 0.9.2.1 - 2011-05-24\n- Automatically detect CUDA support\n- Improved compiler detection\n- Fixed errors and warnings in VC with C++ extensions disabled\n- Fixed and tested GLM_GTX_vector_angle\n- Fixed and tested GLM_GTX_rotate_vector\n\n---\n### GLM 0.9.2.0 - 2011-05-09\n- Added CUDA support\n- Added CTest test suite\n- Added GLM_GTX_ulp extension\n- Added GLM_GTX_noise extension\n- Added GLM_GTX_matrix_interpolation extension\n- Updated quaternion slerp interpolation\n\n---\n### [GLM 0.9.1.3](https://github.com/g-truc/glm/releases/tag/0.9.1.3) - 2011-05-07\n- Fixed bugs\n\n---\n### GLM 0.9.1.2 - 2011-04-15\n- Fixed bugs\n\n---\n### GLM 0.9.1.1 - 2011-03-17\n- Fixed bugs\n\n---\n### GLM 0.9.1.0 - 2011-03-03\n- Fixed bugs\n\n---\n### GLM 0.9.1.B - 2011-02-13\n- Updated API documentation\n- Improved SIMD implementation\n- Fixed Linux build\n\n---\n### [GLM 0.9.0.8](https://github.com/g-truc/glm/releases/tag/0.9.0.8) - 2011-02-13\n- Added quaternion product operator.\n- Clarify that GLM is a header only library.\n\n---\n### GLM 0.9.1.A - 2011-01-31\n- Added SIMD support\n- Added new swizzle functions\n- Improved static assert error message with C++0x static_assert\n- New setup system\n- Reduced branching\n- Fixed trunc implementation\n\n---\n### [GLM 0.9.0.7](https://github.com/g-truc/glm/releases/tag/0.9.0.7) - 2011-01-30\n- Added GLSL 4.10 packing functions\n- Added == and != operators for every types.\n\n---\n### GLM 0.9.0.6 - 2010-12-21\n- Many matrices bugs fixed\n\n---\n### GLM 0.9.0.5 - 2010-11-01\n- Improved Clang support\n- Fixed bugs\n\n---\n### GLM 0.9.0.4 - 2010-10-04\n- Added autoexp for GLM\n- Fixed bugs\n\n---\n### GLM 0.9.0.3 - 2010-08-26\n- Fixed non-squared matrix operators\n\n---\n### GLM 0.9.0.2 - 2010-07-08\n- Added GLM_GTX_int_10_10_10_2\n- Fixed bugs\n\n---\n### GLM 0.9.0.1 - 2010-06-21\n- Fixed extensions errors\n\n---\n### GLM 0.9.0.0 - 2010-05-25\n- Objective-C support\n- Fixed warnings\n- Updated documentation\n\n---\n### GLM 0.9.B.2 - 2010-04-30\n- Git transition\n- Removed experimental code from releases\n- Fixed bugs\n\n---\n### GLM 0.9.B.1 - 2010-04-03\n- Based on GLSL 4.00 specification\n- Added the new core functions\n- Added some implicit conversion support\n\n---\n### GLM 0.9.A.2 - 2010-02-20\n- Improved some possible errors messages\n- Improved declarations and definitions match\n\n---\n### GLM 0.9.A.1 - 2010-02-09\n- Removed deprecated features\n- Internal redesign\n\n---\n### GLM 0.8.4.4 final - 2010-01-25\n- Fixed warnings\n\n---\n### GLM 0.8.4.3 final - 2009-11-16\n- Fixed Half float arithmetic\n- Fixed setup defines\n\n---\n### GLM 0.8.4.2 final - 2009-10-19\n- Fixed Half float adds\n\n---\n### GLM 0.8.4.1 final - 2009-10-05\n- Updated documentation\n- Fixed MacOS X build\n\n---\n### GLM 0.8.4.0 final - 2009-09-16\n- Added GCC 4.4 and VC2010 support\n- Added matrix optimizations\n\n---\n### GLM 0.8.3.5 final - 2009-08-11\n- Fixed bugs\n\n---\n### GLM 0.8.3.4 final - 2009-08-10\n- Updated GLM according GLSL 1.5 spec\n- Fixed bugs\n\n---\n### GLM 0.8.3.3 final - 2009-06-25\n- Fixed bugs\n\n---\n### GLM 0.8.3.2 final - 2009-06-04\n- Added GLM_GTC_quaternion\n- Added GLM_GTC_type_precision\n\n---\n### GLM 0.8.3.1 final - 2009-05-21\n- Fixed old extension system.\n\n---\n### GLM 0.8.3.0 final - 2009-05-06\n- Added stable extensions.\n- Added new extension system.\n\n---\n### GLM 0.8.2.3 final - 2009-04-01\n- Fixed bugs.\n\n---\n### GLM 0.8.2.2 final - 2009-02-24\n- Fixed bugs.\n\n---\n### GLM 0.8.2.1 final - 2009-02-13\n- Fixed bugs.\n\n---\n### GLM 0.8.2 final - 2009-01-21\n- Fixed bugs.\n\n---\n### GLM 0.8.1 final - 2008-10-30\n- Fixed bugs.\n\n---\n### GLM 0.8.0 final - 2008-10-23\n- New method to use extension.\n\n---\n### GLM 0.8.0 beta3 - 2008-10-10\n- Added CMake support for GLM tests.\n\n---\n### GLM 0.8.0 beta2 - 2008-10-04\n- Improved half scalars and vectors support.\n\n---\n### GLM 0.8.0 beta1 - 2008-09-26\n- Improved GLSL conformance\n- Added GLSL 1.30 support\n- Improved API documentation\n\n---\n### GLM 0.7.6 final - 2008-08-08\n- Improved C++ standard conformance\n- Added Static assert for types checking\n\n---\n### GLM 0.7.5 final - 2008-07-05\n- Added build message system with Visual Studio\n- Pedantic build with GCC\n\n---\n### GLM 0.7.4 final - 2008-06-01\n- Added external dependencies system.\n\n---\n### GLM 0.7.3 final - 2008-05-24\n- Fixed bugs\n- Added new extension group\n\n---\n### GLM 0.7.2 final - 2008-04-27\n- Updated documentation\n- Added preprocessor options\n\n---\n### GLM 0.7.1 final - 2008-03-24\n- Disabled half on GCC\n- Fixed extensions\n\n---\n### GLM 0.7.0 final - 2008-03-22\n- Changed to MIT license\n- Added new documentation\n\n---\n### GLM 0.6.4 - 2007-12-10\n- Fixed swizzle operators\n\n---\n### GLM 0.6.3 - 2007-11-05\n- Fixed type data accesses\n- Fixed 3DSMax sdk conflict\n\n---\n### GLM 0.6.2 - 2007-10-08\n- Fixed extension\n\n---\n### GLM 0.6.1 - 2007-10-07\n- Fixed a namespace error\n- Added extensions\n\n---\n### GLM 0.6.0 : 2007-09-16\n- Added new extension namespace mecanium\n- Added Automatic compiler detection\n\n---\n### GLM 0.5.1 - 2007-02-19\n- Fixed swizzle operators\n\n---\n### GLM 0.5.0 - 2007-01-06\n- Upgraded to GLSL 1.2\n- Added swizzle operators\n- Added setup settings\n\n---\n### GLM 0.4.1 - 2006-05-22\n- Added OpenGL examples\n\n---\n### GLM 0.4.0 - 2006-05-17\n- Added missing operators to vec* and mat*\n- Added first GLSL 1.2 features\n- Fixed windows.h before glm.h when windows.h required\n\n---\n### GLM 0.3.2 - 2006-04-21\n- Fixed texcoord components access.\n- Fixed mat4 and imat4 division operators.\n\n---\n### GLM 0.3.1 - 2006-03-28\n- Added GCC 4.0 support under MacOS X.\n- Added GCC 4.0 and 4.1 support under Linux.\n- Added code optimisations.\n\n---\n### GLM 0.3 - 2006-02-19\n- Improved GLSL type conversion and construction compliance.\n- Added experimental extensions.\n- Added Doxygen Documentation.\n- Added code optimisations.\n- Fixed bugs.\n\n---\n### GLM 0.2 - 2005-05-05\n- Improve adaptative from GLSL.\n- Add experimental extensions based on OpenGL extension process.\n- Fixed bugs.\n\n---\n### GLM 0.1 - 2005-02-21\n- Add vec2, vec3, vec4 GLSL types\n- Add ivec2, ivec3, ivec4 GLSL types\n- Add bvec2, bvec3, bvec4 GLSL types\n- Add mat2, mat3, mat4 GLSL types\n- Add almost all functions\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fg-truc%2Fglm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fg-truc%2Fglm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fg-truc%2Fglm/lists"}