diff --git a/src/Magnum/DebugTools/CompareMaterial.cpp b/src/Magnum/DebugTools/CompareMaterial.cpp index 1d32b2c80..86b9c578c 100644 --- a/src/Magnum/DebugTools/CompareMaterial.cpp +++ b/src/Magnum/DebugTools/CompareMaterial.cpp @@ -91,9 +91,9 @@ bool attributesEqual(const Trade::MaterialAttributeData& a, const Trade::Materia CORRADE_INTERNAL_ASSERT(a.type() == b.type()); switch(a.type()) { #define _c(type) case Trade::MaterialAttributeType::type: \ - return a.value() == b.value(); + return Math::TypeTraits::equals(a.value(), b.value()); #define _ct(name, type) case Trade::MaterialAttributeType::name: \ - return a.value() == b.value(); + return Math::TypeTraits::equals(a.value(), b.value()); _ct(Bool, bool) /* LCOV_EXCL_START */ _c(Float) diff --git a/src/Magnum/DebugTools/Test/CompareMaterialTest.cpp b/src/Magnum/DebugTools/Test/CompareMaterialTest.cpp index 680035d7d..01f77b42f 100644 --- a/src/Magnum/DebugTools/Test/CompareMaterialTest.cpp +++ b/src/Magnum/DebugTools/Test/CompareMaterialTest.cpp @@ -80,6 +80,18 @@ const struct { {Trade::MaterialLayer::ClearCoat}, {"name", "hello"_s}, }, {1, 3, 4}}}, + {"fuzzy compare", + Trade::MaterialData{Trade::MaterialType::Phong, { + {Trade::MaterialAttribute::Shininess, 2000.0f}, + {Trade::MaterialAttribute::AlphaMask, 0.5f}, + {Trade::MaterialAttribute::DiffuseTexture, 3u}, + }}, + Trade::MaterialData{Trade::MaterialType::Phong, { + {Trade::MaterialAttribute::Shininess, 2000.0f + 0.01f}, + {Trade::MaterialAttribute::AlphaMask, 0.5f - 1.0e-6f}, + {Trade::MaterialAttribute::DiffuseTexture, 3u}, + }}, + }, }; const struct {