Browse Source

Trade: clean up PbrMetallicRoughnessMaterialData packing tests.

Reorder them, rename and add missing layer attributes.
pull/651/merge
Vladimír Vondruš 1 year ago
parent
commit
ce91b6d63e
  1. 201
      src/Magnum/Trade/Test/PbrMetallicRoughnessMaterialDataTest.cpp

201
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());
}
}

Loading…
Cancel
Save