diff --git a/src/Magnum/Trade/PbrMetallicRoughnessMaterialData.cpp b/src/Magnum/Trade/PbrMetallicRoughnessMaterialData.cpp index 2da8aa710..08898f3b3 100644 --- a/src/Magnum/Trade/PbrMetallicRoughnessMaterialData.cpp +++ b/src/Magnum/Trade/PbrMetallicRoughnessMaterialData.cpp @@ -46,6 +46,7 @@ bool PbrMetallicRoughnessMaterialData::hasNoneRoughnessMetallicTexture() const { return (hasAttribute(MaterialAttribute::NoneRoughnessMetallicTexture) || (hasAttribute(MaterialAttribute::MetalnessTexture) && hasAttribute(MaterialAttribute::RoughnessTexture) && + attribute(MaterialAttribute::MetalnessTexture) == attribute(MaterialAttribute::RoughnessTexture) && roughnessTextureSwizzle() == MaterialTextureSwizzle::G && metalnessTextureSwizzle() == MaterialTextureSwizzle::B)) && roughnessTextureMatrix() == metalnessTextureMatrix() && @@ -53,12 +54,17 @@ bool PbrMetallicRoughnessMaterialData::hasNoneRoughnessMetallicTexture() const { } bool PbrMetallicRoughnessMaterialData::hasRoughnessMetallicOcclusionTexture() const { - if(!(hasAttribute(MaterialAttribute::RoughnessTexture) && - hasAttribute(MaterialAttribute::MetalnessTexture) && - hasAttribute(MaterialAttribute::OcclusionTexture) && - roughnessTextureSwizzle() == MaterialTextureSwizzle::R && - metalnessTextureSwizzle() == MaterialTextureSwizzle::G && - occlusionTextureSwizzle() == MaterialTextureSwizzle::B)) + if(!hasAttribute(MaterialAttribute::RoughnessTexture) || + !hasAttribute(MaterialAttribute::MetalnessTexture) || + !hasAttribute(MaterialAttribute::OcclusionTexture)) + return false; + + const UnsignedInt roughnessTexture = attribute(MaterialAttribute::RoughnessTexture); + if(attribute(MaterialAttribute::MetalnessTexture) != roughnessTexture || + attribute(MaterialAttribute::OcclusionTexture) != roughnessTexture || + roughnessTextureSwizzle() != MaterialTextureSwizzle::R || + metalnessTextureSwizzle() != MaterialTextureSwizzle::G || + occlusionTextureSwizzle() != MaterialTextureSwizzle::B) return false; const Matrix3 roughnessTextureMatrix = this->roughnessTextureMatrix(); @@ -70,12 +76,17 @@ bool PbrMetallicRoughnessMaterialData::hasRoughnessMetallicOcclusionTexture() co } bool PbrMetallicRoughnessMaterialData::hasOcclusionRoughnessMetallicTexture() const { - if(!(hasAttribute(MaterialAttribute::OcclusionTexture) && - hasAttribute(MaterialAttribute::RoughnessTexture) && - hasAttribute(MaterialAttribute::MetalnessTexture) && - occlusionTextureSwizzle() == MaterialTextureSwizzle::R && - roughnessTextureSwizzle() == MaterialTextureSwizzle::G && - metalnessTextureSwizzle() == MaterialTextureSwizzle::B)) + if(!hasAttribute(MaterialAttribute::OcclusionTexture) || + !hasAttribute(MaterialAttribute::RoughnessTexture) || + !hasAttribute(MaterialAttribute::MetalnessTexture)) + return false; + + const UnsignedInt occlusionTexture = attribute(MaterialAttribute::OcclusionTexture); + if(attribute(MaterialAttribute::RoughnessTexture) != occlusionTexture || + attribute(MaterialAttribute::MetalnessTexture) != occlusionTexture || + occlusionTextureSwizzle() != MaterialTextureSwizzle::R || + roughnessTextureSwizzle() != MaterialTextureSwizzle::G || + metalnessTextureSwizzle() != MaterialTextureSwizzle::B) return false; const Matrix3 occlusionTextureMatrix = this->occlusionTextureMatrix(); @@ -87,12 +98,17 @@ bool PbrMetallicRoughnessMaterialData::hasOcclusionRoughnessMetallicTexture() co } bool PbrMetallicRoughnessMaterialData::hasNormalRoughnessMetallicTexture() const { - if(!(hasAttribute(MaterialAttribute::NormalTexture) && - hasAttribute(MaterialAttribute::RoughnessTexture) && - hasAttribute(MaterialAttribute::MetalnessTexture) && - normalTextureSwizzle() == MaterialTextureSwizzle::RG && - roughnessTextureSwizzle() == MaterialTextureSwizzle::B && - metalnessTextureSwizzle() == MaterialTextureSwizzle::A)) + if(!hasAttribute(MaterialAttribute::NormalTexture) || + !hasAttribute(MaterialAttribute::RoughnessTexture) || + !hasAttribute(MaterialAttribute::MetalnessTexture)) + return false; + + const UnsignedInt normalTexture = attribute(MaterialAttribute::NormalTexture); + if(attribute(MaterialAttribute::RoughnessTexture) != normalTexture || + attribute(MaterialAttribute::MetalnessTexture) != normalTexture || + normalTextureSwizzle() != MaterialTextureSwizzle::RG || + roughnessTextureSwizzle() != MaterialTextureSwizzle::B || + metalnessTextureSwizzle() != MaterialTextureSwizzle::A) return false; const Matrix3 normalTextureMatrix = this->normalTextureMatrix(); diff --git a/src/Magnum/Trade/PbrSpecularGlossinessMaterialData.cpp b/src/Magnum/Trade/PbrSpecularGlossinessMaterialData.cpp index 083cdc171..11fd16b71 100644 --- a/src/Magnum/Trade/PbrSpecularGlossinessMaterialData.cpp +++ b/src/Magnum/Trade/PbrSpecularGlossinessMaterialData.cpp @@ -46,6 +46,7 @@ bool PbrSpecularGlossinessMaterialData::hasSpecularGlossinessTexture() const { return (hasAttribute(MaterialAttribute::SpecularGlossinessTexture) || (hasAttribute(MaterialAttribute::SpecularTexture) && hasAttribute(MaterialAttribute::GlossinessTexture) && + attribute(MaterialAttribute::SpecularTexture) == attribute(MaterialAttribute::GlossinessTexture) && specularTextureSwizzle() == MaterialTextureSwizzle::RGB && glossinessTextureSwizzle() == MaterialTextureSwizzle::A)) && specularTextureMatrix() == glossinessTextureMatrix() &&