From c2942ce7ac16238ad709d073bdcac44bcf22426e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sun, 16 Aug 2020 12:48:17 +0200 Subject: [PATCH] Trade: material packing queries definitely check for different IDs, right? Err, nope. Not a single one of them. --- src/Magnum/Trade/Test/MaterialDataTest.cpp | 53 ++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/src/Magnum/Trade/Test/MaterialDataTest.cpp b/src/Magnum/Trade/Test/MaterialDataTest.cpp index 62bce1c65..0e712b21c 100644 --- a/src/Magnum/Trade/Test/MaterialDataTest.cpp +++ b/src/Magnum/Trade/Test/MaterialDataTest.cpp @@ -3045,6 +3045,16 @@ void MaterialDataTest::pbrMetallicRoughnessAccessTexturedExplicitPackedMetallicR }}; CORRADE_VERIFY(data.hasNoneRoughnessMetallicTexture()); + /* Different texture ID */ + } { + PbrMetallicRoughnessMaterialData data{{}, { + {MaterialAttribute::RoughnessTexture, 2u}, + {MaterialAttribute::MetalnessTexture, 3u}, + {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::G}, + {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::B} + }}; + CORRADE_VERIFY(!data.hasNoneRoughnessMetallicTexture()); + /* One texture missing */ } { PbrMetallicRoughnessMaterialData data{{}, { @@ -3121,6 +3131,17 @@ void MaterialDataTest::pbrMetallicRoughnessAccessTexturedExplicitPackedRoughness /* This isn't a superset */ CORRADE_VERIFY(!data.hasNoneRoughnessMetallicTexture()); + /* Different texture ID */ + } { + PbrMetallicRoughnessMaterialData data{{}, { + {MaterialAttribute::RoughnessTexture, 2u}, + {MaterialAttribute::MetalnessTexture, 3u}, + {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::G}, + {MaterialAttribute::OcclusionTexture, 2u}, + {MaterialAttribute::OcclusionTextureSwizzle, MaterialTextureSwizzle::B}, + }}; + CORRADE_VERIFY(!data.hasRoughnessMetallicOcclusionTexture()); + /* One texture missing */ } { PbrMetallicRoughnessMaterialData data{{}, { @@ -3203,6 +3224,17 @@ void MaterialDataTest::pbrMetallicRoughnessAccessTexturedExplicitPackedOcclusion /* This is a superset */ CORRADE_VERIFY(data.hasNoneRoughnessMetallicTexture()); + /* Different texture ID */ + } { + PbrMetallicRoughnessMaterialData data{{}, { + {MaterialAttribute::OcclusionTexture, 2u}, + {MaterialAttribute::RoughnessTexture, 3u}, + {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::G}, + {MaterialAttribute::MetalnessTexture, 2u}, + {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::B}, + }}; + CORRADE_VERIFY(!data.hasOcclusionRoughnessMetallicTexture()); + /* One texture missing */ } { PbrMetallicRoughnessMaterialData data{{}, { @@ -3282,6 +3314,18 @@ void MaterialDataTest::pbrMetallicRoughnessAccessTexturedExplicitPackedNormalRou }}; CORRADE_VERIFY(data.hasNormalRoughnessMetallicTexture()); + /* Different texture ID */ + } { + PbrMetallicRoughnessMaterialData data{{}, { + {MaterialAttribute::NormalTexture, 2u}, + {MaterialAttribute::NormalTextureSwizzle, MaterialTextureSwizzle::RG}, + {MaterialAttribute::RoughnessTexture, 2u}, + {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::B}, + {MaterialAttribute::MetalnessTexture, 3u}, + {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::A} + }}; + CORRADE_VERIFY(!data.hasNormalRoughnessMetallicTexture()); + /* One texture missing */ } { PbrMetallicRoughnessMaterialData data{{}, { @@ -3762,6 +3806,15 @@ void MaterialDataTest::pbrSpecularGlossinessAccessTexturedExplicitPackedSpecular CORRADE_COMPARE(data.glossinessTextureMatrix(), Matrix3::scaling({0.5f, 0.5f})); CORRADE_COMPARE(data.glossinessTextureCoordinates(), 3); + /* Different texture ID */ + } { + PbrSpecularGlossinessMaterialData data{{}, { + {MaterialAttribute::SpecularTexture, 2u}, + {MaterialAttribute::GlossinessTexture, 3u}, + {MaterialAttribute::GlossinessTextureSwizzle, MaterialTextureSwizzle::A} + }}; + CORRADE_VERIFY(!data.hasSpecularGlossinessTexture()); + /* Unexpected swizzle 1 */ } { PbrSpecularGlossinessMaterialData data{{}, {