Browse Source

Trade: properly consider texture IDs when checking for packing.

pull/459/head
Vladimír Vondruš 6 years ago
parent
commit
a2b1fa0572
  1. 52
      src/Magnum/Trade/PbrMetallicRoughnessMaterialData.cpp
  2. 1
      src/Magnum/Trade/PbrSpecularGlossinessMaterialData.cpp

52
src/Magnum/Trade/PbrMetallicRoughnessMaterialData.cpp

@ -46,6 +46,7 @@ bool PbrMetallicRoughnessMaterialData::hasNoneRoughnessMetallicTexture() const {
return (hasAttribute(MaterialAttribute::NoneRoughnessMetallicTexture) || return (hasAttribute(MaterialAttribute::NoneRoughnessMetallicTexture) ||
(hasAttribute(MaterialAttribute::MetalnessTexture) && (hasAttribute(MaterialAttribute::MetalnessTexture) &&
hasAttribute(MaterialAttribute::RoughnessTexture) && hasAttribute(MaterialAttribute::RoughnessTexture) &&
attribute<UnsignedInt>(MaterialAttribute::MetalnessTexture) == attribute<UnsignedInt>(MaterialAttribute::RoughnessTexture) &&
roughnessTextureSwizzle() == MaterialTextureSwizzle::G && roughnessTextureSwizzle() == MaterialTextureSwizzle::G &&
metalnessTextureSwizzle() == MaterialTextureSwizzle::B)) && metalnessTextureSwizzle() == MaterialTextureSwizzle::B)) &&
roughnessTextureMatrix() == metalnessTextureMatrix() && roughnessTextureMatrix() == metalnessTextureMatrix() &&
@ -53,12 +54,17 @@ bool PbrMetallicRoughnessMaterialData::hasNoneRoughnessMetallicTexture() const {
} }
bool PbrMetallicRoughnessMaterialData::hasRoughnessMetallicOcclusionTexture() const { bool PbrMetallicRoughnessMaterialData::hasRoughnessMetallicOcclusionTexture() const {
if(!(hasAttribute(MaterialAttribute::RoughnessTexture) && if(!hasAttribute(MaterialAttribute::RoughnessTexture) ||
hasAttribute(MaterialAttribute::MetalnessTexture) && !hasAttribute(MaterialAttribute::MetalnessTexture) ||
hasAttribute(MaterialAttribute::OcclusionTexture) && !hasAttribute(MaterialAttribute::OcclusionTexture))
roughnessTextureSwizzle() == MaterialTextureSwizzle::R && return false;
metalnessTextureSwizzle() == MaterialTextureSwizzle::G &&
occlusionTextureSwizzle() == MaterialTextureSwizzle::B)) const UnsignedInt roughnessTexture = attribute<UnsignedInt>(MaterialAttribute::RoughnessTexture);
if(attribute<UnsignedInt>(MaterialAttribute::MetalnessTexture) != roughnessTexture ||
attribute<UnsignedInt>(MaterialAttribute::OcclusionTexture) != roughnessTexture ||
roughnessTextureSwizzle() != MaterialTextureSwizzle::R ||
metalnessTextureSwizzle() != MaterialTextureSwizzle::G ||
occlusionTextureSwizzle() != MaterialTextureSwizzle::B)
return false; return false;
const Matrix3 roughnessTextureMatrix = this->roughnessTextureMatrix(); const Matrix3 roughnessTextureMatrix = this->roughnessTextureMatrix();
@ -70,12 +76,17 @@ bool PbrMetallicRoughnessMaterialData::hasRoughnessMetallicOcclusionTexture() co
} }
bool PbrMetallicRoughnessMaterialData::hasOcclusionRoughnessMetallicTexture() const { bool PbrMetallicRoughnessMaterialData::hasOcclusionRoughnessMetallicTexture() const {
if(!(hasAttribute(MaterialAttribute::OcclusionTexture) && if(!hasAttribute(MaterialAttribute::OcclusionTexture) ||
hasAttribute(MaterialAttribute::RoughnessTexture) && !hasAttribute(MaterialAttribute::RoughnessTexture) ||
hasAttribute(MaterialAttribute::MetalnessTexture) && !hasAttribute(MaterialAttribute::MetalnessTexture))
occlusionTextureSwizzle() == MaterialTextureSwizzle::R && return false;
roughnessTextureSwizzle() == MaterialTextureSwizzle::G &&
metalnessTextureSwizzle() == MaterialTextureSwizzle::B)) const UnsignedInt occlusionTexture = attribute<UnsignedInt>(MaterialAttribute::OcclusionTexture);
if(attribute<UnsignedInt>(MaterialAttribute::RoughnessTexture) != occlusionTexture ||
attribute<UnsignedInt>(MaterialAttribute::MetalnessTexture) != occlusionTexture ||
occlusionTextureSwizzle() != MaterialTextureSwizzle::R ||
roughnessTextureSwizzle() != MaterialTextureSwizzle::G ||
metalnessTextureSwizzle() != MaterialTextureSwizzle::B)
return false; return false;
const Matrix3 occlusionTextureMatrix = this->occlusionTextureMatrix(); const Matrix3 occlusionTextureMatrix = this->occlusionTextureMatrix();
@ -87,12 +98,17 @@ bool PbrMetallicRoughnessMaterialData::hasOcclusionRoughnessMetallicTexture() co
} }
bool PbrMetallicRoughnessMaterialData::hasNormalRoughnessMetallicTexture() const { bool PbrMetallicRoughnessMaterialData::hasNormalRoughnessMetallicTexture() const {
if(!(hasAttribute(MaterialAttribute::NormalTexture) && if(!hasAttribute(MaterialAttribute::NormalTexture) ||
hasAttribute(MaterialAttribute::RoughnessTexture) && !hasAttribute(MaterialAttribute::RoughnessTexture) ||
hasAttribute(MaterialAttribute::MetalnessTexture) && !hasAttribute(MaterialAttribute::MetalnessTexture))
normalTextureSwizzle() == MaterialTextureSwizzle::RG && return false;
roughnessTextureSwizzle() == MaterialTextureSwizzle::B &&
metalnessTextureSwizzle() == MaterialTextureSwizzle::A)) const UnsignedInt normalTexture = attribute<UnsignedInt>(MaterialAttribute::NormalTexture);
if(attribute<UnsignedInt>(MaterialAttribute::RoughnessTexture) != normalTexture ||
attribute<UnsignedInt>(MaterialAttribute::MetalnessTexture) != normalTexture ||
normalTextureSwizzle() != MaterialTextureSwizzle::RG ||
roughnessTextureSwizzle() != MaterialTextureSwizzle::B ||
metalnessTextureSwizzle() != MaterialTextureSwizzle::A)
return false; return false;
const Matrix3 normalTextureMatrix = this->normalTextureMatrix(); const Matrix3 normalTextureMatrix = this->normalTextureMatrix();

1
src/Magnum/Trade/PbrSpecularGlossinessMaterialData.cpp

@ -46,6 +46,7 @@ bool PbrSpecularGlossinessMaterialData::hasSpecularGlossinessTexture() const {
return (hasAttribute(MaterialAttribute::SpecularGlossinessTexture) || return (hasAttribute(MaterialAttribute::SpecularGlossinessTexture) ||
(hasAttribute(MaterialAttribute::SpecularTexture) && (hasAttribute(MaterialAttribute::SpecularTexture) &&
hasAttribute(MaterialAttribute::GlossinessTexture) && hasAttribute(MaterialAttribute::GlossinessTexture) &&
attribute<UnsignedInt>(MaterialAttribute::SpecularTexture) == attribute<UnsignedInt>(MaterialAttribute::GlossinessTexture) &&
specularTextureSwizzle() == MaterialTextureSwizzle::RGB && specularTextureSwizzle() == MaterialTextureSwizzle::RGB &&
glossinessTextureSwizzle() == MaterialTextureSwizzle::A)) && glossinessTextureSwizzle() == MaterialTextureSwizzle::A)) &&
specularTextureMatrix() == glossinessTextureMatrix() && specularTextureMatrix() == glossinessTextureMatrix() &&

Loading…
Cancel
Save