コード例 #1
0
        private static Vector3 GetDiffuseColor(Schema2.Material srcMaterial)
        {
            var diffuse = srcMaterial.FindChannel("Diffuse");

            if (diffuse == null) diffuse = srcMaterial.FindChannel("BaseColor");

            if (diffuse == null) return Vector3.One;

            return new Vector3(diffuse.Value.Parameter.X, diffuse.Value.Parameter.Y, diffuse.Value.Parameter.Z);
        }
コード例 #2
0
        private Texture2D GetDiffuseTexture(Schema2.Material srcMaterial)
        {
            var diffuse = srcMaterial.FindChannel("Diffuse");

            if (diffuse == null) diffuse = srcMaterial.FindChannel("BaseColor");

            if (diffuse == null) return null;

            var name = srcMaterial.Name;
            if (name == null) name = "null";
            name += "-Diffuse";            

            return _TexFactory.UseTexture(diffuse.Value.Texture?.PrimaryImage?.GetImageContent() ?? default, name);
        }
コード例 #3
0
        private static Vector3 GeEmissiveColor(Schema2.Material srcMaterial)
        {
            var emissive = srcMaterial.FindChannel("Emissive");

            if (emissive == null) return Vector3.Zero;

            return new Vector3(emissive.Value.Parameter.X, emissive.Value.Parameter.Y, emissive.Value.Parameter.Z);
        }
コード例 #4
0
        private static float GetAlphaLevel(Schema2.Material srcMaterial)
        {
            if (srcMaterial.Alpha == Schema2.AlphaMode.OPAQUE) return 1;

            var baseColor = srcMaterial.FindChannel("BaseColor");

            if (baseColor == null) return 1;

            return baseColor.Value.Parameter.W;
        }
コード例 #5
0
        private static float GetSpecularPower(Schema2.Material srcMaterial)
        {
            var mr = srcMaterial.FindChannel("MetallicRoughness");

            if (mr == null) return 16; // default value = 16

            var metallic = mr.Value.Parameter.X;
            var roughness = mr.Value.Parameter.Y;

            return 4 + 16 * metallic;
        }
コード例 #6
0
        private Texture2D GetDiffuseTexture(Schema2.Material srcMaterial)
        {
            var diffuse = srcMaterial.FindChannel("Diffuse");

            if (diffuse == null)
            {
                diffuse = srcMaterial.FindChannel("BaseColor");
            }

            if (diffuse == null)
            {
                return(null);
            }

            var name = srcMaterial.Name;

            if (name == null)
            {
                name = "null";
            }
            name += "-Diffuse";

            return(_TexFactory.UseTexture(diffuse.Value.Texture?.PrimaryImage?.Content ?? default, name));
        }
コード例 #7
0
        private static Vector3 GetSpecularColor(Schema2.Material srcMaterial)
        {
            var mr = srcMaterial.FindChannel("MetallicRoughness");

            if (mr == null) return Vector3.One; // default value 16

            var diffuse = GetDiffuseColor(srcMaterial);
            var metallic = mr.Value.Parameter.X;
            var roughness = mr.Value.Parameter.Y;

            var k = Vector3.Zero;
            k += Vector3.Lerp(diffuse, Vector3.Zero, roughness);
            k += Vector3.Lerp(diffuse, Vector3.One, metallic);
            k *= 0.5f;

            return k;
        }