From ce91b6d63e3007003f115205f159df03f3a25b7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 18 Feb 2025 00:08:40 +0100 Subject: [PATCH] Trade: clean up PbrMetallicRoughnessMaterialData packing tests. Reorder them, rename and add missing layer attributes. --- .../PbrMetallicRoughnessMaterialDataTest.cpp | 201 +++++++++--------- 1 file changed, 103 insertions(+), 98 deletions(-) diff --git a/src/Magnum/Trade/Test/PbrMetallicRoughnessMaterialDataTest.cpp b/src/Magnum/Trade/Test/PbrMetallicRoughnessMaterialDataTest.cpp index ca3cddd97..e3cfab937 100644 --- a/src/Magnum/Trade/Test/PbrMetallicRoughnessMaterialDataTest.cpp +++ b/src/Magnum/Trade/Test/PbrMetallicRoughnessMaterialDataTest.cpp @@ -40,10 +40,10 @@ struct PbrMetallicRoughnessMaterialDataTest: TestSuite::Tester { void defaults(); void textured(); void texturedDefaults(); - void texturedImplicitPackedMetallicRoughness(); - void texturedExplicitPackedMetallicRoughness(); - void texturedExplicitPackedRoughnessMetallicOcclusion(); + void texturedExplicitPackedNoneRoughnessMetallic(); + void texturedImplicitPackedOcclusionRoughnessMetallic(); void texturedExplicitPackedOcclusionRoughnessMetallic(); + void texturedExplicitPackedRoughnessMetallicOcclusion(); void texturedExplicitPackedNormalRoughnessMetallic(); void texturedSingleMatrixCoordinatesLayer(); void invalidTextures(); @@ -68,10 +68,10 @@ PbrMetallicRoughnessMaterialDataTest::PbrMetallicRoughnessMaterialDataTest() { &PbrMetallicRoughnessMaterialDataTest::defaults, &PbrMetallicRoughnessMaterialDataTest::textured, &PbrMetallicRoughnessMaterialDataTest::texturedDefaults, - &PbrMetallicRoughnessMaterialDataTest::texturedImplicitPackedMetallicRoughness, - &PbrMetallicRoughnessMaterialDataTest::texturedExplicitPackedMetallicRoughness, - &PbrMetallicRoughnessMaterialDataTest::texturedExplicitPackedRoughnessMetallicOcclusion, + &PbrMetallicRoughnessMaterialDataTest::texturedExplicitPackedNoneRoughnessMetallic, + &PbrMetallicRoughnessMaterialDataTest::texturedImplicitPackedOcclusionRoughnessMetallic, &PbrMetallicRoughnessMaterialDataTest::texturedExplicitPackedOcclusionRoughnessMetallic, + &PbrMetallicRoughnessMaterialDataTest::texturedExplicitPackedRoughnessMetallicOcclusion, &PbrMetallicRoughnessMaterialDataTest::texturedExplicitPackedNormalRoughnessMetallic, &PbrMetallicRoughnessMaterialDataTest::texturedSingleMatrixCoordinatesLayer, &PbrMetallicRoughnessMaterialDataTest::invalidTextures, @@ -307,7 +307,7 @@ void PbrMetallicRoughnessMaterialDataTest::texturedSingleMatrixCoordinatesLayer( CORRADE_COMPARE(data.emissiveTextureLayer(), 8); } -void PbrMetallicRoughnessMaterialDataTest::texturedImplicitPackedMetallicRoughness() { +void PbrMetallicRoughnessMaterialDataTest::texturedImplicitPackedNoneRoughnessMetallic() { /* Just the texture ID, the rest is implicit */ { PbrMetallicRoughnessMaterialData data{{}, { @@ -385,7 +385,7 @@ void PbrMetallicRoughnessMaterialDataTest::texturedImplicitPackedMetallicRoughne } } -void PbrMetallicRoughnessMaterialDataTest::texturedExplicitPackedMetallicRoughness() { +void PbrMetallicRoughnessMaterialDataTest::texturedExplicitPackedNoneRoughnessMetallic() { /* Just the texture IDs and swizzles, the rest is implicit */ { PbrMetallicRoughnessMaterialData data{{}, { @@ -475,216 +475,221 @@ void PbrMetallicRoughnessMaterialDataTest::texturedExplicitPackedMetallicRoughne } } -void PbrMetallicRoughnessMaterialDataTest::texturedExplicitPackedRoughnessMetallicOcclusion() { +void PbrMetallicRoughnessMaterialDataTest::texturedExplicitPackedOcclusionRoughnessMetallic() { /* Just the texture IDs and swizzles, the rest is implicit */ { PbrMetallicRoughnessMaterialData data{{}, { + {MaterialAttribute::OcclusionTexture, 2u}, {MaterialAttribute::RoughnessTexture, 2u}, + {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::G}, {MaterialAttribute::MetalnessTexture, 2u}, - {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::G}, - {MaterialAttribute::OcclusionTexture, 2u}, - {MaterialAttribute::OcclusionTextureSwizzle, MaterialTextureSwizzle::B}, + {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::B}, }}; - CORRADE_VERIFY(data.hasRoughnessMetallicOcclusionTexture()); - /* This isn't a superset */ - CORRADE_VERIFY(!data.hasNoneRoughnessMetallicTexture()); + CORRADE_VERIFY(data.hasOcclusionRoughnessMetallicTexture()); + /* This is a superset */ + CORRADE_VERIFY(data.hasNoneRoughnessMetallicTexture()); /* Explicit parameters for everything, but all the same */ } { PbrMetallicRoughnessMaterialData data{{}, { + {MaterialAttribute::OcclusionTexture, 2u}, + {MaterialAttribute::OcclusionTextureSwizzle, MaterialTextureSwizzle::R}, + {MaterialAttribute::OcclusionTextureMatrix, Matrix3::scaling({0.5f, 0.5f})}, + {MaterialAttribute::OcclusionTextureCoordinates, 3u}, + {MaterialAttribute::OcclusionTextureLayer, 17u}, {MaterialAttribute::RoughnessTexture, 2u}, - {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::R}, + {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::G}, {MaterialAttribute::RoughnessTextureMatrix, Matrix3::scaling({0.5f, 0.5f})}, {MaterialAttribute::RoughnessTextureCoordinates, 3u}, - {MaterialAttribute::RoughnessTextureLayer, 7u}, + {MaterialAttribute::RoughnessTextureLayer, 17u}, {MaterialAttribute::MetalnessTexture, 2u}, {MaterialAttribute::MetalnessTextureMatrix, Matrix3::scaling({0.5f, 0.5f})}, - {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::G}, + {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::B}, {MaterialAttribute::MetalnessTextureCoordinates, 3u}, - {MaterialAttribute::MetalnessTextureLayer, 7u}, - {MaterialAttribute::OcclusionTexture, 2u}, - {MaterialAttribute::OcclusionTextureSwizzle, MaterialTextureSwizzle::B}, - {MaterialAttribute::OcclusionTextureMatrix, Matrix3::scaling({0.5f, 0.5f})}, - {MaterialAttribute::OcclusionTextureCoordinates, 3u}, - {MaterialAttribute::OcclusionTextureLayer, 7u}, + {MaterialAttribute::MetalnessTextureLayer, 17u} }}; - CORRADE_VERIFY(data.hasRoughnessMetallicOcclusionTexture()); - /* This isn't a superset */ - CORRADE_VERIFY(!data.hasNoneRoughnessMetallicTexture()); + CORRADE_VERIFY(data.hasOcclusionRoughnessMetallicTexture()); + /* This is 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}, + {MaterialAttribute::RoughnessTexture, 3u}, + {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::G}, + {MaterialAttribute::MetalnessTexture, 2u}, + {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::B}, }}; - CORRADE_VERIFY(!data.hasRoughnessMetallicOcclusionTexture()); + CORRADE_VERIFY(!data.hasOcclusionRoughnessMetallicTexture()); /* One texture missing */ } { PbrMetallicRoughnessMaterialData data{{}, { {MaterialAttribute::RoughnessTexture, 2u}, + {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::G}, {MaterialAttribute::MetalnessTexture, 2u}, - {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::G}, - {MaterialAttribute::OcclusionTextureSwizzle, MaterialTextureSwizzle::B}, + {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::B}, }}; - CORRADE_VERIFY(!data.hasRoughnessMetallicOcclusionTexture()); + CORRADE_VERIFY(!data.hasOcclusionRoughnessMetallicTexture()); /* Unexpected swizzle */ } { PbrMetallicRoughnessMaterialData data{{}, { + {MaterialAttribute::OcclusionTexture, 2u}, + {MaterialAttribute::OcclusionTextureSwizzle, MaterialTextureSwizzle::A}, {MaterialAttribute::RoughnessTexture, 2u}, - {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::A}, + {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::G}, {MaterialAttribute::MetalnessTexture, 2u}, - {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::G}, - {MaterialAttribute::OcclusionTexture, 2u}, - {MaterialAttribute::OcclusionTextureSwizzle, MaterialTextureSwizzle::B}, + {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::B}, }}; - CORRADE_VERIFY(!data.hasRoughnessMetallicOcclusionTexture()); + CORRADE_VERIFY(!data.hasOcclusionRoughnessMetallicTexture()); /* Unexpected texture matrix */ } { PbrMetallicRoughnessMaterialData data{{}, { - {MaterialAttribute::RoughnessTexture, 2u}, - {MaterialAttribute::MetalnessTexture, 2u}, - {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::G}, {MaterialAttribute::OcclusionTexture, 2u}, - {MaterialAttribute::OcclusionTextureSwizzle, MaterialTextureSwizzle::B}, {MaterialAttribute::OcclusionTextureMatrix, Matrix3::scaling({0.5f, 1.0f})}, + {MaterialAttribute::RoughnessTexture, 2u}, + {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::G}, + {MaterialAttribute::MetalnessTexture, 2u}, + {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::B}, }}; - CORRADE_VERIFY(!data.hasRoughnessMetallicOcclusionTexture()); + CORRADE_VERIFY(!data.hasOcclusionRoughnessMetallicTexture()); /* Unexpected texture coordinates */ } { PbrMetallicRoughnessMaterialData data{{}, { + {MaterialAttribute::OcclusionTexture, 2u}, {MaterialAttribute::RoughnessTexture, 2u}, + {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::G}, {MaterialAttribute::MetalnessTexture, 2u}, - {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::G}, + {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::B}, {MaterialAttribute::MetalnessTextureCoordinates, 1u}, - {MaterialAttribute::OcclusionTexture, 2u}, - {MaterialAttribute::OcclusionTextureSwizzle, MaterialTextureSwizzle::B}, }}; - CORRADE_VERIFY(!data.hasRoughnessMetallicOcclusionTexture()); + CORRADE_VERIFY(!data.hasOcclusionRoughnessMetallicTexture()); /* Unexpected array texture layer */ } { PbrMetallicRoughnessMaterialData data{{}, { + {MaterialAttribute::OcclusionTexture, 2u}, + {MaterialAttribute::OcclusionTextureLayer, 1u}, {MaterialAttribute::RoughnessTexture, 2u}, - {MaterialAttribute::RoughnessTextureLayer, 1u}, + {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::G}, {MaterialAttribute::MetalnessTexture, 2u}, - {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::G}, - {MaterialAttribute::OcclusionTexture, 2u}, - {MaterialAttribute::OcclusionTextureSwizzle, MaterialTextureSwizzle::B}, + {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::B}, }}; - CORRADE_VERIFY(!data.hasRoughnessMetallicOcclusionTexture()); + CORRADE_VERIFY(!data.hasOcclusionRoughnessMetallicTexture()); } } -void PbrMetallicRoughnessMaterialDataTest::texturedExplicitPackedOcclusionRoughnessMetallic() { +void PbrMetallicRoughnessMaterialDataTest::texturedExplicitPackedRoughnessMetallicOcclusion() { /* Just the texture IDs and swizzles, the rest is implicit */ { PbrMetallicRoughnessMaterialData data{{}, { - {MaterialAttribute::OcclusionTexture, 2u}, {MaterialAttribute::RoughnessTexture, 2u}, - {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::G}, {MaterialAttribute::MetalnessTexture, 2u}, - {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::B}, + {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::G}, + {MaterialAttribute::OcclusionTexture, 2u}, + {MaterialAttribute::OcclusionTextureSwizzle, MaterialTextureSwizzle::B}, }}; - CORRADE_VERIFY(data.hasOcclusionRoughnessMetallicTexture()); - /* This is a superset */ - CORRADE_VERIFY(data.hasNoneRoughnessMetallicTexture()); + CORRADE_VERIFY(!data.hasOcclusionRoughnessMetallicTexture()); + CORRADE_VERIFY(data.hasRoughnessMetallicOcclusionTexture()); + /* This isn't a superset */ + CORRADE_VERIFY(!data.hasNoneRoughnessMetallicTexture()); /* Explicit parameters for everything, but all the same */ } { PbrMetallicRoughnessMaterialData data{{}, { - {MaterialAttribute::OcclusionTexture, 2u}, - {MaterialAttribute::OcclusionTextureSwizzle, MaterialTextureSwizzle::R}, - {MaterialAttribute::OcclusionTextureMatrix, Matrix3::scaling({0.5f, 0.5f})}, - {MaterialAttribute::OcclusionTextureCoordinates, 3u}, {MaterialAttribute::RoughnessTexture, 2u}, - {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::G}, + {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::R}, {MaterialAttribute::RoughnessTextureMatrix, Matrix3::scaling({0.5f, 0.5f})}, {MaterialAttribute::RoughnessTextureCoordinates, 3u}, + {MaterialAttribute::RoughnessTextureLayer, 7u}, {MaterialAttribute::MetalnessTexture, 2u}, {MaterialAttribute::MetalnessTextureMatrix, Matrix3::scaling({0.5f, 0.5f})}, - {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::B}, - {MaterialAttribute::MetalnessTextureCoordinates, 3u} + {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::G}, + {MaterialAttribute::MetalnessTextureCoordinates, 3u}, + {MaterialAttribute::MetalnessTextureLayer, 7u}, + {MaterialAttribute::OcclusionTexture, 2u}, + {MaterialAttribute::OcclusionTextureSwizzle, MaterialTextureSwizzle::B}, + {MaterialAttribute::OcclusionTextureMatrix, Matrix3::scaling({0.5f, 0.5f})}, + {MaterialAttribute::OcclusionTextureCoordinates, 3u}, + {MaterialAttribute::OcclusionTextureLayer, 7u}, }}; - CORRADE_VERIFY(data.hasOcclusionRoughnessMetallicTexture()); - /* This is a superset */ - CORRADE_VERIFY(data.hasNoneRoughnessMetallicTexture()); + CORRADE_VERIFY(!data.hasOcclusionRoughnessMetallicTexture()); + CORRADE_VERIFY(data.hasRoughnessMetallicOcclusionTexture()); + /* 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::RoughnessTexture, 3u}, - {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::G}, - {MaterialAttribute::MetalnessTexture, 2u}, - {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::B}, + {MaterialAttribute::OcclusionTextureSwizzle, MaterialTextureSwizzle::B}, }}; - CORRADE_VERIFY(!data.hasOcclusionRoughnessMetallicTexture()); + CORRADE_VERIFY(!data.hasRoughnessMetallicOcclusionTexture()); /* One texture missing */ } { PbrMetallicRoughnessMaterialData data{{}, { {MaterialAttribute::RoughnessTexture, 2u}, - {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::G}, {MaterialAttribute::MetalnessTexture, 2u}, - {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::B}, + {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::G}, + {MaterialAttribute::OcclusionTextureSwizzle, MaterialTextureSwizzle::B}, }}; - CORRADE_VERIFY(!data.hasOcclusionRoughnessMetallicTexture()); + CORRADE_VERIFY(!data.hasRoughnessMetallicOcclusionTexture()); /* Unexpected swizzle */ } { PbrMetallicRoughnessMaterialData data{{}, { - {MaterialAttribute::OcclusionTexture, 2u}, - {MaterialAttribute::OcclusionTextureSwizzle, MaterialTextureSwizzle::A}, {MaterialAttribute::RoughnessTexture, 2u}, - {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::G}, + {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::A}, {MaterialAttribute::MetalnessTexture, 2u}, - {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::B}, + {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::G}, + {MaterialAttribute::OcclusionTexture, 2u}, + {MaterialAttribute::OcclusionTextureSwizzle, MaterialTextureSwizzle::B}, }}; - CORRADE_VERIFY(!data.hasOcclusionRoughnessMetallicTexture()); + CORRADE_VERIFY(!data.hasRoughnessMetallicOcclusionTexture()); /* Unexpected texture matrix */ } { PbrMetallicRoughnessMaterialData data{{}, { - {MaterialAttribute::OcclusionTexture, 2u}, - {MaterialAttribute::OcclusionTextureMatrix, Matrix3::scaling({0.5f, 1.0f})}, {MaterialAttribute::RoughnessTexture, 2u}, - {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::G}, {MaterialAttribute::MetalnessTexture, 2u}, - {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::B}, + {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::G}, + {MaterialAttribute::OcclusionTexture, 2u}, + {MaterialAttribute::OcclusionTextureSwizzle, MaterialTextureSwizzle::B}, + {MaterialAttribute::OcclusionTextureMatrix, Matrix3::scaling({0.5f, 1.0f})}, }}; - CORRADE_VERIFY(!data.hasOcclusionRoughnessMetallicTexture()); + CORRADE_VERIFY(!data.hasRoughnessMetallicOcclusionTexture()); /* Unexpected texture coordinates */ } { PbrMetallicRoughnessMaterialData data{{}, { - {MaterialAttribute::OcclusionTexture, 2u}, {MaterialAttribute::RoughnessTexture, 2u}, - {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::G}, {MaterialAttribute::MetalnessTexture, 2u}, - {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::B}, + {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::G}, {MaterialAttribute::MetalnessTextureCoordinates, 1u}, + {MaterialAttribute::OcclusionTexture, 2u}, + {MaterialAttribute::OcclusionTextureSwizzle, MaterialTextureSwizzle::B}, }}; - CORRADE_VERIFY(!data.hasOcclusionRoughnessMetallicTexture()); + CORRADE_VERIFY(!data.hasRoughnessMetallicOcclusionTexture()); /* Unexpected array texture layer */ } { PbrMetallicRoughnessMaterialData data{{}, { - {MaterialAttribute::OcclusionTexture, 2u}, - {MaterialAttribute::OcclusionTextureLayer, 1u}, {MaterialAttribute::RoughnessTexture, 2u}, - {MaterialAttribute::RoughnessTextureSwizzle, MaterialTextureSwizzle::G}, + {MaterialAttribute::RoughnessTextureLayer, 1u}, {MaterialAttribute::MetalnessTexture, 2u}, - {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::B}, + {MaterialAttribute::MetalnessTextureSwizzle, MaterialTextureSwizzle::G}, + {MaterialAttribute::OcclusionTexture, 2u}, + {MaterialAttribute::OcclusionTextureSwizzle, MaterialTextureSwizzle::B}, }}; - CORRADE_VERIFY(!data.hasOcclusionRoughnessMetallicTexture()); + CORRADE_VERIFY(!data.hasRoughnessMetallicOcclusionTexture()); } }