diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/GltfMaterialImporter.cs b/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/GltfMaterialImporter.cs index 012993ced..2ecf9d010 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/GltfMaterialImporter.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/GltfMaterialImporter.cs @@ -10,7 +10,7 @@ namespace UniGLTF /// public sealed class GltfMaterialImporter : IMaterialImporter { - public MaterialImportParam GetMaterialParam(GltfParser parser, int i) + public MaterialDescriptor GetMaterialParam(GltfParser parser, int i) { if (!GltfUnlitMaterialImporter.TryCreateParam(parser, i, out var param)) { @@ -20,7 +20,7 @@ namespace UniGLTF #if VRM_DEVELOP Debug.LogWarning($"material: {i} out of range. fallback"); #endif - return new MaterialImportParam(GetMaterialName(i, null), GltfPbrMaterialImporter.ShaderName); + return new MaterialDescriptor(GetMaterialName(i, null), GltfPbrMaterialImporter.ShaderName); } } diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/GltfPbrMaterialImporter.cs b/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/GltfPbrMaterialImporter.cs index 749b05252..a0993ea6d 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/GltfPbrMaterialImporter.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/GltfPbrMaterialImporter.cs @@ -47,16 +47,16 @@ namespace UniGLTF Transparent } - public static bool TryCreateParam(GltfParser parser, int i, out MaterialImportParam param) + public static bool TryCreateParam(GltfParser parser, int i, out MaterialDescriptor matDesc) { if (i < 0 || i >= parser.GLTF.materials.Count) { - param = default; + matDesc = default; return false; } var src = parser.GLTF.materials[i]; - param = new MaterialImportParam(GltfMaterialImporter.GetMaterialName(i, src), ShaderName); + matDesc = new MaterialDescriptor(GltfMaterialImporter.GetMaterialName(i, src), ShaderName); var standardTexDesc = default(TextureDescriptor); if (src.pbrMetallicRoughness != null || src.occlusionTexture != null) @@ -69,7 +69,7 @@ namespace UniGLTF if (src.pbrMetallicRoughness.baseColorFactor != null && src.pbrMetallicRoughness.baseColorFactor.Length == 4) { - param.Colors.Add("_Color", + matDesc.Colors.Add("_Color", src.pbrMetallicRoughness.baseColorFactor.ToColor4(ColorSpace.Linear, ColorSpace.sRGB) ); } @@ -77,42 +77,42 @@ namespace UniGLTF if (src.pbrMetallicRoughness.baseColorTexture != null && src.pbrMetallicRoughness.baseColorTexture.index != -1) { var (key, textureParam) = GltfPbrTextureImporter.BaseColorTexture(parser, src); - param.TextureSlots.Add("_MainTex", textureParam); + matDesc.TextureSlots.Add("_MainTex", textureParam); } if (src.pbrMetallicRoughness.metallicRoughnessTexture != null && src.pbrMetallicRoughness.metallicRoughnessTexture.index != -1) { - param.Actions.Add(material => material.EnableKeyword("_METALLICGLOSSMAP")); - param.TextureSlots.Add("_MetallicGlossMap", standardTexDesc); + matDesc.Actions.Add(material => material.EnableKeyword("_METALLICGLOSSMAP")); + matDesc.TextureSlots.Add("_MetallicGlossMap", standardTexDesc); // Set 1.0f as hard-coded. See: https://github.com/dwango/UniVRM/issues/212. - param.FloatValues.Add("_Metallic", 1.0f); - param.FloatValues.Add("_GlossMapScale", 1.0f); + matDesc.FloatValues.Add("_Metallic", 1.0f); + matDesc.FloatValues.Add("_GlossMapScale", 1.0f); } else { - param.FloatValues.Add("_Metallic", src.pbrMetallicRoughness.metallicFactor); - param.FloatValues.Add("_Glossiness", 1.0f - src.pbrMetallicRoughness.roughnessFactor); + matDesc.FloatValues.Add("_Metallic", src.pbrMetallicRoughness.metallicFactor); + matDesc.FloatValues.Add("_Glossiness", 1.0f - src.pbrMetallicRoughness.roughnessFactor); } } if (src.normalTexture != null && src.normalTexture.index != -1) { - param.Actions.Add(material => material.EnableKeyword("_NORMALMAP")); + matDesc.Actions.Add(material => material.EnableKeyword("_NORMALMAP")); var (key, textureParam) = GltfPbrTextureImporter.NormalTexture(parser, src); - param.TextureSlots.Add("_BumpMap", textureParam); - param.FloatValues.Add("_BumpScale", src.normalTexture.scale); + matDesc.TextureSlots.Add("_BumpMap", textureParam); + matDesc.FloatValues.Add("_BumpScale", src.normalTexture.scale); } if (src.occlusionTexture != null && src.occlusionTexture.index != -1) { - param.TextureSlots.Add("_OcclusionMap", standardTexDesc); - param.FloatValues.Add("_OcclusionStrength", src.occlusionTexture.strength); + matDesc.TextureSlots.Add("_OcclusionMap", standardTexDesc); + matDesc.FloatValues.Add("_OcclusionStrength", src.occlusionTexture.strength); } if (src.emissiveFactor != null || (src.emissiveTexture != null && src.emissiveTexture.index != -1)) { - param.Actions.Add(material => + matDesc.Actions.Add(material => { material.EnableKeyword("_EMISSION"); material.globalIlluminationFlags &= ~MaterialGlobalIlluminationFlags.EmissiveIsBlack; @@ -120,7 +120,7 @@ namespace UniGLTF if (src.emissiveFactor != null && src.emissiveFactor.Length == 3) { - param.Colors.Add("_EmissionColor", + matDesc.Colors.Add("_EmissionColor", src.emissiveFactor.ToColor3(ColorSpace.Linear, ColorSpace.Linear) ); } @@ -128,11 +128,11 @@ namespace UniGLTF if (src.emissiveTexture != null && src.emissiveTexture.index != -1) { var (key, textureParam) = GltfPbrTextureImporter.EmissiveTexture(parser, src); - param.TextureSlots.Add("_EmissionMap", textureParam); + matDesc.TextureSlots.Add("_EmissionMap", textureParam); } } - param.Actions.Add(material => + matDesc.Actions.Add(material => { BlendMode blendMode = BlendMode.Opaque; // https://forum.unity.com/threads/standard-material-shader-ignoring-setfloat-property-_mode.344557/#post-2229980 diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/GltfUnlitMaterialImporter.cs b/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/GltfUnlitMaterialImporter.cs index 149570a6a..1fc547248 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/GltfUnlitMaterialImporter.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/GltfUnlitMaterialImporter.cs @@ -8,41 +8,41 @@ namespace UniGLTF { public const string ShaderName = "UniGLTF/UniUnlit"; - public static bool TryCreateParam(GltfParser parser, int i, out MaterialImportParam param) + public static bool TryCreateParam(GltfParser parser, int i, out MaterialDescriptor matDesc) { if (i < 0 || i >= parser.GLTF.materials.Count) { - param = default; + matDesc = default; return false; } var src = parser.GLTF.materials[i]; if (!glTF_KHR_materials_unlit.IsEnable(src)) { - param = default; + matDesc = default; return false; } - param = new MaterialImportParam(GltfMaterialImporter.GetMaterialName(i, src), ShaderName); + matDesc = new MaterialDescriptor(GltfMaterialImporter.GetMaterialName(i, src), ShaderName); // texture if (src.pbrMetallicRoughness.baseColorTexture != null) { var (offset, scale) = GltfTextureImporter.GetTextureOffsetAndScale(src.pbrMetallicRoughness.baseColorTexture); var (key, textureParam) = GltfTextureImporter.CreateSRGB(parser, src.pbrMetallicRoughness.baseColorTexture.index, offset, scale); - param.TextureSlots.Add("_MainTex", textureParam); + matDesc.TextureSlots.Add("_MainTex", textureParam); } // color if (src.pbrMetallicRoughness.baseColorFactor != null && src.pbrMetallicRoughness.baseColorFactor.Length == 4) { - param.Colors.Add("_Color", + matDesc.Colors.Add("_Color", src.pbrMetallicRoughness.baseColorFactor.ToColor4(ColorSpace.Linear, ColorSpace.sRGB) ); } //renderMode - param.Actions.Add(material => + matDesc.Actions.Add(material => { if (src.alphaMode == "OPAQUE") { diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/IMaterialImporter.cs b/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/IMaterialImporter.cs index d4e45d63a..54bd1c31d 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/IMaterialImporter.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/IMaterialImporter.cs @@ -8,6 +8,6 @@ namespace UniGLTF /// public interface IMaterialImporter { - MaterialImportParam GetMaterialParam(GltfParser parser, int i); + MaterialDescriptor GetMaterialParam(GltfParser parser, int i); } } diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/MaterialImporterParamExtensions.cs b/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/MaterialImporterParamExtensions.cs index 4a6ca5260..d38d1c93f 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/MaterialImporterParamExtensions.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/MaterialImporterParamExtensions.cs @@ -6,9 +6,9 @@ namespace UniGLTF { public static class MaterialImporterParamExtensions { - public static IEnumerable<(SubAssetKey, TextureDescriptor)> EnumerateSubAssetKeyValue(this MaterialImportParam param) + public static IEnumerable<(SubAssetKey, TextureDescriptor)> EnumerateSubAssetKeyValue(this MaterialDescriptor matDesc) { - foreach (var kv in param.TextureSlots) + foreach (var kv in matDesc.TextureSlots) { yield return (kv.Value.SubAssetKey, kv.Value); } diff --git a/Assets/VRM/Runtime/IO/VRMMToonMaterialImporter.cs b/Assets/VRM/Runtime/IO/VRMMToonMaterialImporter.cs index fe0d066b4..82e9abde0 100644 --- a/Assets/VRM/Runtime/IO/VRMMToonMaterialImporter.cs +++ b/Assets/VRM/Runtime/IO/VRMMToonMaterialImporter.cs @@ -6,13 +6,13 @@ namespace VRM { public static class VRMMToonMaterialImporter { - public static bool TryCreateParam(GltfParser parser, glTF_VRM_extensions vrm, int materialIdx, out MaterialImportParam param) + public static bool TryCreateParam(GltfParser parser, glTF_VRM_extensions vrm, int materialIdx, out MaterialDescriptor matDesc) { var vrmMaterial = vrm.materialProperties[materialIdx]; if (vrmMaterial.shader == VRM.glTF_VRM_Material.VRM_USE_GLTFSHADER) { // fallback to gltf - param = default; + matDesc = default; return false; } @@ -21,13 +21,13 @@ namespace VRM // // use material.name, because material name may renamed in GltfParser. var name = parser.GLTF.materials[materialIdx].name; - param = new MaterialImportParam(name, vrmMaterial.shader); + matDesc = new MaterialDescriptor(name, vrmMaterial.shader); - param.RenderQueue = vrmMaterial.renderQueue; + matDesc.RenderQueue = vrmMaterial.renderQueue; foreach (var kv in vrmMaterial.floatProperties) { - param.FloatValues.Add(kv.Key, kv.Value); + matDesc.FloatValues.Add(kv.Key, kv.Value); } foreach (var kv in vrmMaterial.vectorProperties) @@ -36,7 +36,7 @@ namespace VRM if (!vrmMaterial.textureProperties.ContainsKey(kv.Key)) { var v = new Vector4(kv.Value[0], kv.Value[1], kv.Value[2], kv.Value[3]); - param.Vectors.Add(kv.Key, v); + matDesc.Vectors.Add(kv.Key, v); } } @@ -44,7 +44,7 @@ namespace VRM { if (VRMMToonTextureImporter.TryGetTextureFromMaterialProperty(parser, vrm, materialIdx, kv.Key, out var texture)) { - param.TextureSlots.Add(kv.Key, texture.Item2); + matDesc.TextureSlots.Add(kv.Key, texture.Item2); } } @@ -52,24 +52,24 @@ namespace VRM { if (kv.Value) { - param.Actions.Add(material => material.EnableKeyword(kv.Key)); + matDesc.Actions.Add(material => material.EnableKeyword(kv.Key)); } else { - param.Actions.Add(material => material.DisableKeyword(kv.Key)); + matDesc.Actions.Add(material => material.DisableKeyword(kv.Key)); } } foreach (var kv in vrmMaterial.tagMap) { - param.Actions.Add(material => material.SetOverrideTag(kv.Key, kv.Value)); + matDesc.Actions.Add(material => material.SetOverrideTag(kv.Key, kv.Value)); } if (vrmMaterial.shader == MToon.Utils.ShaderName) { // TODO: Material拡張にMToonの項目が追加されたら旧バージョンのshaderPropから変換をかける // インポート時にUniVRMに含まれるMToonのバージョンに上書きする - param.FloatValues[MToon.Utils.PropVersion] = MToon.Utils.VersionNumber; + matDesc.FloatValues[MToon.Utils.PropVersion] = MToon.Utils.VersionNumber; } return true; diff --git a/Assets/VRM/Runtime/IO/VRMMaterialImporter.cs b/Assets/VRM/Runtime/IO/VRMMaterialImporter.cs index d81118683..a6bec140f 100644 --- a/Assets/VRM/Runtime/IO/VRMMaterialImporter.cs +++ b/Assets/VRM/Runtime/IO/VRMMaterialImporter.cs @@ -14,26 +14,26 @@ namespace VRM m_vrm = vrm; } - public MaterialImportParam GetMaterialParam(GltfParser parser, int i) + public MaterialDescriptor GetMaterialParam(GltfParser parser, int i) { // mtoon - if (!VRMMToonMaterialImporter.TryCreateParam(parser, m_vrm, i, out MaterialImportParam param)) + if (!VRMMToonMaterialImporter.TryCreateParam(parser, m_vrm, i, out MaterialDescriptor matDesc)) { // unlit - if (!GltfUnlitMaterialImporter.TryCreateParam(parser, i, out param)) + if (!GltfUnlitMaterialImporter.TryCreateParam(parser, i, out matDesc)) { // pbr - if (!GltfPbrMaterialImporter.TryCreateParam(parser, i, out param)) + if (!GltfPbrMaterialImporter.TryCreateParam(parser, i, out matDesc)) { // fallback #if VRM_DEVELOP Debug.LogWarning($"material: {i} out of range. fallback"); #endif - return new MaterialImportParam(GltfMaterialImporter.GetMaterialName(i, null), GltfPbrMaterialImporter.ShaderName); + return new MaterialDescriptor(GltfMaterialImporter.GetMaterialName(i, null), GltfPbrMaterialImporter.ShaderName); } } } - return param; + return matDesc; } } } diff --git a/Assets/VRM/Tests/MToonTest.cs b/Assets/VRM/Tests/MToonTest.cs index 612c4c5a4..0c27e497b 100644 --- a/Assets/VRM/Tests/MToonTest.cs +++ b/Assets/VRM/Tests/MToonTest.cs @@ -52,7 +52,7 @@ namespace VRM var importer = new VRMImporterContext(parser, null); Assert.AreEqual(73, parser.GLTF.materials.Count); - Assert.True(VRMMToonMaterialImporter.TryCreateParam(parser, importer.VRM, 0, out MaterialImportParam param)); + Assert.True(VRMMToonMaterialImporter.TryCreateParam(parser, importer.VRM, 0, out MaterialDescriptor matDesc)); } static string AliciaPath diff --git a/Assets/VRM10/Runtime/IO/Material/Vrm10MToonMaterialImporter.cs b/Assets/VRM10/Runtime/IO/Material/Vrm10MToonMaterialImporter.cs index 5d57e8df4..d7e2273b1 100644 --- a/Assets/VRM10/Runtime/IO/Material/Vrm10MToonMaterialImporter.cs +++ b/Assets/VRM10/Runtime/IO/Material/Vrm10MToonMaterialImporter.cs @@ -17,43 +17,43 @@ namespace UniVRM10 /// /// VMRC_materials_mtoon の場合にマテリアル生成情報を作成する /// - public static bool TryCreateParam(GltfParser parser, int i, out MaterialImportParam param) + public static bool TryCreateParam(GltfParser parser, int i, out MaterialDescriptor matDesc) { var m = parser.GLTF.materials[i]; if (!UniGLTF.Extensions.VRMC_materials_mtoon.GltfDeserializer.TryGet(m.extensions, out UniGLTF.Extensions.VRMC_materials_mtoon.VRMC_materials_mtoon mtoon)) { // Fallback to glTF, when MToon extension does not exist. - param = default; + matDesc = default; return false; } // use material.name, because material name may renamed in GltfParser. - param = new MaterialImportParam(m.name, MToon.Utils.ShaderName); + matDesc = new MaterialDescriptor(m.name, MToon.Utils.ShaderName); foreach (var (key, (subAssetKey, value)) in Vrm10MToonTextureImporter.EnumerateAllTextures(parser, m, mtoon)) { - param.TextureSlots.Add(key, value); + matDesc.TextureSlots.Add(key, value); } foreach (var (key, value) in TryGetAllColors(m, mtoon)) { - param.Colors.Add(key, value); + matDesc.Colors.Add(key, value); } foreach (var (key, value) in TryGetAllFloats(m, mtoon)) { - param.FloatValues.Add(key, value); + matDesc.FloatValues.Add(key, value); } foreach (var (key, value) in TryGetAllFloatArrays(m, mtoon)) { - param.Vectors.Add(key, value); + matDesc.Vectors.Add(key, value); } - param.RenderQueue = TryGetRenderQueue(m, mtoon); + matDesc.RenderQueue = TryGetRenderQueue(m, mtoon); - param.Actions.Add(material => + matDesc.Actions.Add(material => { // Set hidden properties, keywords from float properties. MToon.Utils.ValidateProperties(material, isBlendModeChangedByUser: false); diff --git a/Assets/VRM10/Runtime/IO/Material/Vrm10MaterialImporter.cs b/Assets/VRM10/Runtime/IO/Material/Vrm10MaterialImporter.cs index 484fd3d55..39556fbad 100644 --- a/Assets/VRM10/Runtime/IO/Material/Vrm10MaterialImporter.cs +++ b/Assets/VRM10/Runtime/IO/Material/Vrm10MaterialImporter.cs @@ -6,26 +6,26 @@ namespace UniVRM10 { public sealed class Vrm10MaterialImporter : IMaterialImporter { - public MaterialImportParam GetMaterialParam(GltfParser parser, int i) + public MaterialDescriptor GetMaterialParam(GltfParser parser, int i) { // mtoon - if (!Vrm10MToonMaterialImporter.TryCreateParam(parser, i, out MaterialImportParam param)) + if (!Vrm10MToonMaterialImporter.TryCreateParam(parser, i, out MaterialDescriptor matDesc)) { // unlit - if (!GltfUnlitMaterialImporter.TryCreateParam(parser, i, out param)) + if (!GltfUnlitMaterialImporter.TryCreateParam(parser, i, out matDesc)) { // pbr - if (!GltfPbrMaterialImporter.TryCreateParam(parser, i, out param)) + if (!GltfPbrMaterialImporter.TryCreateParam(parser, i, out matDesc)) { // fallback #if VRM_DEVELOP Debug.LogWarning($"material: {i} out of range. fallback"); #endif - return new MaterialImportParam(GltfMaterialImporter.GetMaterialName(i, null), GltfPbrMaterialImporter.ShaderName); + return new MaterialDescriptor(GltfMaterialImporter.GetMaterialName(i, null), GltfPbrMaterialImporter.ShaderName); } } } - return param; + return matDesc; } } diff --git a/Assets/VRMShaders/GLTF/IO/Runtime/MaterialImportParam.cs b/Assets/VRMShaders/GLTF/IO/Runtime/MaterialDescriptor.cs similarity index 89% rename from Assets/VRMShaders/GLTF/IO/Runtime/MaterialImportParam.cs rename to Assets/VRMShaders/GLTF/IO/Runtime/MaterialDescriptor.cs index 447c09f2f..5a2354c86 100644 --- a/Assets/VRMShaders/GLTF/IO/Runtime/MaterialImportParam.cs +++ b/Assets/VRMShaders/GLTF/IO/Runtime/MaterialDescriptor.cs @@ -5,7 +5,7 @@ using UnityEngine; namespace VRMShaders { - public class MaterialImportParam + public class MaterialDescriptor { public readonly string Name; public readonly string ShaderName; @@ -18,7 +18,7 @@ namespace VRMShaders public SubAssetKey SubAssetKey => new SubAssetKey(SubAssetKey.MaterialType, Name); - public MaterialImportParam(string name, string shaderName) + public MaterialDescriptor(string name, string shaderName) { Name = name; ShaderName = shaderName; diff --git a/Assets/VRMShaders/GLTF/IO/Runtime/MaterialImportParam.cs.meta b/Assets/VRMShaders/GLTF/IO/Runtime/MaterialDescriptor.cs.meta similarity index 100% rename from Assets/VRMShaders/GLTF/IO/Runtime/MaterialImportParam.cs.meta rename to Assets/VRMShaders/GLTF/IO/Runtime/MaterialDescriptor.cs.meta diff --git a/Assets/VRMShaders/GLTF/IO/Runtime/MaterialFactory.cs b/Assets/VRMShaders/GLTF/IO/Runtime/MaterialFactory.cs index de0bc9ecb..39c9877c0 100644 --- a/Assets/VRMShaders/GLTF/IO/Runtime/MaterialFactory.cs +++ b/Assets/VRMShaders/GLTF/IO/Runtime/MaterialFactory.cs @@ -96,9 +96,9 @@ namespace VRMShaders return m_materials[index].Asset; } - public async Task LoadAsync(MaterialImportParam param, GetTextureAsyncFunc getTexture) + public async Task LoadAsync(MaterialDescriptor matDesc, GetTextureAsyncFunc getTexture) { - if (m_externalMap.TryGetValue(param.SubAssetKey, out Material material)) + if (m_externalMap.TryGetValue(matDesc.SubAssetKey, out Material material)) { m_materials.Add(new MaterialLoadInfo(material, true)); return material; @@ -109,10 +109,10 @@ namespace VRMShaders getTexture = (_) => Task.FromResult(null); } - material = new Material(Shader.Find(param.ShaderName)); - material.name = param.SubAssetKey.Name; + material = new Material(Shader.Find(matDesc.ShaderName)); + material.name = matDesc.SubAssetKey.Name; - foreach(var kv in param.TextureSlots) + foreach(var kv in matDesc.TextureSlots) { var texture = await getTexture(kv.Value); if(texture!=null){ @@ -121,27 +121,27 @@ namespace VRMShaders } } - foreach(var kv in param.Colors) + foreach(var kv in matDesc.Colors) { material.SetColor(kv.Key, kv.Value); } - foreach(var kv in param.Vectors) + foreach(var kv in matDesc.Vectors) { material.SetVector(kv.Key, kv.Value); } - foreach(var kv in param.FloatValues) + foreach(var kv in matDesc.FloatValues) { material.SetFloat(kv.Key, kv.Value); } - if (param.RenderQueue.HasValue) + if (matDesc.RenderQueue.HasValue) { - material.renderQueue = param.RenderQueue.Value; + material.renderQueue = matDesc.RenderQueue.Value; } - foreach(var action in param.Actions) + foreach(var action in matDesc.Actions) { action(material); }