diff --git a/Assets/VRM/Runtime/IO/VRMUnlitTransparentZWriteMaterialImporter.cs b/Assets/VRM/Runtime/IO/VRMUnlitTransparentZWriteMaterialImporter.cs index f66806ec2..72fdfc727 100644 --- a/Assets/VRM/Runtime/IO/VRMUnlitTransparentZWriteMaterialImporter.cs +++ b/Assets/VRM/Runtime/IO/VRMUnlitTransparentZWriteMaterialImporter.cs @@ -1,6 +1,8 @@ +using MToon; using UniGLTF; using UnityEngine; using VRMShaders; +using RenderMode = MToon.RenderMode; namespace VRM { @@ -37,36 +39,31 @@ namespace VRM // matDesc = new MaterialDescriptor(name, MToon.Utils.ShaderName); - matDesc.RenderQueue = vrmMaterial.renderQueue; + matDesc.RenderQueue = MToon.Utils.GetRenderQueueRequirement(RenderMode.TransparentWithZWrite).DefaultValue; + + // NOTE: Unlit のフォールバックなので、 Lit/Shade 色は黒とし、Emissive Factor に設定する. + // また、元のシェーダのうちユーザが設定できるプロパティは Texture のみ. + matDesc.Colors[MToon.Utils.PropColor] = Color.black; + matDesc.Colors[MToon.Utils.PropShadeColor] = Color.black; + matDesc.Colors[MToon.Utils.PropEmissionColor] = Color.white; if (vrmMaterial.textureProperties.ContainsKey(MToon.Utils.PropMainTex)) { if (VRMMToonTextureImporter.TryGetTextureFromMaterialProperty(data, vrmMaterial, MToon.Utils.PropMainTex, out var texture)) { - matDesc.TextureSlots.Add(MToon.Utils.PropMainTex, texture.Item2); - matDesc.TextureSlots.Add(MToon.Utils.PropShadeTexture, texture.Item2); + matDesc.TextureSlots.Add(MToon.Utils.PropEmissionMap, texture.Item2); } } - matDesc.Colors[MToon.Utils.PropColor] = Color.white; - matDesc.Colors[MToon.Utils.PropShadeColor] = Color.white; - - foreach (var kv in vrmMaterial.keywordMap) + matDesc.Actions.Add(unityMaterial => { - if (kv.Value) - { - matDesc.Actions.Add(material => material.EnableKeyword(kv.Key)); - } - else - { - matDesc.Actions.Add(material => material.DisableKeyword(kv.Key)); - } - } - - foreach (var kv in vrmMaterial.tagMap) - { - matDesc.Actions.Add(material => material.SetOverrideTag(kv.Key, kv.Value)); - } + // NOTE: ZWrite などの属性は util に設定させる. + var parameter = MToon.Utils.GetMToonParametersFromMaterial(unityMaterial); + parameter.Rendering.CullMode = CullMode.Back; + parameter.Rendering.RenderMode = RenderMode.TransparentWithZWrite; + parameter.Rendering.RenderQueueOffsetNumber = 0; + MToon.Utils.SetMToonParametersToMaterial(unityMaterial, parameter); + }); if (vrmMaterial.shader == MToon.Utils.ShaderName) {