private static void _CopyMetallicRoughnessTo(Material srcMaterial, MaterialBuilder dstMaterial) { dstMaterial.WithMetallicRoughnessShader(); srcMaterial.CopyChannelsTo(dstMaterial, "BaseColor", "MetallicRoughness"); srcMaterial.CopyChannelsTo(dstMaterial, "ClearCoat", "ClearCoatRoughness", "ClearCoatNormal"); srcMaterial.CopyChannelsTo(dstMaterial, "Transmission"); }
public static void CopyTo(this Material srcMaterial, MaterialBuilder dstMaterial) { _CopyDefaultTo(srcMaterial, dstMaterial); if (srcMaterial.Unlit) { dstMaterial.WithUnlitShader(); srcMaterial.CopyChannelsTo(dstMaterial, "BaseColor"); return; } if (srcMaterial.FindChannel("Diffuse") != null || srcMaterial.FindChannel("SpecularGlossiness") != null) { dstMaterial.WithSpecularGlossinessShader(); srcMaterial.CopyChannelsTo(dstMaterial, "Diffuse", "SpecularGlossiness"); // srcMaterial.CopyChannelsTo(dstMaterial, "ClearCoat", "ClearCoatRoughness", "ClearCoatNormal"); if (srcMaterial.FindChannel("BaseColor") != null || srcMaterial.FindChannel("MetallicRoughness") != null) { var fallback = new MaterialBuilder(srcMaterial.Name); _CopyDefaultTo(srcMaterial, fallback); _CopyMetallicRoughnessTo(srcMaterial, fallback); dstMaterial.WithFallback(fallback); } return; } if (srcMaterial.FindChannel("BaseColor") != null || srcMaterial.FindChannel("MetallicRoughness") != null) { _CopyMetallicRoughnessTo(srcMaterial, dstMaterial); } }
private static void _CopyMetallicRoughnessTo(Material srcMaterial, MaterialBuilder dstMaterial) { dstMaterial.WithMetallicRoughnessShader(); var channels = MaterialBuilder._MetRouChannels .Select(item => item.ToString()) .ToArray(); srcMaterial.CopyChannelsTo(dstMaterial, channels); }
private static void _CopyDefaultTo(Material srcMaterial, MaterialBuilder dstMaterial) { Guard.NotNull(srcMaterial, nameof(srcMaterial)); Guard.NotNull(dstMaterial, nameof(dstMaterial)); dstMaterial.Name = srcMaterial.Name; dstMaterial.AlphaMode = srcMaterial.Alpha.ToToolkit(); dstMaterial.AlphaCutoff = srcMaterial.AlphaCutoff; dstMaterial.DoubleSided = srcMaterial.DoubleSided; srcMaterial.CopyChannelsTo(dstMaterial, "Normal", "Occlusion", "Emissive"); }
public static void CopyTo(this Material srcMaterial, Materials.MaterialBuilder dstMaterial) { Guard.NotNull(srcMaterial, nameof(srcMaterial)); Guard.NotNull(dstMaterial, nameof(dstMaterial)); dstMaterial.Name = srcMaterial.Name; dstMaterial.AlphaMode = srcMaterial.Alpha.ToToolkit(); dstMaterial.AlphaCutoff = srcMaterial.AlphaCutoff; dstMaterial.DoubleSided = srcMaterial.DoubleSided; srcMaterial.CopyChannelsTo(dstMaterial, "Normal", "Occlusion", "Emissive"); if (srcMaterial.Unlit) { dstMaterial.WithUnlitShader(); } if (srcMaterial.FindChannel("BaseColor") != null || srcMaterial.FindChannel("MetallicRoughness") != null) { dstMaterial.WithMetallicRoughnessShader(); srcMaterial.CopyChannelsTo(dstMaterial, "BaseColor", "MetallicRoughness"); srcMaterial.CopyChannelsTo(dstMaterial, "ClearCoat", "ClearCoatRoughness", "ClearCoatNormal"); } if (srcMaterial.FindChannel("Diffuse") != null || srcMaterial.FindChannel("SpecularGlossiness") != null) { dstMaterial = new Materials.MaterialBuilder(srcMaterial.Name).WithFallback(dstMaterial); dstMaterial.Name = srcMaterial.Name; dstMaterial.AlphaMode = srcMaterial.Alpha.ToToolkit(); dstMaterial.AlphaCutoff = srcMaterial.AlphaCutoff; dstMaterial.DoubleSided = srcMaterial.DoubleSided; srcMaterial.CopyChannelsTo(dstMaterial, "Normal", "Occlusion", "Emissive"); dstMaterial.WithSpecularGlossinessShader(); srcMaterial.CopyChannelsTo(dstMaterial, "Diffuse", "SpecularGlossiness"); } }
private static void _CopyDefaultTo(Material srcMaterial, MaterialBuilder dstMaterial) { Guard.NotNull(srcMaterial, nameof(srcMaterial)); Guard.NotNull(dstMaterial, nameof(dstMaterial)); dstMaterial.SetNameAndExtrasFrom(srcMaterial); dstMaterial.AlphaMode = srcMaterial.Alpha.ToToolkit(); dstMaterial.AlphaCutoff = srcMaterial.AlphaCutoff; dstMaterial.DoubleSided = srcMaterial.DoubleSided; dstMaterial.IndexOfRefraction = srcMaterial.IndexOfRefraction; srcMaterial.CopyChannelsTo(dstMaterial, "Normal", "Occlusion", "Emissive"); }