diff --git a/Assets/VRM/UniGLTF/Scripts/IO/TextureItem.cs b/Assets/VRM/UniGLTF/Scripts/IO/TextureItem.cs index 261fb6117..cc03b6cb5 100644 --- a/Assets/VRM/UniGLTF/Scripts/IO/TextureItem.cs +++ b/Assets/VRM/UniGLTF/Scripts/IO/TextureItem.cs @@ -163,8 +163,7 @@ namespace UniGLTF var textureType = TextureIO.GetglTFTextureType(gltf, m_textureIndex); var colorSpace = TextureIO.GetColorSpace(textureType); var isLinear = colorSpace == RenderTextureReadWrite.Linear; - yield return m_textureLoader.ProcessOnMainThread(isLinear); - TextureSamplerUtil.SetSampler(Texture, gltf.GetSamplerFromTextureIndex(m_textureIndex)); + yield return m_textureLoader.ProcessOnMainThread(isLinear, gltf.GetSamplerFromTextureIndex(m_textureIndex)); } } #endregion diff --git a/Assets/VRM/UniGLTF/Scripts/IO/TextureLoader.cs b/Assets/VRM/UniGLTF/Scripts/IO/TextureLoader.cs index 06ba513c7..ee4ecf663 100644 --- a/Assets/VRM/UniGLTF/Scripts/IO/TextureLoader.cs +++ b/Assets/VRM/UniGLTF/Scripts/IO/TextureLoader.cs @@ -25,8 +25,9 @@ namespace UniGLTF /// Call from unity main thread /// /// + /// /// - IEnumerator ProcessOnMainThread(bool isLinear); + IEnumerator ProcessOnMainThread(bool isLinear, glTFTextureSampler sampler); } #if UNITY_EDITOR @@ -53,7 +54,7 @@ namespace UniGLTF { } - public IEnumerator ProcessOnMainThread(bool isLinear) + public IEnumerator ProcessOnMainThread(bool isLinear, glTFTextureSampler sampler) { // // texture from assets @@ -90,6 +91,12 @@ namespace UniGLTF importer.SaveAndReimport(); } + + if (sampler != null) + { + TextureSamplerUtil.SetSampler(Texture, sampler); + } + yield break; } } @@ -140,7 +147,7 @@ namespace UniGLTF m_imageBytes = ToArray(segments); } - public IEnumerator ProcessOnMainThread(bool isLinear) + public IEnumerator ProcessOnMainThread(bool isLinear, glTFTextureSampler sampler) { // // texture from image(png etc) bytes @@ -151,6 +158,10 @@ namespace UniGLTF { Texture.LoadImage(m_imageBytes); } + if (sampler != null) + { + TextureSamplerUtil.SetSampler(Texture, sampler); + } yield break; } } @@ -274,7 +285,7 @@ namespace UniGLTF } } - public IEnumerator ProcessOnMainThread(bool isLinear) + public IEnumerator ProcessOnMainThread(bool isLinear, glTFTextureSampler sampler) { // tmp file var tmp = Path.GetTempFileName(); @@ -328,6 +339,10 @@ namespace UniGLTF #error Unsupported Unity version #endif } + if (sampler != null) + { + TextureSamplerUtil.SetSampler(Texture, sampler); + } } } }