コード例 #1
0
ファイル: TestMaterialTree.cs プロジェクト: slagusev/paradox
        public void TestSave()
        {
            var materialAsset = AssetSerializer.Load <MaterialAsset>("materials/testMaterial.pdxmat");

            var materialReducer = new MaterialTreeReducer(materialAsset.Material);

            materialReducer.ReduceTrees();

            var reducedTrees = materialReducer.ReducedTrees;

            foreach (var reducedTree in reducedTrees)
            {
                materialAsset.Material.AddNode(reducedTree.Key + "_reduced", reducedTree.Value);
            }

            var model = new MaterialDescription();

            model.SetParameter(MaterialParameters.UseTransparent, true);
            model.SetParameter(MaterialParameters.ShadingModel, MaterialShadingModel.Phong);
            model.SetParameter(MaterialParameters.DiffuseModel, MaterialDiffuseModel.Lambert);
            model.SetParameter(MaterialParameters.SpecularModel, MaterialSpecularModel.BlinnPhong);
            model.SetParameter(MaterialKeys.DiffuseColorValue, new Color4(1.0f, 1.0f, 0.5f, 0.5f));
            model.SetParameter(MaterialKeys.SpecularColorValue, new Color4(0.4f, 0.1f, 1.0f, 1.0f));
            model.SetParameter(MaterialKeys.SpecularIntensity, 1.1f);
            model.SetParameter(MaterialKeys.SpecularPower, 10.1f);

            var defaultModel = materialAsset.Material;

            foreach (var treeName in defaultModel.ColorNodes)
            {
                model.ColorNodes.Add(treeName.Key, treeName.Value + "_reduced");
            }

            var matAsset2 = new MaterialAsset {
                Material = model
            };

            AssetSerializer.Save("testMaterial2.pdxmat", matAsset2);

            var savedAsset     = AssetSerializer.Load <MaterialAsset>("testMaterial2.pdxmat");
            var loadedMaterial = savedAsset.Material;

            Assert.AreEqual(true, loadedMaterial.GetParameter(MaterialParameters.UseTransparent));
            Assert.AreEqual(MaterialShadingModel.Phong, loadedMaterial.GetParameter(MaterialParameters.ShadingModel));
            Assert.AreEqual(MaterialDiffuseModel.Lambert, loadedMaterial.GetParameter(MaterialParameters.DiffuseModel));
            Assert.AreEqual(MaterialSpecularModel.BlinnPhong, loadedMaterial.GetParameter(MaterialParameters.SpecularModel));
            Assert.AreEqual(new Color4(1.0f, 1.0f, 0.5f, 0.5f), loadedMaterial.GetParameter(MaterialKeys.DiffuseColorValue));
            Assert.AreEqual(new Color4(0.4f, 0.1f, 1.0f, 1.0f), loadedMaterial.GetParameter(MaterialKeys.SpecularColorValue));
            Assert.AreEqual(1.1f, loadedMaterial.GetParameter(MaterialKeys.SpecularIntensity));
            Assert.AreEqual(10.1f, loadedMaterial.GetParameter(MaterialKeys.SpecularPower));
        }