diff --git a/doc/src/data.xml b/doc/src/data.xml index 6dda0edc..3bb0402e 100644 --- a/doc/src/data.xml +++ b/doc/src/data.xml @@ -3,6 +3,7 @@
+ @@ -66,6 +67,7 @@
+ @@ -156,9 +158,19 @@ + + + Fixed few bugs reported by GLM users. Thanks! + + + GLM 0.9.2.4 (zip) + GLM 0.9.2.4 (7z) + Submit a bug report + + - This version only fixes a couple a major bugs introduced in GLM 0.9.2.2. + This version only fixes a couple of major bugs introduced in GLM 0.9.2.2. GLM 0.9.2.3 (zip) diff --git a/glm/core/_detail.hpp b/glm/core/_detail.hpp index 8e0b393c..069a9831 100644 --- a/glm/core/_detail.hpp +++ b/glm/core/_detail.hpp @@ -37,7 +37,7 @@ namespace detail { class thalf; -#if(__STDC_VERSION__ >= 199901L) // C99 detected, 64 bit types available +#if(__STDC_VERSION__ && (__STDC_VERSION__ >= 199901L)) // C99 detected, 64 bit types available typedef int64_t sint64; typedef uint64_t uint64; #elif(GLM_COMPILER & GLM_COMPILER_VC) diff --git a/glm/gtc/quaternion.hpp b/glm/gtc/quaternion.hpp index 5670ee07..1e997bfe 100644 --- a/glm/gtc/quaternion.hpp +++ b/glm/gtc/quaternion.hpp @@ -79,7 +79,7 @@ namespace detail // Convertions //explicit tquat(valType const & pitch, valType const & yaw, valType const & roll); - //! pitch, yaw, roll + //! Build a quaternion from euler angles (pitch, yaw, roll), in radians. explicit tquat( tvec3 const & eulerAngles); explicit tquat( @@ -248,7 +248,7 @@ namespace detail //! Quaternion of high precision floating-point numbers. //! From GLM_GTC_quaternion extension. typedef detail::tquat highp_quat; - + /// @} } //namespace glm diff --git a/glm/gtc/quaternion.inl b/glm/gtc/quaternion.inl index 3b3a7699..426a20f4 100644 --- a/glm/gtc/quaternion.inl +++ b/glm/gtc/quaternion.inl @@ -490,7 +490,8 @@ namespace detail{ typename detail::tquat::value_type AngleRad = radians(angle); typename detail::tquat::value_type fSin = sin(AngleRad * T(0.5)); - return cross(q, detail::tquat(cos(AngleRad * T(0.5)), Tmp.x * fSin, Tmp.y * fSin, Tmp.z * fSin)); + return q * detail::tquat(cos(AngleRad * T(0.5)), Tmp.x * fSin, Tmp.y * fSin, Tmp.z * fSin); + //return gtc::quaternion::cross(q, detail::tquat(cos(AngleRad * T(0.5)), Tmp.x * fSin, Tmp.y * fSin, Tmp.z * fSin)); } template diff --git a/glm/gtx/color_cast.inl b/glm/gtx/color_cast.inl index bad1f926..7c489b16 100644 --- a/glm/gtx/color_cast.inl +++ b/glm/gtx/color_cast.inl @@ -201,9 +201,9 @@ template <> GLM_FUNC_QUALIFIER f16vec3 f16_rgbx_cast(uint32 color) { f16vec3 result; - result.x = f16(static_cast(color >> 0) / static_cast(255)); - result.y = f16(static_cast(color >> 8) / static_cast(255)); - result.z = f16(static_cast(color >> 16) / static_cast(255)); + result.x = gtc::type_precision::f16(static_cast((color >> 0) & 0xFF) / static_cast(255)); + result.y = gtc::type_precision::f16(static_cast((color >> 8) & 0xFF) / static_cast(255)); + result.z = gtc::type_precision::f16(static_cast((color >> 16) & 0xFF) / static_cast(255)); return result; } @@ -211,9 +211,9 @@ template <> GLM_FUNC_QUALIFIER f16vec3 f16_xrgb_cast(uint32 color) { f16vec3 result; - result.x = f16(static_cast(color >> 8) / static_cast(255)); - result.y = f16(static_cast(color >> 16) / static_cast(255)); - result.z = f16(static_cast(color >> 24) / static_cast(255)); + result.x = gtc::type_precision::f16(static_cast((color >> 8) & 0xFF) / static_cast(255)); + result.y = gtc::type_precision::f16(static_cast((color >> 16) & 0xFF) / static_cast(255)); + result.z = gtc::type_precision::f16(static_cast((color >> 24) & 0xFF) / static_cast(255)); return result; } @@ -221,9 +221,9 @@ template <> GLM_FUNC_QUALIFIER f16vec3 f16_bgrx_cast(uint32 color) { f16vec3 result; - result.x = f16(static_cast(color >> 16) / static_cast(255)); - result.y = f16(static_cast(color >> 8) / static_cast(255)); - result.z = f16(static_cast(color >> 0) / static_cast(255)); + result.x = f16(static_cast((color >> 16) & 0xFF) / static_cast(255)); + result.y = f16(static_cast((color >> 8) & 0xFF) / static_cast(255)); + result.z = f16(static_cast((color >> 0) & 0xFF) / static_cast(255)); return result; } @@ -231,9 +231,9 @@ template <> GLM_FUNC_QUALIFIER f16vec3 f16_xbgr_cast(uint32 color) { f16vec3 result; - result.x = f16(static_cast(color >> 24) / static_cast(255)); - result.y = f16(static_cast(color >> 16) / static_cast(255)); - result.z = f16(static_cast(color >> 8) / static_cast(255)); + result.x = f16(static_cast((color >> 24) & 0xFF) / static_cast(255)); + result.y = f16(static_cast((color >> 16) & 0xFF) / static_cast(255)); + result.z = f16(static_cast((color >> 8) & 0xFF) / static_cast(255)); return result; } @@ -241,10 +241,10 @@ template <> GLM_FUNC_QUALIFIER f16vec4 f16_rgba_cast(uint32 color) { f16vec4 result; - result.x = f16(static_cast(color >> 0) / static_cast(255)); - result.y = f16(static_cast(color >> 8) / static_cast(255)); - result.z = f16(static_cast(color >> 16) / static_cast(255)); - result.w = f16(static_cast(color >> 24) / static_cast(255)); + result.x = f16(static_cast((color >> 0) & 0xFF) / static_cast(255)); + result.y = f16(static_cast((color >> 8) & 0xFF) / static_cast(255)); + result.z = f16(static_cast((color >> 16) & 0xFF) / static_cast(255)); + result.w = f16(static_cast((color >> 24) & 0xFF) / static_cast(255)); return result; } @@ -252,10 +252,10 @@ template <> GLM_FUNC_QUALIFIER f16vec4 f16_argb_cast(uint32 color) { f16vec4 result; - result.x = f16(static_cast(color >> 8) / static_cast(255)); - result.y = f16(static_cast(color >> 16) / static_cast(255)); - result.z = f16(static_cast(color >> 24) / static_cast(255)); - result.w = f16(static_cast(color >> 0) / static_cast(255)); + result.x = f16(static_cast((color >> 8) & 0xFF) / static_cast(255)); + result.y = f16(static_cast((color >> 16) & 0xFF) / static_cast(255)); + result.z = f16(static_cast((color >> 24) & 0xFF) / static_cast(255)); + result.w = f16(static_cast((color >> 0) & 0xFF) / static_cast(255)); return result; } @@ -263,10 +263,10 @@ template <> GLM_FUNC_QUALIFIER f16vec4 f16_bgra_cast(uint32 color) { f16vec4 result; - result.x = f16(static_cast(color >> 16) / static_cast(255)); - result.y = f16(static_cast(color >> 8) / static_cast(255)); - result.z = f16(static_cast(color >> 0) / static_cast(255)); - result.w = f16(static_cast(color >> 24) / static_cast(255)); + result.x = f16(static_cast((color >> 16) & 0xFF) / static_cast(255)); + result.y = f16(static_cast((color >> 8) & 0xFF) / static_cast(255)); + result.z = f16(static_cast((color >> 0) & 0xFF) / static_cast(255)); + result.w = f16(static_cast((color >> 24) & 0xFF) / static_cast(255)); return result; } @@ -274,10 +274,10 @@ template <> GLM_FUNC_QUALIFIER f16vec4 f16_abgr_cast(uint32 color) { f16vec4 result; - result.x = f16(static_cast(color >> 24) / static_cast(255)); - result.y = f16(static_cast(color >> 16) / static_cast(255)); - result.z = f16(static_cast(color >> 8) / static_cast(255)); - result.w = f16(static_cast(color >> 0) / static_cast(255)); + result.x = f16(static_cast((color >> 24) & 0xFF) / static_cast(255)); + result.y = f16(static_cast((color >> 16) & 0xFF) / static_cast(255)); + result.z = f16(static_cast((color >> 8) & 0xFF) / static_cast(255)); + result.w = f16(static_cast((color >> 0) & 0xFF) / static_cast(255)); return result; } @@ -291,9 +291,9 @@ template <> GLM_FUNC_QUALIFIER detail::tvec3 f32_rgbx_cast(uint32 color) { detail::tvec3 result; - result.x = static_cast(color >> 0) / static_cast(255); - result.y = static_cast(color >> 8) / static_cast(255); - result.z = static_cast(color >> 16) / static_cast(255); + result.x = static_cast((color >> 0) & 0xFF) / static_cast(255); + result.y = static_cast((color >> 8) & 0xFF) / static_cast(255); + result.z = static_cast((color >> 16) & 0xFF) / static_cast(255); return result; } @@ -301,9 +301,9 @@ template <> GLM_FUNC_QUALIFIER detail::tvec3 f32_xrgb_cast(uint32 color) { detail::tvec3 result; - result.x = static_cast(color >> 8) / static_cast(255); - result.y = static_cast(color >> 16) / static_cast(255); - result.z = static_cast(color >> 24) / static_cast(255); + result.x = static_cast((color >> 8) & 0xFF) / static_cast(255); + result.y = static_cast((color >> 16) & 0xFF) / static_cast(255); + result.z = static_cast((color >> 24) & 0xFF) / static_cast(255); return result; } @@ -311,9 +311,9 @@ template <> GLM_FUNC_QUALIFIER detail::tvec3 f32_bgrx_cast(uint32 color) { detail::tvec3 result; - result.x = static_cast(color >> 16) / static_cast(255); - result.y = static_cast(color >> 8) / static_cast(255); - result.z = static_cast(color >> 0) / static_cast(255); + result.x = static_cast((color >> 16) & 0xFF) / static_cast(255); + result.y = static_cast((color >> 8) & 0xFF) / static_cast(255); + result.z = static_cast((color >> 0) & 0xFF) / static_cast(255); return result; } @@ -321,9 +321,9 @@ template <> GLM_FUNC_QUALIFIER detail::tvec3 f32_xbgr_cast(uint32 color) { detail::tvec3 result; - result.x = static_cast(color >> 24) / static_cast(255); - result.y = static_cast(color >> 16) / static_cast(255); - result.z = static_cast(color >> 8) / static_cast(255); + result.x = static_cast((color >> 24) & 0xFF) / static_cast(255); + result.y = static_cast((color >> 16) & 0xFF) / static_cast(255); + result.z = static_cast((color >> 8) & 0xFF) / static_cast(255); return result; } @@ -331,10 +331,10 @@ template <> GLM_FUNC_QUALIFIER detail::tvec4 f32_rgba_cast(uint32 color) { detail::tvec4 result; - result.x = static_cast(color >> 0) / static_cast(255); - result.y = static_cast(color >> 8) / static_cast(255); - result.z = static_cast(color >> 16) / static_cast(255); - result.w = static_cast(color >> 24) / static_cast(255); + result.x = static_cast((color >> 0) & 0xFF) / static_cast(255); + result.y = static_cast((color >> 8) & 0xFF) / static_cast(255); + result.z = static_cast((color >> 16) & 0xFF) / static_cast(255); + result.w = static_cast((color >> 24) & 0xFF) / static_cast(255); return result; } @@ -342,10 +342,10 @@ template <> GLM_FUNC_QUALIFIER detail::tvec4 f32_argb_cast(uint32 color) { detail::tvec4 result; - result.x = static_cast(color >> 8) / static_cast(255); - result.y = static_cast(color >> 16) / static_cast(255); - result.z = static_cast(color >> 24) / static_cast(255); - result.w = static_cast(color >> 0) / static_cast(255); + result.x = static_cast((color >> 8) & 0xFF) / static_cast(255); + result.y = static_cast((color >> 16) & 0xFF) / static_cast(255); + result.z = static_cast((color >> 24) & 0xFF) / static_cast(255); + result.w = static_cast((color >> 0) & 0xFF) / static_cast(255); return result; } @@ -353,10 +353,10 @@ template <> GLM_FUNC_QUALIFIER detail::tvec4 f32_bgra_cast(uint32 color) { detail::tvec4 result; - result.x = static_cast(color >> 16) / static_cast(255); - result.y = static_cast(color >> 8) / static_cast(255); - result.z = static_cast(color >> 0) / static_cast(255); - result.w = static_cast(color >> 24) / static_cast(255); + result.x = static_cast((color >> 16) & 0xFF) / static_cast(255); + result.y = static_cast((color >> 8) & 0xFF) / static_cast(255); + result.z = static_cast((color >> 0) & 0xFF) / static_cast(255); + result.w = static_cast((color >> 24) & 0xFF) / static_cast(255); return result; } @@ -364,10 +364,10 @@ template <> GLM_FUNC_QUALIFIER detail::tvec4 f32_abgr_cast(uint32 color) { detail::tvec4 result; - result.x = static_cast(color >> 24) / static_cast(255); - result.y = static_cast(color >> 16) / static_cast(255); - result.z = static_cast(color >> 8) / static_cast(255); - result.w = static_cast(color >> 0) / static_cast(255); + result.x = static_cast((color >> 24) & 0xFF) / static_cast(255); + result.y = static_cast((color >> 16) & 0xFF) / static_cast(255); + result.z = static_cast((color >> 8) & 0xFF) / static_cast(255); + result.w = static_cast((color >> 0) & 0xFF) / static_cast(255); return result; } @@ -381,9 +381,9 @@ template <> GLM_FUNC_QUALIFIER detail::tvec3 f64_rgbx_cast(uint32 color) { detail::tvec3 result; - result.x = static_cast(color >> 0) / static_cast(255); - result.y = static_cast(color >> 8) / static_cast(255); - result.z = static_cast(color >> 16) / static_cast(255); + result.x = static_cast((color >> 0) & 0xFF) / static_cast(255); + result.y = static_cast((color >> 8) & 0xFF) / static_cast(255); + result.z = static_cast((color >> 16) & 0xFF) / static_cast(255); return result; } @@ -391,9 +391,9 @@ template <> GLM_FUNC_QUALIFIER detail::tvec3 f64_xrgb_cast(uint32 color) { detail::tvec3 result; - result.x = static_cast(color >> 8) / static_cast(255); - result.y = static_cast(color >> 16) / static_cast(255); - result.z = static_cast(color >> 24) / static_cast(255); + result.x = static_cast((color >> 8) & 0xFF) / static_cast(255); + result.y = static_cast((color >> 16) & 0xFF) / static_cast(255); + result.z = static_cast((color >> 24) & 0xFF) / static_cast(255); return result; } @@ -401,9 +401,9 @@ template <> GLM_FUNC_QUALIFIER detail::tvec3 f64_bgrx_cast(uint32 color) { detail::tvec3 result; - result.x = static_cast(color >> 16) / static_cast(255); - result.y = static_cast(color >> 8) / static_cast(255); - result.z = static_cast(color >> 0) / static_cast(255); + result.x = static_cast((color >> 16) & 0xFF) / static_cast(255); + result.y = static_cast((color >> 8) & 0xFF) / static_cast(255); + result.z = static_cast((color >> 0) & 0xFF) / static_cast(255); return result; } @@ -411,9 +411,9 @@ template <> GLM_FUNC_QUALIFIER detail::tvec3 f64_xbgr_cast(uint32 color) { detail::tvec3 result; - result.x = static_cast(color >> 24) / static_cast(255); - result.y = static_cast(color >> 16) / static_cast(255); - result.z = static_cast(color >> 8) / static_cast(255); + result.x = static_cast((color >> 24) & 0xFF) / static_cast(255); + result.y = static_cast((color >> 16) & 0xFF) / static_cast(255); + result.z = static_cast((color >> 8) & 0xFF) / static_cast(255); return result; } @@ -421,10 +421,10 @@ template <> GLM_FUNC_QUALIFIER detail::tvec4 f64_rgba_cast(uint32 color) { detail::tvec4 result; - result.x = static_cast(color >> 0) / static_cast(255); - result.y = static_cast(color >> 8) / static_cast(255); - result.z = static_cast(color >> 16) / static_cast(255); - result.w = static_cast(color >> 24) / static_cast(255); + result.x = static_cast((color >> 0) & 0xFF) / static_cast(255); + result.y = static_cast((color >> 8) & 0xFF) / static_cast(255); + result.z = static_cast((color >> 16) & 0xFF) / static_cast(255); + result.w = static_cast((color >> 24) & 0xFF) / static_cast(255); return result; } @@ -432,10 +432,10 @@ template <> GLM_FUNC_QUALIFIER detail::tvec4 f64_argb_cast(uint32 color) { detail::tvec4 result; - result.x = static_cast(color >> 8) / static_cast(255); - result.y = static_cast(color >> 16) / static_cast(255); - result.z = static_cast(color >> 24) / static_cast(255); - result.w = static_cast(color >> 0) / static_cast(255); + result.x = static_cast((color >> 8) & 0xFF) / static_cast(255); + result.y = static_cast((color >> 16) & 0xFF) / static_cast(255); + result.z = static_cast((color >> 24) & 0xFF) / static_cast(255); + result.w = static_cast((color >> 0) & 0xFF) / static_cast(255); return result; } @@ -443,10 +443,10 @@ template <> GLM_FUNC_QUALIFIER detail::tvec4 f64_bgra_cast(uint32 color) { detail::tvec4 result; - result.x = static_cast(color >> 16) / static_cast(255); - result.y = static_cast(color >> 8) / static_cast(255); - result.z = static_cast(color >> 0) / static_cast(255); - result.w = static_cast(color >> 24) / static_cast(255); + result.x = static_cast((color >> 16) & 0xFF) / static_cast(255); + result.y = static_cast((color >> 8) & 0xFF) / static_cast(255); + result.z = static_cast((color >> 0) & 0xFF) / static_cast(255); + result.w = static_cast((color >> 24) & 0xFF) / static_cast(255); return result; } @@ -454,10 +454,10 @@ template <> GLM_FUNC_QUALIFIER detail::tvec4 f64_abgr_cast(uint32 color) { detail::tvec4 result; - result.x = static_cast(color >> 24) / static_cast(255); - result.y = static_cast(color >> 16) / static_cast(255); - result.z = static_cast(color >> 8) / static_cast(255); - result.w = static_cast(color >> 0) / static_cast(255); + result.x = static_cast((color >> 24) & 0xFF) / static_cast(255); + result.y = static_cast((color >> 16) & 0xFF) / static_cast(255); + result.z = static_cast((color >> 8) & 0xFF) / static_cast(255); + result.w = static_cast((color >> 0) & 0xFF) / static_cast(255); return result; } @@ -471,9 +471,9 @@ template <> GLM_FUNC_QUALIFIER detail::tvec3 f16_rgbx_cast(uint64 color) { detail::tvec3 result; - result.x = detail::thalf(static_cast(color >> 0) / static_cast(65535)); - result.y = detail::thalf(static_cast(color >> 16) / static_cast(65535)); - result.z = detail::thalf(static_cast(color >> 32) / static_cast(65535)); + result.x = detail::thalf(static_cast((color >> 0) & 0xFFFF) / static_cast(65535)); + result.y = detail::thalf(static_cast((color >> 16) & 0xFFFF) / static_cast(65535)); + result.z = detail::thalf(static_cast((color >> 32) & 0xFFFF) / static_cast(65535)); return result; } @@ -481,9 +481,9 @@ template <> GLM_FUNC_QUALIFIER detail::tvec3 f16_xrgb_cast(uint64 color) { detail::tvec3 result; - result.x = detail::thalf(static_cast(color >> 16) / static_cast(65535)); - result.y = detail::thalf(static_cast(color >> 32) / static_cast(65535)); - result.z = detail::thalf(static_cast(color >> 48) / static_cast(65535)); + result.x = detail::thalf(static_cast((color >> 16) & 0xFFFF) / static_cast(65535)); + result.y = detail::thalf(static_cast((color >> 32) & 0xFFFF) / static_cast(65535)); + result.z = detail::thalf(static_cast((color >> 48) & 0xFFFF) / static_cast(65535)); return result; } @@ -491,9 +491,9 @@ template <> GLM_FUNC_QUALIFIER detail::tvec3 f16_bgrx_cast(uint64 color) { detail::tvec3 result; - result.x = detail::thalf(static_cast(color >> 32) / static_cast(65535)); - result.y = detail::thalf(static_cast(color >> 16) / static_cast(65535)); - result.z = detail::thalf(static_cast(color >> 0) / static_cast(65535)); + result.x = detail::thalf(static_cast((color >> 32) & 0xFFFF) / static_cast(65535)); + result.y = detail::thalf(static_cast((color >> 16) & 0xFFFF) / static_cast(65535)); + result.z = detail::thalf(static_cast((color >> 0) & 0xFFFF) / static_cast(65535)); return result; } @@ -501,9 +501,9 @@ template <> GLM_FUNC_QUALIFIER detail::tvec3 f16_xbgr_cast(uint64 color) { detail::tvec3 result; - result.x = detail::thalf(static_cast(color >> 48) / static_cast(65535)); - result.y = detail::thalf(static_cast(color >> 32) / static_cast(65535)); - result.z = detail::thalf(static_cast(color >> 16) / static_cast(65535)); + result.x = detail::thalf(static_cast((color >> 48) & 0xFFFF) / static_cast(65535)); + result.y = detail::thalf(static_cast((color >> 32) & 0xFFFF) / static_cast(65535)); + result.z = detail::thalf(static_cast((color >> 16) & 0xFFFF) / static_cast(65535)); return result; } @@ -511,10 +511,10 @@ template <> GLM_FUNC_QUALIFIER detail::tvec4 f16_rgba_cast(uint64 color) { detail::tvec4 result; - result.x = detail::thalf(static_cast(color >> 0) / static_cast(65535)); - result.y = detail::thalf(static_cast(color >> 16) / static_cast(65535)); - result.z = detail::thalf(static_cast(color >> 32) / static_cast(65535)); - result.w = detail::thalf(static_cast(color >> 48) / static_cast(65535)); + result.x = detail::thalf(static_cast((color >> 0) & 0xFFFF) / static_cast(65535)); + result.y = detail::thalf(static_cast((color >> 16) & 0xFFFF) / static_cast(65535)); + result.z = detail::thalf(static_cast((color >> 32) & 0xFFFF) / static_cast(65535)); + result.w = detail::thalf(static_cast((color >> 48) & 0xFFFF) / static_cast(65535)); return result; } @@ -522,10 +522,10 @@ template <> GLM_FUNC_QUALIFIER detail::tvec4 f16_argb_cast(uint64 color) { detail::tvec4 result; - result.x = detail::thalf(static_cast(color >> 16) / static_cast(65535)); - result.y = detail::thalf(static_cast(color >> 32) / static_cast(65535)); - result.z = detail::thalf(static_cast(color >> 48) / static_cast(65535)); - result.w = detail::thalf(static_cast(color >> 0) / static_cast(65535)); + result.x = detail::thalf(static_cast((color >> 16) & 0xFFFF) / static_cast(65535)); + result.y = detail::thalf(static_cast((color >> 32) & 0xFFFF) / static_cast(65535)); + result.z = detail::thalf(static_cast((color >> 48) & 0xFFFF) / static_cast(65535)); + result.w = detail::thalf(static_cast((color >> 0) & 0xFFFF) / static_cast(65535)); return result; } @@ -533,10 +533,10 @@ template <> GLM_FUNC_QUALIFIER detail::tvec4 f16_bgra_cast(uint64 color) { detail::tvec4 result; - result.x = detail::thalf(static_cast(color >> 32) / static_cast(65535)); - result.y = detail::thalf(static_cast(color >> 16) / static_cast(65535)); - result.z = detail::thalf(static_cast(color >> 0) / static_cast(65535)); - result.w = detail::thalf(static_cast(color >> 48) / static_cast(65535)); + result.x = detail::thalf(static_cast((color >> 32) & 0xFFFF) / static_cast(65535)); + result.y = detail::thalf(static_cast((color >> 16) & 0xFFFF) / static_cast(65535)); + result.z = detail::thalf(static_cast((color >> 0) & 0xFFFF) / static_cast(65535)); + result.w = detail::thalf(static_cast((color >> 48) & 0xFFFF) / static_cast(65535)); return result; } @@ -544,10 +544,10 @@ template <> GLM_FUNC_QUALIFIER detail::tvec4 f16_abgr_cast(uint64 color) { detail::tvec4 result; - result.x = detail::thalf(static_cast(color >> 48) / static_cast(65535)); - result.y = detail::thalf(static_cast(color >> 32) / static_cast(65535)); - result.z = detail::thalf(static_cast(color >> 16) / static_cast(65535)); - result.w = detail::thalf(static_cast(color >> 0) / static_cast(65535)); + result.x = detail::thalf(static_cast((color >> 48) & 0xFFFF) / static_cast(65535)); + result.y = detail::thalf(static_cast((color >> 32) & 0xFFFF) / static_cast(65535)); + result.z = detail::thalf(static_cast((color >> 16) & 0xFFFF) / static_cast(65535)); + result.w = detail::thalf(static_cast((color >> 0) & 0xFFFF) / static_cast(65535)); return result; } @@ -561,9 +561,9 @@ template <> GLM_FUNC_QUALIFIER detail::tvec3 f32_rgbx_cast(uint64 color) { detail::tvec3 result; - result.x = static_cast(color >> 0) / static_cast(65535); - result.y = static_cast(color >> 16) / static_cast(65535); - result.z = static_cast(color >> 32) / static_cast(65535); + result.x = static_cast((color >> 0) & 0xFFFF) / static_cast(65535); + result.y = static_cast((color >> 16) & 0xFFFF) / static_cast(65535); + result.z = static_cast((color >> 32) & 0xFFFF) / static_cast(65535); return result; } @@ -571,9 +571,9 @@ template <> GLM_FUNC_QUALIFIER detail::tvec3 f32_xrgb_cast(uint64 color) { detail::tvec3 result; - result.x = static_cast(color >> 16) / static_cast(65535); - result.y = static_cast(color >> 32) / static_cast(65535); - result.z = static_cast(color >> 48) / static_cast(65535); + result.x = static_cast((color >> 16) & 0xFFFF) / static_cast(65535); + result.y = static_cast((color >> 32) & 0xFFFF) / static_cast(65535); + result.z = static_cast((color >> 48) & 0xFFFF) / static_cast(65535); return result; } @@ -581,9 +581,9 @@ template <> GLM_FUNC_QUALIFIER detail::tvec3 f32_bgrx_cast(uint64 color) { detail::tvec3 result; - result.x = static_cast(color >> 32) / static_cast(65535); - result.y = static_cast(color >> 16) / static_cast(65535); - result.z = static_cast(color >> 0) / static_cast(65535); + result.x = static_cast((color >> 32) & 0xFFFF) / static_cast(65535); + result.y = static_cast((color >> 16) & 0xFFFF) / static_cast(65535); + result.z = static_cast((color >> 0) & 0xFFFF) / static_cast(65535); return result; } @@ -591,9 +591,9 @@ template <> GLM_FUNC_QUALIFIER detail::tvec3 f32_xbgr_cast(uint64 color) { detail::tvec3 result; - result.x = static_cast(color >> 48) / static_cast(65535); - result.y = static_cast(color >> 32) / static_cast(65535); - result.z = static_cast(color >> 16) / static_cast(65535); + result.x = static_cast((color >> 48) & 0xFFFF) / static_cast(65535); + result.y = static_cast((color >> 32) & 0xFFFF) / static_cast(65535); + result.z = static_cast((color >> 16) & 0xFFFF) / static_cast(65535); return result; } @@ -601,10 +601,10 @@ template <> GLM_FUNC_QUALIFIER detail::tvec4 f32_rgba_cast(uint64 color) { detail::tvec4 result; - result.x = static_cast(color >> 0) / static_cast(65535); - result.y = static_cast(color >> 16) / static_cast(65535); - result.z = static_cast(color >> 32) / static_cast(65535); - result.w = static_cast(color >> 48) / static_cast(65535); + result.x = static_cast((color >> 0) & 0xFFFF) / static_cast(65535); + result.y = static_cast((color >> 16) & 0xFFFF) / static_cast(65535); + result.z = static_cast((color >> 32) & 0xFFFF) / static_cast(65535); + result.w = static_cast((color >> 48) & 0xFFFF) / static_cast(65535); return result; } @@ -612,10 +612,10 @@ template <> GLM_FUNC_QUALIFIER detail::tvec4 f32_argb_cast(uint64 color) { detail::tvec4 result; - result.x = static_cast(color >> 16) / static_cast(65535); - result.y = static_cast(color >> 32) / static_cast(65535); - result.z = static_cast(color >> 48) / static_cast(65535); - result.w = static_cast(color >> 0) / static_cast(65535); + result.x = static_cast((color >> 16) & 0xFFFF) / static_cast(65535); + result.y = static_cast((color >> 32) & 0xFFFF) / static_cast(65535); + result.z = static_cast((color >> 48) & 0xFFFF) / static_cast(65535); + result.w = static_cast((color >> 0) & 0xFFFF) / static_cast(65535); return result; } @@ -623,10 +623,10 @@ template <> GLM_FUNC_QUALIFIER detail::tvec4 f32_bgra_cast(uint64 color) { detail::tvec4 result; - result.x = static_cast(color >> 32) / static_cast(65535); - result.y = static_cast(color >> 16) / static_cast(65535); - result.z = static_cast(color >> 0) / static_cast(65535); - result.w = static_cast(color >> 48) / static_cast(65535); + result.x = static_cast((color >> 32) & 0xFFFF) / static_cast(65535); + result.y = static_cast((color >> 16) & 0xFFFF) / static_cast(65535); + result.z = static_cast((color >> 0) & 0xFFFF) / static_cast(65535); + result.w = static_cast((color >> 48) & 0xFFFF) / static_cast(65535); return result; } @@ -634,10 +634,10 @@ template <> GLM_FUNC_QUALIFIER detail::tvec4 f32_abgr_cast(uint64 color) { detail::tvec4 result; - result.x = static_cast(color >> 48) / static_cast(65535); - result.y = static_cast(color >> 32) / static_cast(65535); - result.z = static_cast(color >> 16) / static_cast(65535); - result.w = static_cast(color >> 0) / static_cast(65535); + result.x = static_cast((color >> 48) & 0xFFFF) / static_cast(65535); + result.y = static_cast((color >> 32) & 0xFFFF) / static_cast(65535); + result.z = static_cast((color >> 16) & 0xFFFF) / static_cast(65535); + result.w = static_cast((color >> 0) & 0xFFFF) / static_cast(65535); return result; } @@ -651,9 +651,9 @@ template <> GLM_FUNC_QUALIFIER detail::tvec3 f64_rgbx_cast(uint64 color) { detail::tvec3 result; - result.x = static_cast(color >> 0) / static_cast(65535); - result.y = static_cast(color >> 16) / static_cast(65535); - result.z = static_cast(color >> 32) / static_cast(65535); + result.x = static_cast((color >> 0) & 0xFFFF) / static_cast(65535); + result.y = static_cast((color >> 16) & 0xFFFF) / static_cast(65535); + result.z = static_cast((color >> 32) & 0xFFFF) / static_cast(65535); return result; } @@ -661,9 +661,9 @@ template <> GLM_FUNC_QUALIFIER detail::tvec3 f64_xrgb_cast(uint64 color) { detail::tvec3 result; - result.x = static_cast(color >> 16) / static_cast(65535); - result.y = static_cast(color >> 32) / static_cast(65535); - result.z = static_cast(color >> 48) / static_cast(65535); + result.x = static_cast((color >> 16) & 0xFFFF) / static_cast(65535); + result.y = static_cast((color >> 32) & 0xFFFF) / static_cast(65535); + result.z = static_cast((color >> 48) & 0xFFFF) / static_cast(65535); return result; } @@ -671,9 +671,9 @@ template <> GLM_FUNC_QUALIFIER detail::tvec3 f64_bgrx_cast(uint64 color) { detail::tvec3 result; - result.x = static_cast(color >> 32) / static_cast(65535); - result.y = static_cast(color >> 16) / static_cast(65535); - result.z = static_cast(color >> 0) / static_cast(65535); + result.x = static_cast((color >> 32) & 0xFFFF) / static_cast(65535); + result.y = static_cast((color >> 16) & 0xFFFF) / static_cast(65535); + result.z = static_cast((color >> 0) & 0xFFFF) / static_cast(65535); return result; } @@ -681,9 +681,9 @@ template <> GLM_FUNC_QUALIFIER detail::tvec3 f64_xbgr_cast(uint64 color) { detail::tvec3 result; - result.x = static_cast(color >> 48) / static_cast(65535); - result.y = static_cast(color >> 32) / static_cast(65535); - result.z = static_cast(color >> 16) / static_cast(65535); + result.x = static_cast((color >> 48) & 0xFFFF) / static_cast(65535); + result.y = static_cast((color >> 32) & 0xFFFF) / static_cast(65535); + result.z = static_cast((color >> 16) & 0xFFFF) / static_cast(65535); return result; } @@ -691,10 +691,10 @@ template <> GLM_FUNC_QUALIFIER detail::tvec4 f64_rgba_cast(uint64 color) { detail::tvec4 result; - result.x = static_cast(color >> 0) / static_cast(65535); - result.y = static_cast(color >> 16) / static_cast(65535); - result.z = static_cast(color >> 32) / static_cast(65535); - result.w = static_cast(color >> 48) / static_cast(65535); + result.x = static_cast((color >> 0) & 0xFFFF) / static_cast(65535); + result.y = static_cast((color >> 16) & 0xFFFF) / static_cast(65535); + result.z = static_cast((color >> 32) & 0xFFFF) / static_cast(65535); + result.w = static_cast((color >> 48) & 0xFFFF) / static_cast(65535); return result; } @@ -702,10 +702,10 @@ template <> GLM_FUNC_QUALIFIER detail::tvec4 f64_argb_cast(uint64 color) { detail::tvec4 result; - result.x = static_cast(color >> 16) / static_cast(65535); - result.y = static_cast(color >> 32) / static_cast(65535); - result.z = static_cast(color >> 48) / static_cast(65535); - result.w = static_cast(color >> 0) / static_cast(65535); + result.x = static_cast((color >> 16) & 0xFFFF) / static_cast(65535); + result.y = static_cast((color >> 32) & 0xFFFF) / static_cast(65535); + result.z = static_cast((color >> 48) & 0xFFFF) / static_cast(65535); + result.w = static_cast((color >> 0) & 0xFFFF) / static_cast(65535); return result; } @@ -713,10 +713,10 @@ template <> GLM_FUNC_QUALIFIER detail::tvec4 f64_bgra_cast(uint64 color) { detail::tvec4 result; - result.x = static_cast(color >> 32) / static_cast(65535); - result.y = static_cast(color >> 16) / static_cast(65535); - result.z = static_cast(color >> 0) / static_cast(65535); - result.w = static_cast(color >> 48) / static_cast(65535); + result.x = static_cast((color >> 32) & 0xFFFF) / static_cast(65535); + result.y = static_cast((color >> 16) & 0xFFFF) / static_cast(65535); + result.z = static_cast((color >> 0) & 0xFFFF) / static_cast(65535); + result.w = static_cast((color >> 48) & 0xFFFF) / static_cast(65535); return result; } @@ -724,10 +724,10 @@ template <> GLM_FUNC_QUALIFIER detail::tvec4 f64_abgr_cast(uint64 color) { detail::tvec4 result; - result.x = static_cast(color >> 48) / static_cast(65535); - result.y = static_cast(color >> 32) / static_cast(65535); - result.z = static_cast(color >> 16) / static_cast(65535); - result.w = static_cast(color >> 0) / static_cast(65535); + result.x = static_cast((color >> 48) & 0xFFFF) / static_cast(65535); + result.y = static_cast((color >> 32) & 0xFFFF) / static_cast(65535); + result.z = static_cast((color >> 16) & 0xFFFF) / static_cast(65535); + result.w = static_cast((color >> 0) & 0xFFFF) / static_cast(65535); return result; } diff --git a/readme.txt b/readme.txt index da6d8b88..21b2ce8e 100644 --- a/readme.txt +++ b/readme.txt @@ -43,6 +43,11 @@ GLM 0.9.3.0: 2011-XX-XX - Added extension versioning - Removed many unused namespaces +================================================================================ +GLM 0.9.2.4: 2011-08-04 +-------------------------------------------------------------------------------- +- Fixed extensions bugs + ================================================================================ GLM 0.9.2.3: 2011-06-08 --------------------------------------------------------------------------------