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

This commit is contained in:
Christophe Riccio 2017-10-22 16:58:09 +02:00
parent 5dbb4470e7
commit fcbedf5058
2 changed files with 15 additions and 1 deletions

View File

@ -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>

View File

@ -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)