summaryrefslogtreecommitdiff
path: root/indra/newview/gltf/asset.cpp
diff options
context:
space:
mode:
authorDave Parks <davep@lindenlab.com>2024-06-11 17:10:13 -0500
committerGitHub <noreply@github.com>2024-06-11 17:10:13 -0500
commitf40fbdf4ad27a547e30781cd44cd6847d68d3300 (patch)
treeb26dd135413752a90037bd48ad2217c4dea027ef /indra/newview/gltf/asset.cpp
parent429c92ad75fd3b3f7b9dfc52ed034b25004a3b9c (diff)
#1718 Add GLTF support for multiple texcoords (#1720)
* Fix for GLTF MeshPrimitiveModes test
Diffstat (limited to 'indra/newview/gltf/asset.cpp')
-rw-r--r--indra/newview/gltf/asset.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/indra/newview/gltf/asset.cpp b/indra/newview/gltf/asset.cpp
index 4c1da3e645..21be69aae2 100644
--- a/indra/newview/gltf/asset.cpp
+++ b/indra/newview/gltf/asset.cpp
@@ -910,6 +910,24 @@ void Material::TextureInfo::serialize(object& dst) const
write_extensions(dst, &mTextureTransform, "KHR_texture_transform");
}
+S32 Material::TextureInfo::getTexCoord() const
+{
+ if (mTextureTransform.mPresent && mTextureTransform.mTexCoord != INVALID_INDEX)
+ {
+ return mTextureTransform.mTexCoord;
+ }
+ return mTexCoord;
+}
+
+bool Material::isMultiUV() const
+{
+ return mPbrMetallicRoughness.mBaseColorTexture.getTexCoord() != 0 ||
+ mPbrMetallicRoughness.mMetallicRoughnessTexture.getTexCoord() != 0 ||
+ mNormalTexture.getTexCoord() != 0 ||
+ mOcclusionTexture.getTexCoord() != 0 ||
+ mEmissiveTexture.getTexCoord() != 0;
+}
+
const Material::TextureInfo& Material::TextureInfo::operator=(const Value& src)
{
if (src.is_object())
@@ -1048,7 +1066,7 @@ void TextureTransform::serialize(object& dst) const
write(mOffset, "offset", dst, vec2(0.f, 0.f));
write(mRotation, "rotation", dst, 0.f);
write(mScale, "scale", dst, vec2(1.f, 1.f));
- write(mTexCoord, "texCoord", dst, 0);
+ write(mTexCoord, "texCoord", dst, -1);
}