diff --git a/Assets/VRM/Tests/VRMTextureEnumerateTests.cs b/Assets/VRM/Tests/VRMTextureEnumerateTests.cs index 80a9d80cf..f7d602a61 100644 --- a/Assets/VRM/Tests/VRMTextureEnumerateTests.cs +++ b/Assets/VRM/Tests/VRMTextureEnumerateTests.cs @@ -76,5 +76,60 @@ namespace VRM Assert.AreEqual(1, items.Length); } } + + [Test] + public void TextureEnumerationInUnknownShader() + { + var parser = new GltfParser + { + GLTF = new glTF + { + images = new List + { + new glTFImage{ + mimeType = "image/png", + } + }, + textures = new List + { + new glTFTexture{ + name = "texture0", + source = 0, + } + }, + materials = new List + { + new glTFMaterial{ + pbrMetallicRoughness = new glTFPbrMetallicRoughness{ + baseColorTexture = new glTFMaterialBaseColorTextureInfo{ + index = 0, + } + } + }, + } + } + }; + var vrm = new glTF_VRM_extensions + { + materialProperties = new List + { + new glTF_VRM_Material + { + shader = "UnknownShader", + textureProperties = new Dictionary + { + {"_MainTex", 0}, + } + }, + } + }; + + // 2系統ある? + Assert.IsTrue(VRMMToonMaterialImporter.TryCreateParam(parser, vrm, 0, out VRMShaders.MaterialDescriptor matDesc)); + Assert.AreEqual(1, matDesc.TextureSlots.Count); + + var items = new VrmTextureDescriptorGenerator(parser, vrm).Get().GetEnumerable().ToArray(); + Assert.AreEqual(1, items.Length); + } } }