From 09eb24e76e5d30f29b254125c31e26b70ae7fb84 Mon Sep 17 00:00:00 2001 From: tsgcpp <19503967+tsgcpp@users.noreply.github.com> Date: Tue, 4 Mar 2025 14:20:27 +0900 Subject: [PATCH] Fix to multiply _EmissionColor by emissiveStrength in MToon10 --- .../Materials/BuiltInVrm10MToonMaterialImporter.cs | 13 ++++++++----- .../Materials/UrpVrm10MToonMaterialImporter.cs | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) 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 d74221bdf..6a88ea029 100644 --- a/Assets/VRM10/Runtime/IO/Material/BuiltInRP/Import/Materials/BuiltInVrm10MToonMaterialImporter.cs +++ b/Assets/VRM10/Runtime/IO/Material/BuiltInRP/Import/Materials/BuiltInVrm10MToonMaterialImporter.cs @@ -36,7 +36,7 @@ namespace UniVRM10 null, Vrm10MToonTextureImporter.EnumerateAllTextures(data, m, mtoon).ToDictionary(tuple => tuple.key, tuple => tuple.Item2.Item2), TryGetAllFloats(m, mtoon).ToDictionary(tuple => tuple.key, tuple => tuple.value), - TryGetAllColors(m, mtoon).ToDictionary(tuple => tuple.key, tuple => tuple.value), + TryGetAllColors(data, m, mtoon).ToDictionary(tuple => tuple.key, tuple => tuple.value), TryGetAllFloatArrays(m, mtoon).ToDictionary(tuple => tuple.key, tuple => tuple.value), new Action[] { @@ -50,7 +50,7 @@ namespace UniVRM10 return true; } - public static IEnumerable<(string key, Color value)> TryGetAllColors(glTFMaterial material, VRMC_materials_mtoon mToon) + public static IEnumerable<(string key, Color value)> TryGetAllColors(GltfData data, glTFMaterial material, VRMC_materials_mtoon mToon) { const ColorSpace gltfColorSpace = ColorSpace.Linear; @@ -72,10 +72,13 @@ namespace UniVRM10 // Emission // Emissive factor should be stored in Linear space - var emissionColor = material?.emissiveFactor?.ToColor3(gltfColorSpace, ColorSpace.Linear); - if (emissionColor.HasValue) + if (material != null) { - yield return (MToon10Prop.EmissiveFactor.ToUnityShaderLabName(), emissionColor.Value); + var emissionColor = GltfMaterialImportUtils.ImportLinearEmissiveFactor(data, material); + if (emissionColor.HasValue) + { + yield return (MToon10Prop.EmissiveFactor.ToUnityShaderLabName(), emissionColor.Value); + } } // Matcap 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 d55eb9588..515f2fb77 100644 --- a/Assets/VRM10/Runtime/IO/Material/URP/Import/Materials/UrpVrm10MToonMaterialImporter.cs +++ b/Assets/VRM10/Runtime/IO/Material/URP/Import/Materials/UrpVrm10MToonMaterialImporter.cs @@ -31,7 +31,7 @@ namespace UniVRM10 null, Vrm10MToonTextureImporter.EnumerateAllTextures(data, m, mtoon).ToDictionary(tuple => tuple.key, tuple => tuple.Item2.Item2), BuiltInVrm10MToonMaterialImporter.TryGetAllFloats(m, mtoon).ToDictionary(tuple => tuple.key, tuple => tuple.value), - BuiltInVrm10MToonMaterialImporter.TryGetAllColors(m, mtoon).ToDictionary(tuple => tuple.key, tuple => tuple.value), + BuiltInVrm10MToonMaterialImporter.TryGetAllColors(data, m, mtoon).ToDictionary(tuple => tuple.key, tuple => tuple.value), BuiltInVrm10MToonMaterialImporter.TryGetAllFloatArrays(m, mtoon).ToDictionary(tuple => tuple.key, tuple => tuple.value), new Action[] {