Example #1
0
 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");
 }
Example #2
0
        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);
            }
        }
Example #3
0
        private static void _CopyMetallicRoughnessTo(Material srcMaterial, MaterialBuilder dstMaterial)
        {
            dstMaterial.WithMetallicRoughnessShader();

            var channels = MaterialBuilder._MetRouChannels
                           .Select(item => item.ToString())
                           .ToArray();

            srcMaterial.CopyChannelsTo(dstMaterial, channels);
        }
Example #4
0
        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");
            }
        }
Example #6
0
        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");
        }