Browse Source

Fixed glm::step that didn't work with scalars #684

Christophe Riccio 8 years ago
parent
commit
fcbedf5058
2 changed files with 15 additions and 1 deletions
  1. 1 1
      glm/detail/func_common.inl
  2. 14 0
      test/core/core_func_common.cpp

+ 1 - 1
glm/detail/func_common.inl

@@ -582,7 +582,7 @@ namespace detail
 	template<typename genType>
 	GLM_FUNC_QUALIFIER genType step(genType edge, genType x)
 	{
-		return mix(static_cast<genType>(1), static_cast<genType>(0), glm::lessThan(x, edge));
+		return mix(static_cast<genType>(1), static_cast<genType>(0), x < edge);
 	}
 
 	template<length_t L, typename T, qualifier Q>

+ 14 - 0
test/core/core_func_common.cpp

@@ -527,6 +527,20 @@ namespace step_
 	{
 		int Error = 0;
 
+		// scalar
+		{
+			float const Edge = 2.0f;
+
+			float const A = glm::step(Edge, 1.0f);
+			Error += glm::epsilonEqual(A, 0.0f, glm::epsilon<float>()) ? 0 : 1;
+
+			float const B = glm::step(Edge, 3.0f);
+			Error += glm::epsilonEqual(B, 1.0f, glm::epsilon<float>()) ? 0 : 1;
+
+			float const C = glm::step(Edge, 2.0f);
+			Error += glm::epsilonEqual(C, 1.0f, glm::epsilon<float>()) ? 0 : 1;
+		}
+
 		// vec4 and float
 		{
 			for (std::size_t i = 0; i < sizeof(TestVec4Scalar) / sizeof(entry<float, glm::vec4>); ++i)