mirror of
https://github.com/g-truc/glm.git
synced 2024-11-10 04:31:47 +00:00
Merge branch 'maintenance' into experimental
This commit is contained in:
commit
a67ecdc4ba
@ -7,7 +7,6 @@ add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
|||||||
|
|
||||||
add_subdirectory(glm)
|
add_subdirectory(glm)
|
||||||
add_subdirectory(doc)
|
add_subdirectory(doc)
|
||||||
add_subdirectory(sample)
|
|
||||||
add_subdirectory(test)
|
add_subdirectory(test)
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,8 +28,8 @@ namespace glm
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
detail::highp_uint_t Value64 = detail::highp_uint_t(x) + detail::highp_uint_t(y);
|
detail::highp_uint_t Value64 = detail::highp_uint_t(x) + detail::highp_uint_t(y);
|
||||||
genUType Result = genUType(Value64 % (1 << 32));
|
genUType Result = genUType(Value64 % (detail::highp_uint_t(1) << detail::highp_uint_t(32)));
|
||||||
Carry = (Value64 % (1 << 32)) > 1 : 1 : 0;
|
Carry = (Value64 % (detail::highp_uint_t(1) << detail::highp_uint_t(32))) > 1 ? 1 : 0;
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,7 +88,7 @@ namespace glm
|
|||||||
if(x > y)
|
if(x > y)
|
||||||
return genUType(detail::highp_int_t(x) - detail::highp_int_t(y));
|
return genUType(detail::highp_int_t(x) - detail::highp_int_t(y));
|
||||||
else
|
else
|
||||||
return genUType(detail::highp_int_t(1 << 32) + detail::highp_int_t(x) - detail::highp_int_t(y));
|
return genUType(detail::highp_int_t(1) << detail::highp_int_t(32) + detail::highp_int_t(x) - detail::highp_int_t(y));
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
@ -146,8 +146,8 @@ namespace glm
|
|||||||
detail::highp_uint_t ValueX64 = x;
|
detail::highp_uint_t ValueX64 = x;
|
||||||
detail::highp_uint_t ValueY64 = y;
|
detail::highp_uint_t ValueY64 = y;
|
||||||
detail::highp_uint_t Value64 = ValueX64 * ValueY64;
|
detail::highp_uint_t Value64 = ValueX64 * ValueY64;
|
||||||
msb = *(genUType*)&(Value64 & ((1 << 32) - 1));
|
msb = *(genUType*)&(Value64 & ((detail::highp_uint_t(1) << detail::highp_uint_t(32)) - detail::highp_uint_t(1)));
|
||||||
lsb = *(genUType*)&(Value64 >> 32);
|
lsb = *(genUType*)&(Value64 >> detail::highp_uint_t(32));
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
@ -208,8 +208,8 @@ namespace glm
|
|||||||
detail::highp_int_t ValueX64 = x;
|
detail::highp_int_t ValueX64 = x;
|
||||||
detail::highp_int_t ValueY64 = y;
|
detail::highp_int_t ValueY64 = y;
|
||||||
detail::highp_int_t Value64 = ValueX64 * ValueY64;
|
detail::highp_int_t Value64 = ValueX64 * ValueY64;
|
||||||
msb = *(genIType*)&(Value64 & ((1 << 32) - 1));
|
msb = *(genIType*)&(Value64 & ((detail::highp_uint_t(1) << detail::highp_uint_t(32)) - detail::highp_uint_t(1)));
|
||||||
lsb = *(genIType*)&(Value64 >> 32);
|
lsb = *(genIType*)&(Value64 >> detail::highp_uint_t(32));
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
@ -267,7 +267,7 @@ namespace glm
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
GLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer);
|
GLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer);
|
||||||
GLM_STATIC_ASSERT(Offset + Bits <= sizeof(genIUType));
|
assert(Offset + Bits <= sizeof(genIUType));
|
||||||
|
|
||||||
genIUType Result = 0;
|
genIUType Result = 0;
|
||||||
if(std::numeric_limits<genIUType>::is_signed)
|
if(std::numeric_limits<genIUType>::is_signed)
|
||||||
@ -289,8 +289,8 @@ namespace glm
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
return detail::tvec2<T>(
|
return detail::tvec2<T>(
|
||||||
bitfieldExtract(value[0]),
|
bitfieldExtract(Value[0]),
|
||||||
bitfieldExtract(value[1]));
|
bitfieldExtract(Value[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
@ -302,9 +302,9 @@ namespace glm
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
return detail::tvec3<T>(
|
return detail::tvec3<T>(
|
||||||
bitfieldExtract(value[0]),
|
bitfieldExtract(Value[0]),
|
||||||
bitfieldExtract(value[1]),
|
bitfieldExtract(Value[1]),
|
||||||
bitfieldExtract(value[2]));
|
bitfieldExtract(Value[2]));
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
@ -316,10 +316,10 @@ namespace glm
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
return detail::tvec4<T>(
|
return detail::tvec4<T>(
|
||||||
bitfieldExtract(value[0]),
|
bitfieldExtract(Value[0]),
|
||||||
bitfieldExtract(value[1]),
|
bitfieldExtract(Value[1]),
|
||||||
bitfieldExtract(value[2]),
|
bitfieldExtract(Value[2]),
|
||||||
bitfieldExtract(value[3]));
|
bitfieldExtract(Value[3]));
|
||||||
}
|
}
|
||||||
|
|
||||||
// bitfieldInsert
|
// bitfieldInsert
|
||||||
@ -333,7 +333,7 @@ namespace glm
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
GLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer);
|
GLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer);
|
||||||
GLM_STATIC_ASSERT(Offset + Bits <= sizeof(genIUType));
|
assert(Offset + Bits <= sizeof(genIUType));
|
||||||
|
|
||||||
if(Bits == 0)
|
if(Bits == 0)
|
||||||
return Base;
|
return Base;
|
||||||
@ -355,8 +355,8 @@ namespace glm
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
return detail::tvec2<T>(
|
return detail::tvec2<T>(
|
||||||
bitfieldInsert(value[0]),
|
bitfieldInsert(Base[0], Insert[0], Offset, Bits),
|
||||||
bitfieldInsert(value[1]));
|
bitfieldInsert(Base[1], Insert[1], Offset, Bits));
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
@ -369,9 +369,9 @@ namespace glm
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
return detail::tvec3<T>(
|
return detail::tvec3<T>(
|
||||||
bitfieldInsert(value[0]),
|
bitfieldInsert(Base[0], Insert[0], Offset, Bits),
|
||||||
bitfieldInsert(value[1]),
|
bitfieldInsert(Base[1], Insert[1], Offset, Bits),
|
||||||
bitfieldInsert(value[2]));
|
bitfieldInsert(Base[2], Insert[2], Offset, Bits));
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
@ -384,10 +384,10 @@ namespace glm
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
return detail::tvec4<T>(
|
return detail::tvec4<T>(
|
||||||
bitfieldInsert(value[0]),
|
bitfieldInsert(Base[0], Insert[0], Offset, Bits),
|
||||||
bitfieldInsert(value[1]),
|
bitfieldInsert(Base[1], Insert[1], Offset, Bits),
|
||||||
bitfieldInsert(value[2]),
|
bitfieldInsert(Base[2], Insert[2], Offset, Bits),
|
||||||
bitfieldInsert(value[3]));
|
bitfieldInsert(Base[3], Insert[3], Offset, Bits));
|
||||||
}
|
}
|
||||||
|
|
||||||
// bitfieldReverse
|
// bitfieldReverse
|
||||||
@ -399,7 +399,7 @@ namespace glm
|
|||||||
genIUType Result = 0;
|
genIUType Result = 0;
|
||||||
for(std::size_t i = 0; i < sizeof(genIUType) * std::size_t(8); ++i)
|
for(std::size_t i = 0; i < sizeof(genIUType) * std::size_t(8); ++i)
|
||||||
if(Value & (1 << i))
|
if(Value & (1 << i))
|
||||||
Result |= (1 << (sizeof(genIUType) * std::size_t(8)) - 1 - i);
|
Result |= (genIUType(1) << (sizeof(genIUType) * std::size_t(8)) - genIUType(1) - i);
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -491,18 +491,18 @@ namespace glm
|
|||||||
}
|
}
|
||||||
|
|
||||||
// findLSB
|
// findLSB
|
||||||
template <typename genType>
|
template <typename genIUType>
|
||||||
inline int findLSB
|
inline int findLSB
|
||||||
(
|
(
|
||||||
genType const & Value
|
genIUType const & Value
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
GLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer);
|
GLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer);
|
||||||
if(Value == 0)
|
if(Value == 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
genType Bit;
|
genIUType Bit;
|
||||||
for(Bit = genType(0); !(Value & (1 << Bit)); ++Bit){}
|
for(Bit = genIUType(0); !(Value & (1 << Bit)); ++Bit){}
|
||||||
return Bit;
|
return Bit;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -543,18 +543,18 @@ namespace glm
|
|||||||
}
|
}
|
||||||
|
|
||||||
// findMSB
|
// findMSB
|
||||||
template <typename genType>
|
template <typename genIUType>
|
||||||
inline int findMSB
|
inline int findMSB
|
||||||
(
|
(
|
||||||
genType const & value
|
genIUType const & Value
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
GLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer);
|
GLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer);
|
||||||
if(Value == 0)
|
if(Value == 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
genType bit = genType(-1);
|
genIUType bit = genIUType(-1);
|
||||||
for(genType tmp = value; tmp; tmp >>= 1, ++bit){}
|
for(genIUType tmp = Value; tmp; tmp >>= 1, ++bit){}
|
||||||
return bit;
|
return bit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,7 +14,10 @@
|
|||||||
// Version
|
// Version
|
||||||
|
|
||||||
#define GLM_VERSION 90
|
#define GLM_VERSION 90
|
||||||
#define GLM_REVISION 1040
|
#define GLM_VERSION_MAJOR 0
|
||||||
|
#define GLM_VERSION_MINOR 9
|
||||||
|
#define GLM_VERSION_PATCH B
|
||||||
|
#define GLM_VERSION_REVISION 2
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Common values
|
// Common values
|
||||||
@ -238,8 +241,8 @@
|
|||||||
// To use anonymous union to provide multiple component names access for class valType. Visual C++ only.
|
// To use anonymous union to provide multiple component names access for class valType. Visual C++ only.
|
||||||
// GLM_USE_ANONYMOUS_UNION
|
// GLM_USE_ANONYMOUS_UNION
|
||||||
|
|
||||||
#if(defined(GLM_USE_ANONYMOUS_UNION) && (GLM_COMPILER & GLM_COMPILER_GCC))
|
#if(defined(GLM_USE_ANONYMOUS_UNION) && !(GLM_COMPILER & GLM_COMPILER_VC))
|
||||||
#error GLM_USE_ANONYMOUS_UNION is defined to use anonymous union implementation of vector types. Anonymous unions can't be used with GCC.
|
#error "GLM_USE_ANONYMOUS_UNION is defined to use anonymous union implementation of vector types. Anonymous unions can't be used with GCC."
|
||||||
#endif//GLM_USE_ANONYMOUS_UNION
|
#endif//GLM_USE_ANONYMOUS_UNION
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
Loading…
Reference in New Issue
Block a user