public Asset New() { var newMaterial = new MaterialAsset { Material = new MaterialDescription() }; return(newMaterial); }
public object New(Type type) { var newMaterial = new MaterialAsset { Attributes = ObjectFactory.NewInstance <MaterialAttributes>(), Layers = ObjectFactory.NewInstance <MaterialBlendLayers>(), }; return(newMaterial); }
public object New(Type type) { var newMaterial = new MaterialAsset { Attributes = ObjectFactory.NewInstance <MaterialAttributes>(), Layers = ObjectFactory.NewInstance <MaterialBlendLayers>(), }; newMaterial.Attributes.Diffuse = new MaterialDiffuseMapFeature { DiffuseMap = new ComputeColor { Value = new Color4(0.98f, 0.9f, 0.7f, 1.0f) } }; newMaterial.Attributes.DiffuseModel = new MaterialDiffuseLambertModelFeature(); return(newMaterial); }
public object New(Type type) { var newMaterial = new MaterialAsset { Attributes = ObjectFactory.NewInstance<MaterialAttributes>(), Layers = ObjectFactory.NewInstance<MaterialBlendLayers>(), }; return newMaterial; }
public void TestMaterial() { var compiler = new EffectCompiler { UseFileSystem = true }; compiler.SourceDirectories.Add(@"..\..\sources\engine\SiliconStudio.Paradox.Graphics\Shaders"); compiler.SourceDirectories.Add(@"..\..\sources\engine\SiliconStudio.Paradox.Engine\Shaders"); compiler.SourceDirectories.Add(@"..\..\sources\shaders\Core"); compiler.SourceDirectories.Add(@"..\..\sources\shaders\Lights"); compiler.SourceDirectories.Add(@"..\..\sources\shaders\Materials"); compiler.SourceDirectories.Add(@"..\..\sources\shaders\Shadows"); compiler.SourceDirectories.Add(@"..\..\sources\shaders\ComputeColor"); compiler.SourceDirectories.Add(@"..\..\sources\shaders\Skinning"); compiler.SourceDirectories.Add(@"..\..\sources\shaders\Shading"); compiler.SourceDirectories.Add(@"..\..\sources\shaders\Transformation"); compiler.SourceDirectories.Add(@"..\..\sources\shaders\Utils"); var compilerParameters = new CompilerParameters { Platform = GraphicsPlatform.Direct3D11 }; var layers = new MaterialBlendLayers(); layers.Add(new MaterialBlendLayer { BlendMap = new ComputeFloat(0.5f), Material = AttachedReferenceManager.CreateSerializableVersion<Material>(Guid.Empty, "fake") }); var materialAsset = new MaterialAsset { Attributes = new MaterialAttributes() { Diffuse = new MaterialDiffuseMapFeature() { DiffuseMap = new ComputeColor(Color4.White) }, DiffuseModel = new MaterialDiffuseLambertModelFeature() }, Layers = layers }; var fakeAsset = new MaterialAsset { Attributes = new MaterialAttributes() { Diffuse = new MaterialDiffuseMapFeature() { DiffuseMap = new ComputeColor(Color.Blue) }, } }; var context = new MaterialGeneratorContext { FindAsset = reference => fakeAsset }; var result = MaterialGenerator.Generate(new MaterialDescriptor { Attributes = materialAsset.Attributes, Layers = materialAsset.Layers }, context, "TestMaterial"); compilerParameters.Set(MaterialKeys.PixelStageSurfaceShaders, result.Material.Parameters.Get(MaterialKeys.PixelStageSurfaceShaders)); var directionalLightGroup = new ShaderClassSource("LightDirectionalGroup", 1); compilerParameters.Set(LightingKeys.DirectLightGroups, new List<ShaderSource> { directionalLightGroup }); //compilerParameters.Set(LightingKeys.CastShadows, false); //compilerParameters.Set(MaterialParameters.HasSkinningPosition, true); //compilerParameters.Set(MaterialParameters.HasSkinningNormal, true); compilerParameters.Set(MaterialKeys.HasNormalMap, true); var results = compiler.Compile(new ShaderMixinGeneratorSource("ParadoxEffectBase"), compilerParameters); Assert.IsFalse(results.HasErrors); }
/// <summary> /// Modify the material to comply with its transparency parameters. /// </summary> /// <param name="material">The material/</param> private static void AdjustForTransparency(MaterialAsset material) { //// Note: at this point, there is no other nodes than diffuse, specular, transparent, normal and displacement //if (material.ColorNodes.ContainsKey(MaterialParameters.AlbedoDiffuse)) //{ // var diffuseNode = material.GetMaterialNode(MaterialParameters.AlbedoDiffuse); // if (material.ColorNodes.ContainsKey(MaterialParameters.TransparencyMap)) // { // var diffuseNodeName = material.ColorNodes[MaterialParameters.AlbedoDiffuse]; // var transparentNodeName = material.ColorNodes[MaterialParameters.TransparencyMap]; // var transparentNode = material.GetMaterialNode(MaterialParameters.TransparencyMap); // if (diffuseNode == null || transparentNode == null) // return; // var foundTextureDiffuse = FindTextureNode(material, diffuseNodeName); // var foundTextureTransparent = FindTextureNode(material, transparentNodeName); // if (foundTextureDiffuse != null && foundTextureTransparent != null) // { // if (foundTextureDiffuse != foundTextureTransparent) // { // var alphaMixNode = new MaterialBinaryComputeNode(diffuseNode, transparentNode, BinaryOperator.SubstituteAlpha); // material.AddColorNode(MaterialParameters.AlbedoDiffuse, "pdx_diffuseWithAlpha", alphaMixNode); // } // } // // set the key if it was missing // material.Parameters.Set(MaterialParameters.HasTransparency, true); // } // else // { // // NOTE: MaterialParameters.HasTransparency is mostly runtime // var isTransparent = false; // if (material.Parameters.ContainsKey(MaterialParameters.HasTransparency)) // isTransparent = (bool)material.Parameters[MaterialParameters.HasTransparency]; // if (!isTransparent) // { // // remove the diffuse node // var diffuseName = material.ColorNodes[MaterialParameters.AlbedoDiffuse]; // material.Nodes.Remove(diffuseName); // // add the new one // var opaqueNode = new MaterialBinaryComputeNode(diffuseNode, null, BinaryOperator.Opaque); // material.AddColorNode(MaterialParameters.AlbedoDiffuse, "pdx_diffuseOpaque", opaqueNode); // } // } //} }
public object New(Type type) { var newMaterial = new MaterialAsset { Attributes = ObjectFactory.NewInstance<MaterialAttributes>(), Layers = ObjectFactory.NewInstance<MaterialBlendLayers>(), }; newMaterial.Attributes.Diffuse = new MaterialDiffuseMapFeature { DiffuseMap = new ComputeColor { Value = new Color4(0.98f, 0.9f, 0.7f, 1.0f) } }; newMaterial.Attributes.DiffuseModel = new MaterialDiffuseLambertModelFeature(); return newMaterial; }