diff --git a/glm/core/func_vector_relational.hpp b/glm/core/func_vector_relational.hpp
index 1b7d8094..3aee44c2 100644
--- a/glm/core/func_vector_relational.hpp
+++ b/glm/core/func_vector_relational.hpp
@@ -80,8 +80,8 @@ namespace glm
//!
/// @see - GLSL equal man page
/// @see - GLSL 4.20.8 specification, section 8.7
- template class vecType>
- GLM_FUNC_QUALIFIER typename vecType::bool_type equal(vecType const & x, vecType const & y);
+ //template class vecType>
+ //GLM_FUNC_QUALIFIER typename vecType::bool_type equal(vecType const & x, vecType const & y);
//! Returns the component-wise comparison of result x != y.
//!
diff --git a/glm/gtc/random.hpp b/glm/gtc/random.hpp
index a4569fcb..1896e1ed 100644
--- a/glm/gtc/random.hpp
+++ b/glm/gtc/random.hpp
@@ -56,49 +56,6 @@ namespace glm
/// Generate a random number in the interval [-1, 1], according a linear distribution.
/// From GLM_GTC_random extension.
template T signedRand1();
-
- template <> float signedRand1(); //!< \brief Generate a random number in the interval [-1, 1], according a linear distribution (From GLM_GTX_random extension)
- template <> double signedRand1(); //!< \brief Generate a random number in the interval [-1, 1], according a linear distribution (From GLM_GTX_random extension)
- template detail::tvec2 signedRand2(); //!< \brief Generate 2 random numbers in the interval [-1, 1], according a linear distribution (From GLM_GTX_random extension)
- template detail::tvec3 signedRand3(); //!< \brief Generate 3 random numbers in the interval [-1, 1], according a linear distribution (From GLM_GTX_random extension)
- template detail::tvec4 signedRand4(); //!< \brief Generate 4 random numbers in the interval [-1, 1], according a linear distribution (From GLM_GTX_random extension)
-
- template detail::tvec2 normalizedRand2(); //!< \brief Generate a normalized 2D vector regulary distribute on a circle (From GLM_GTX_random extension)
- template detail::tvec2 normalizedRand2(T Min, T Max); //!< \brief Generate a scaled and normalized 2D vector regulary distribute on a circle (From GLM_GTX_random extension)
- template detail::tvec3 normalizedRand3(); //!< \brief Generate a normalized 3D vector regulary distribute on a sphere (From GLM_GTX_random extension)
- template detail::tvec3 normalizedRand3(T Min, T Max); //!< \brief Generate a scaled and normalized 3D vector regulary distribute on a sphere (From GLM_GTX_random extension)
-
- template T compRand1(); //!< \brief Generate a random number in the interval [0, 1], according a linear distribution (From GLM_GTX_random extension)
- template <> float compRand1(); //!< \brief Generate a random number in the interval [0, 1], according a linear distribution (From GLM_GTX_random extension)
- template <> double compRand1(); //!< \brief Generate a random number in the interval [0, 1], according a linear distribution (From GLM_GTX_random extension)
- template T compRand1(T Min, T Max); //!< \brief Generate a random number in the interval [Min, Max], according a linear distribution (From GLM_GTX_random extension)
- template detail::tvec2 compRand2(T Min, T Max); //!< \brief Generate 2 random numbers in the interval [Min, Max], according a linear distribution (From GLM_GTX_random extension)
- template detail::tvec3 compRand3(T Min, T Max); //!< \brief Generate 3 random numbers in the interval [Min, Max], according a linear distribution (From GLM_GTX_random extension)
- template detail::tvec4 compRand4(T Min, T Max); //!< \brief Generate 4 random numbers in the interval [Min, Max], according a linear distribution (From GLM_GTX_random extension)
- template detail::tvec2 compRand2(const detail::tvec2& Min, const detail::tvec2& Max); //!< \brief Generate 2 random numbers in the interval [Min, Max], according a linear distribution (From GLM_GTX_random extension)
- template detail::tvec3 compRand3(const detail::tvec3& Min, const detail::tvec3& Max); //!< \brief Generate 3 random numbers in the interval [Min, Max], according a linear distribution (From GLM_GTX_random extension)
- template detail::tvec3 compRand4(const detail::tvec4& Min, const detail::tvec4& Max); //!< \brief Generate 4 random numbers in the interval [Min, Max], according a linear distribution (From GLM_GTX_random extension)
-
- template detail::tvec2 vecRand2(); //!< \brief Generate a random normalized 2 component vector. It's a spherical uniform distribution. (From GLM_GTX_random extension)
- template detail::tvec2 vecRand2(T MinRadius, T MaxRadius); //!< \brief Generate a random normalized 2 component vector. It's a spherical uniform distribution. (From GLM_GTX_random extension)
- template detail::tvec3 vecRand3(); //!< \brief Generate a random normalized 3 component vector. It's a spherical uniform distribution. (From GLM_GTX_random extension)
- template detail::tvec3 vecRand3(T MinRadius, T MaxRadius); //!< \brief Generate a random normalized 3 component vector. It's a spherical uniform distribution. (From GLM_GTX_random extension)
- template detail::tvec4 vecRand4(); //!< \brief Generate a random normalized 4 component vector. It's a spherical uniform distribution. (From GLM_GTX_random extension)
- template detail::tvec4 vecRand4(T MinRadius, T MaxRadius); //!< \brief Generate a random normalized 4 component vector. It's a spherical uniform distribution. (From GLM_GTX_random extension)
-
- template T gaussRand1(T mean, T std_deviation); //!< \brief Gererate a random floating number according a Gauss distribution. (From GLM_GTX_random extension)
- template detail::tvec2 gaussRand2(T mean, T std_deviation); //!< \brief Gererate 2 random floating numbers according a Gauss distribution. (From GLM_GTX_random extension)
- template detail::tvec3 gaussRand3(T mean, T std_deviation); //!< \brief Gererate 3 random floating numbers according a Gauss distribution. (From GLM_GTX_random extension)
- template detail::tvec4 gaussRand4(T mean, T std_deviation); //!< \brief Gererate 4 random floating numbers according a Gauss distribution. (From GLM_GTX_random extension)
- template detail::tvec2 gaussRand2(const detail::tvec2& mean, T std_deviation); //!< \brief Gererate 2 random floating numbers according a Gauss distribution. (From GLM_GTX_random extension)
- template detail::tvec3 gaussRand3(const detail::tvec3& mean, T std_deviation); //!< \brief Gererate 3 random floating numbers according a Gauss distribution. (From GLM_GTX_random extension)
- template detail::tvec4 gaussRand4(const detail::tvec4& mean, T std_deviation); //!< \brief Gererate 4 random floating numbers according a Gauss distribution. (From GLM_GTX_random extension)
- template detail::tvec2 gaussRand2(T mean, const detail::tvec2& std_deviation); //!< \brief Gererate 2 random floating numbers according a Gauss distribution. (From GLM_GTX_random extension)
- template detail::tvec3 gaussRand3(T mean, const detail::tvec3& std_deviation); //!< \brief Gererate 3 random floating numbers according a Gauss distribution. (From GLM_GTX_random extension)
- template detail::tvec4 gaussRand4(T mean, const detail::tvec4& std_deviation); //!< \brief Gererate 4 random floating numbers according a Gauss distribution. (From GLM_GTX_random extension)
- template detail::tvec2 gaussRand2(const detail::tvec2& mean, const detail::tvec2& std_deviation); //!< \brief Gererate 2 random floating numbers according a Gauss distribution. (From GLM_GTX_random extension)
- template detail::tvec3 gaussRand3(const detail::tvec3& mean, const detail::tvec3& std_deviation); //!< \brief Gererate 3 random floating numbers according a Gauss distribution. (From GLM_GTX_random extension)
- template detail::tvec4 gaussRand4(const detail::tvec4& mean, const detail::tvec4& std_deviation); //!< \brief Gererate 4 random floating numbers according a Gauss distribution. (From GLM_GTX_random extension)
/// @}
}//namespace glm
diff --git a/glm/gtc/random.inl b/glm/gtc/random.inl
index fa29f793..68df87cc 100644
--- a/glm/gtc/random.inl
+++ b/glm/gtc/random.inl
@@ -12,521 +12,5 @@
namespace glm{
-template <>
-GLM_FUNC_QUALIFIER float signedRand1()
-{
- #if(GLM_COMPILER & GLM_COMPILER_VC)// && (GLM_COMPILER < GLM_COMPILER_VC2010)
- #define RAND_SHIFT_NUM 5
- #else
- #define RAND_SHIFT_NUM 0
- #endif
- return float((std::rand() - (RAND_MAX >> 1) - 1) << 1) / float(RAND_MAX - RAND_SHIFT_NUM);
-}
-
-template <>
-GLM_FUNC_QUALIFIER double signedRand1()
-{
- return double(signedRand1());
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec2 signedRand2()
-{
- return detail::tvec2(
- signedRand1(),
- signedRand1());
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec3 signedRand3()
-{
- return detail::tvec3(
- signedRand1(),
- signedRand1(),
- signedRand1());
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec4 signedRand4()
-{
- return detail::tvec4(
- signedRand1(),
- signedRand1(),
- signedRand1(),
- signedRand1());
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec2 normalizedRand2()
-{
- T a = compRand1(T(0), T(6.283185307179586476925286766559f));
- return detail::tvec2(cos(a), sin(a));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec3 normalizedRand3()
-{
- T z = compRand1(T(-1), T(1));
- T a = compRand1(T(0), T(6.283185307179586476925286766559f));
-
- T r = sqrt(T(1) - z * z);
-
- T x = r * cos(a);
- T y = r * sin(a);
-
- return detail::tvec3(x, y, z);
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec3 normalizedRand3(
- T Min,
- T Max)
-{
- return normalizedRand3() * compRand1(Min, Max);
-}
-
-template <>
-GLM_FUNC_QUALIFIER float compRand1()
-{
- return float(std::rand()) / float(RAND_MAX);
-}
-
-template <>
-GLM_FUNC_QUALIFIER double compRand1()
-{
- return double(std::rand()) / double(RAND_MAX);
-}
-
-GLM_FUNC_QUALIFIER detail::thalf compRand1(
- detail::thalf Min,
- detail::thalf Max)
-{
- return compRand1() * (Max - Min) + Min;
-}
-
-GLM_FUNC_QUALIFIER float compRand1(
- float Min,
- float Max)
-{
- return compRand1() * (Max - Min) + Min;
-}
-
-GLM_FUNC_QUALIFIER double compRand1(
- double Min,
- double Max)
-{
- return compRand1() * (Max - Min) + Min;
-}
-
-template
-GLM_FUNC_QUALIFIER T compRand1(
- T Min,
- T Max)
-{
- return T(compRand1() * double(Max - Min) + double(Min));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec2 compRand2(
- T Min,
- T Max)
-{
- return detail::tvec2(
- compRand1(Min, Max),
- compRand1(Min, Max));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec3 compRand3(
- T Min,
- T Max)
-{
- return detail::tvec3(
- compRand1(Min, Max),
- compRand1(Min, Max),
- compRand1(Min, Max));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec4 compRand4(
- T Min,
- T Max)
-{
- return detail::tvec4(
- compRand1(Min, Max),
- compRand1(Min, Max),
- compRand1(Min, Max),
- compRand1(Min, Max));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec2 compRand2(
- T Min,
- const detail::tvec2& Max)
-{
- return detail::tvec2(
- compRand1(Min.x, Max.x),
- compRand1(Min.y, Max.y));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec3 compRand3(
- T Min,
- const detail::tvec3& Max)
-{
- return detail::tvec3(
- compRand1(Min.x, Max.x),
- compRand1(Min.y, Max.y),
- compRand1(Min.z, Max.z));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec4 compRand4(
- T Min,
- const detail::tvec4& Max)
-{
- return detail::tvec4(
- compRand1(Min.x, Max.x),
- compRand1(Min.y, Max.y),
- compRand1(Min.z, Max.z),
- compRand1(Min.w, Max.w));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec2 compRand2(
- const detail::tvec2& Min,
- T Max)
-{
- return detail::tvec2(
- compRand1(Min.x, Max.x),
- compRand1(Min.y, Max.y));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec3 compRand3(
- const detail::tvec3& Min,
- T Max)
-{
- return detail::tvec3(
- compRand1(Min.x, Max.x),
- compRand1(Min.y, Max.y),
- compRand1(Min.z, Max.z));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec4 compRand4(
- const detail::tvec4& Min,
- T Max)
-{
- return detail::tvec4(
- compRand1(Min.x, Max.x),
- compRand1(Min.y, Max.y),
- compRand1(Min.z, Max.z),
- compRand1(Min.w, Max.w));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec2 compRand2(
- const detail::tvec2& Min,
- const detail::tvec2& Max)
-{
- return detail::tvec2(
- compRand1(Min.x, Max.x),
- compRand1(Min.y, Max.y));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec3 compRand3(
- const detail::tvec3& Min,
- const detail::tvec3& Max)
-{
- return detail::tvec3(
- compRand1(Min.x, Max.x),
- compRand1(Min.y, Max.y),
- compRand1(Min.z, Max.z));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec4 compRand4(
- const detail::tvec4& Min,
- const detail::tvec4& Max)
-{
- return detail::tvec4(
- compRand1(Min.x, Max.x),
- compRand1(Min.y, Max.y),
- compRand1(Min.z, Max.z),
- compRand1(Min.w, Max.w));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec2 vecRand2()
-{
- detail::tvec2 result(float(0));
- do
- {
- result = compRand2(float(-1), float(1));
- } while (length(result) > float(1));
-
- return result;
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec2 vecRand2()
-{
- detail::tvec2 result(double(0));
- do
- {
- result = compRand2(double(-1), double(1));
- } while (length(result) > double(1));
-
- return result;
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec2 vecRand2(
- T MinRadius,
- T MaxRadius)
-{
- assert(MinRadius <= MaxRadius);
-
- detail::tvec2 Result(T(0));
- T LenRadius(0);
-
- do
- {
- Result = compRand2(-MaxRadius, MaxRadius);
- LenRadius = length(Result);
- }
- while(LenRadius > MaxRadius || LenRadius < MinRadius);
-
- return Result;
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec3 vecRand3()
-{
- detail::tvec3 Result(T(0));
- do
- {
- Result = compRand3(T(-1), T(1));
- }
- while(length(Result) > T(1));
-
- return Result;
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec3 vecRand3(
- T MinRadius,
- T MaxRadius)
-{
- assert(MinRadius <= MaxRadius);
-
- detail::tvec3 Result(0);
- T LenRadius(0);
-
- do
- {
- Result = compRand3(-MaxRadius, MaxRadius);
- LenRadius = length(Result);
- }
- while(LenRadius > MaxRadius || LenRadius < MinRadius);
-
- return Result;
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec4 vecRand4()
-{
- detail::tvec4 result(float(0));
- do
- {
- result = compRand4(float(-1), float(1));
- } while (length(result) > float(1));
-
- return result;
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec4 vecRand4()
-{
- detail::tvec4 result(double(0));
- do
- {
- result = compRand4(double(-1), double(1));
- } while (length(result) > double(1));
-
- return result;
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec4 vecRand4(
- T MinRadius,
- T MaxRadius)
-{
- assert(MinRadius <= MaxRadius);
-
- detail::tvec4 Result(T(0));
- T LenRadius(T(0));
-
- do
- {
- Result = compRand4(-MaxRadius, MaxRadius);
- LenRadius = length(Result);
- }
- while(LenRadius > MaxRadius || LenRadius < MinRadius);
-
- return Result;
-}
-
-template
-GLM_FUNC_QUALIFIER T gaussRand1(
- T mean,
- T std_deviation)
-{
- T w, x1, x2;
-
- do
- {
- x1 = compRand1(T(-1), T(1));
- x2 = compRand1(T(-1), T(1));
-
- w = x1 * x1 + x2 * x2;
- } while(w > T(1));
-
- return x2 * std_deviation * std_deviation * sqrt((T(-2) * log(w)) / w) + mean;
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec2 gaussRand2(
- T mean,
- T std_deviation)
-{
- return detail::tvec2(
- gaussRand1(mean, std_deviation),
- gaussRand1(mean, std_deviation));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec3 gaussRand3(
- T mean,
- T std_deviation)
-{
- return detail::tvec3(
- gaussRand1(mean, std_deviation),
- gaussRand1(mean, std_deviation),
- gaussRand1(mean, std_deviation));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec4 gaussRand4(
- T mean,
- T std_deviation)
-{
- return detail::tvec4(
- gaussRand1(mean, std_deviation),
- gaussRand1(mean, std_deviation),
- gaussRand1(mean, std_deviation),
- gaussRand1(mean, std_deviation));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec2 gaussRand2(
- T mean,
- const detail::tvec2& std_deviation)
-{
- return detail::tvec2(
- gaussRand1(mean, std_deviation.x),
- gaussRand1(mean, std_deviation.y));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec3 gaussRand3(
- T mean,
- const detail::tvec3& std_deviation)
-{
- return detail::tvec3(
- gaussRand1(mean, std_deviation.x),
- gaussRand1(mean, std_deviation.y),
- gaussRand1(mean, std_deviation.z));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec4 gaussRand4(
- T mean,
- const detail::tvec4& std_deviation)
-{
- return detail::tvec4(
- gaussRand1(mean, std_deviation.x),
- gaussRand1(mean, std_deviation.y),
- gaussRand1(mean, std_deviation.z),
- gaussRand1(mean, std_deviation.w));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec2 gaussRand2(
- const detail::tvec2& mean,
- T std_deviation)
-{
- return detail::tvec2(
- gaussRand1(mean.x, std_deviation),
- gaussRand1(mean.y, std_deviation));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec3 gaussRand3(
- const detail::tvec3& mean,
- T std_deviation)
-{
- return detail::tvec3(
- gaussRand1(mean.x, std_deviation),
- gaussRand1(mean.y, std_deviation),
- gaussRand1(mean.z, std_deviation));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec4 gaussRand4(
- const detail::tvec4& mean,
- T std_deviation)
-{
- return detail::tvec4(
- gaussRand1(mean.x, std_deviation),
- gaussRand1(mean.y, std_deviation),
- gaussRand1(mean.z, std_deviation),
- gaussRand1(mean.w, std_deviation));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec2 gaussRand2(
- const detail::tvec2& mean,
- const detail::tvec2& std_deviation)
-{
- return detail::tvec2(
- gaussRand1(mean.x, std_deviation.x),
- gaussRand1(mean.y, std_deviation.y));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec3 gaussRand3(
- const detail::tvec3& mean,
- const detail::tvec3& std_deviation)
-{
- return detail::tvec3(
- gaussRand1(mean.x, std_deviation.x),
- gaussRand1(mean.y, std_deviation.y),
- gaussRand1(mean.z, std_deviation.z));
-}
-
-template
-GLM_FUNC_QUALIFIER detail::tvec4 gaussRand4(
- const detail::tvec4& mean,
- const detail::tvec4& std_deviation)
-{
- return detail::tvec4(
- gaussRand1(mean.x, std_deviation.x),
- gaussRand1(mean.y, std_deviation.y),
- gaussRand1(mean.z, std_deviation.z),
- gaussRand1(mean.w, std_deviation.w));
-}
}//namespace glm
diff --git a/glm/gtx/random.inl b/glm/gtx/random.inl
index 571fea56..5e7e005a 100644
--- a/glm/gtx/random.inl
+++ b/glm/gtx/random.inl
@@ -56,11 +56,34 @@ GLM_FUNC_QUALIFIER detail::tvec4 signedRand4()
signedRand1());
}
+template
+GLM_FUNC_QUALIFIER detail::tvec2 normalizedRand2(
+ T Min,
+ T Max)
+{
+ return normalizedRand2() * compRand1(Min, Max);
+}
+
template
GLM_FUNC_QUALIFIER detail::tvec2 normalizedRand2()
{
- T a = compRand1