diff --git a/Assets/VRM10/Runtime/IO/Material/BuiltInRP/Import/BuiltInVrm10MaterialDescriptorGenerator.cs b/Assets/VRM10/Runtime/IO/Material/BuiltInRP/Import/BuiltInVrm10MaterialDescriptorGenerator.cs index 8a5b82aab..e4d7c082b 100644 --- a/Assets/VRM10/Runtime/IO/Material/BuiltInRP/Import/BuiltInVrm10MaterialDescriptorGenerator.cs +++ b/Assets/VRM10/Runtime/IO/Material/BuiltInRP/Import/BuiltInVrm10MaterialDescriptorGenerator.cs @@ -10,11 +10,12 @@ namespace UniVRM10 public BuiltInGltfPbrMaterialImporter PbrMaterialImporter { get; } = new(); public BuiltInGltfDefaultMaterialImporter DefaultMaterialImporter { get; } = new(); public BuiltInGltfUnlitMaterialImporter UnlitMaterialImporter { get; } = new(); + public BuiltInVrm10MToonMaterialImporter MToonMaterialImporter { get; } = new(); public MaterialDescriptor Get(GltfData data, int i) { // mtoon - if (BuiltInVrm10MToonMaterialImporter.TryCreateParam(data, i, out MaterialDescriptor matDesc)) return matDesc; + if (MToonMaterialImporter.TryCreateParam(data, i, out MaterialDescriptor matDesc)) return matDesc; // unlit if (UnlitMaterialImporter.TryCreateParam(data, i, out matDesc)) return matDesc; // pbr diff --git a/Assets/VRM10/Runtime/IO/Material/BuiltInRP/Import/Materials/BuiltInVrm10MToonMaterialImporter.cs b/Assets/VRM10/Runtime/IO/Material/BuiltInRP/Import/Materials/BuiltInVrm10MToonMaterialImporter.cs index 6a88ea029..6fba92303 100644 --- a/Assets/VRM10/Runtime/IO/Material/BuiltInRP/Import/Materials/BuiltInVrm10MToonMaterialImporter.cs +++ b/Assets/VRM10/Runtime/IO/Material/BuiltInRP/Import/Materials/BuiltInVrm10MToonMaterialImporter.cs @@ -11,14 +11,26 @@ using OutlineWidthMode = UniGLTF.Extensions.VRMC_materials_mtoon.OutlineWidthMod namespace UniVRM10 { /// - /// Convert MToon parameters from glTF specification to Unity implementation. + /// A class that generates MaterialDescriptor for "VRM10/MToon10" shader based on vrm-1.0 Material specification. + /// + /// https://github.com/vrm-c/vrm-specification/blob/master/specification/VRMC_materials_mtoon-1.0/README.md /// - public static class BuiltInVrm10MToonMaterialImporter + public class BuiltInVrm10MToonMaterialImporter { + /// + /// Can be replaced with custom shaders that are compatible with "VRM10/MToon10" properties and keywords. + /// + public Shader Shader { get; set; } + + public BuiltInVrm10MToonMaterialImporter(Shader shader = null) + { + Shader = shader != null ? shader : Shader.Find("VRM10/MToon10"); + } + /// /// VMRC_materials_mtoon の場合にマテリアル生成情報を作成する /// - public static bool TryCreateParam(GltfData data, int i, out MaterialDescriptor matDesc) + public bool TryCreateParam(GltfData data, int i, out MaterialDescriptor matDesc) { var m = data.GLTF.materials[i]; if (!UniGLTF.Extensions.VRMC_materials_mtoon.GltfDeserializer.TryGet(m.extensions, diff --git a/Assets/VRM10/Runtime/IO/Material/URP/Import/Materials/UrpVrm10MToonMaterialImporter.cs b/Assets/VRM10/Runtime/IO/Material/URP/Import/Materials/UrpVrm10MToonMaterialImporter.cs index 515f2fb77..ada10ec84 100644 --- a/Assets/VRM10/Runtime/IO/Material/URP/Import/Materials/UrpVrm10MToonMaterialImporter.cs +++ b/Assets/VRM10/Runtime/IO/Material/URP/Import/Materials/UrpVrm10MToonMaterialImporter.cs @@ -7,14 +7,26 @@ using VRM10.MToon10; namespace UniVRM10 { /// - /// Convert MToon parameters from glTF specification to Unity implementation.(for URP) + /// A class that generates MaterialDescriptor for "VRM10/Universal Render Pipeline/MToon10" shader based on vrm-1.0 Material specification. + /// + /// https://github.com/vrm-c/vrm-specification/blob/master/specification/VRMC_materials_mtoon-1.0/README.md /// - public static class UrpVrm10MToonMaterialImporter + public class UrpVrm10MToonMaterialImporter { + /// + /// Can be replaced with custom shaders that are compatible with "VRM10/Universal Render Pipeline/MToon10" properties and keywords. + /// + public Shader Shader { get; set; } + + public UrpVrm10MToonMaterialImporter(Shader shader = null) + { + Shader = shader != null ? shader : Shader.Find("VRM10/Universal Render Pipeline/MToon10"); + } + /// /// VMRC_materials_mtoon の場合にマテリアル生成情報を作成する /// - public static bool TryCreateParam(GltfData data, int i, out MaterialDescriptor matDesc) + public bool TryCreateParam(GltfData data, int i, out MaterialDescriptor matDesc) { var m = data.GLTF.materials[i]; if (!UniGLTF.Extensions.VRMC_materials_mtoon.GltfDeserializer.TryGet(m.extensions, out var mtoon)) diff --git a/Assets/VRM10/Runtime/IO/Material/URP/Import/UrpVrm10MaterialDescriptorGenerator.cs b/Assets/VRM10/Runtime/IO/Material/URP/Import/UrpVrm10MaterialDescriptorGenerator.cs index be2e060cf..63b747d77 100644 --- a/Assets/VRM10/Runtime/IO/Material/URP/Import/UrpVrm10MaterialDescriptorGenerator.cs +++ b/Assets/VRM10/Runtime/IO/Material/URP/Import/UrpVrm10MaterialDescriptorGenerator.cs @@ -10,11 +10,12 @@ namespace UniVRM10 public UrpGltfPbrMaterialImporter PbrMaterialImporter { get; } = new(); public UrpGltfDefaultMaterialImporter DefaultMaterialImporter { get; } = new(); public BuiltInGltfUnlitMaterialImporter UnlitMaterialImporter { get; } = new(); + public UrpVrm10MToonMaterialImporter MToonMaterialImporter { get; } = new(); public MaterialDescriptor Get(GltfData data, int i) { // mtoon - if (UrpVrm10MToonMaterialImporter.TryCreateParam(data, i, out var matDesc)) return matDesc; + if (MToonMaterialImporter.TryCreateParam(data, i, out var matDesc)) return matDesc; // unlit if (UnlitMaterialImporter.TryCreateParam(data, i, out matDesc)) return matDesc; // pbr diff --git a/Assets/VRM10_Samples/VRM10Viewer/MaterialImporter/UrpMToonMaterialImporter.cs b/Assets/VRM10_Samples/VRM10Viewer/MaterialImporter/UrpMToonMaterialImporter.cs index b0b04f5c1..85d939350 100644 --- a/Assets/VRM10_Samples/VRM10Viewer/MaterialImporter/UrpMToonMaterialImporter.cs +++ b/Assets/VRM10_Samples/VRM10Viewer/MaterialImporter/UrpMToonMaterialImporter.cs @@ -7,9 +7,11 @@ namespace UniVRM10.VRM10Viewer /// public class UrpMToonMaterialImporter : IMaterialImporter { + public UrpVrm10MToonMaterialImporter MToonMaterialImporter { get; } = new(); + public bool TryCreateParam(GltfData data, int i, out MaterialDescriptor matDesc) { - if (UrpVrm10MToonMaterialImporter.TryCreateParam(data, i, out matDesc)) + if (MToonMaterialImporter.TryCreateParam(data, i, out matDesc)) { return true; }