Beispiel #1
0
            /// <summary>
            /// Initializes a new instance of the <see cref="PhongMaterialVariables"/> class.
            /// </summary>
            /// <param name="manager">The manager.</param>
            /// <param name="technique">The technique.</param>
            /// <param name="materialCore">The material core.</param>
            /// <param name="materialPassName">Name of the material pass.</param>
            /// <param name="wireframePassName">Name of the wireframe pass.</param>
            /// <param name="materialOITPassName">Name of the material oit pass.</param>
            /// <param name="wireframeOITPassName">Name of the wireframe oit pass.</param>
            /// <param name="shadowPassName">Name of the shadow pass.</param>
            /// <param name="tessellationPassName">Name of the tessellation pass.</param>
            /// <param name="tessellationOITPassName">Name of the tessellation oit pass.</param>
            /// <param name="depthPassName">Name of the depth pass</param>
            public PhongMaterialVariables(IEffectsManager manager, IRenderTechnique technique, PhongMaterialCore materialCore,
                                          string materialPassName        = DefaultPassNames.Default, string wireframePassName    = DefaultPassNames.Wireframe,
                                          string materialOITPassName     = DefaultPassNames.OITPass, string wireframeOITPassName = DefaultPassNames.WireframeOITPass,
                                          string shadowPassName          = DefaultPassNames.ShadowPass,
                                          string tessellationPassName    = DefaultPassNames.MeshTriTessellation,
                                          string tessellationOITPassName = DefaultPassNames.MeshTriTessellationOIT,
                                          string depthPassName           = DefaultPassNames.DepthPrepass)
                : base(manager, technique, DefaultMeshConstantBufferDesc, materialCore)
            {
                this.material      = materialCore;
                texDiffuseSlot     = texAlphaSlot = texDisplaceSlot = texNormalSlot = -1;
                samplerDiffuseSlot = samplerDisplaceSlot = samplerShadowSlot = -1;
                textureManager     = manager.MaterialTextureManager;
                statePoolManager   = manager.StateManager;

                MaterialPass        = technique[materialPassName];
                MaterialOITPass     = technique[materialOITPassName];
                ShadowPass          = technique[shadowPassName];
                WireframePass       = technique[wireframePassName];
                WireframeOITPass    = technique[wireframeOITPassName];
                TessellationPass    = technique[tessellationPassName];
                TessellationOITPass = technique[tessellationOITPassName];
                DepthPass           = technique[depthPassName];
                UpdateMappings(MaterialPass);
                EnableTessellation  = materialCore.EnableTessellation;
                currentMaterialPass = EnableTessellation ? TessellationPass : MaterialPass;
                currentOITPass      = EnableTessellation ? TessellationOITPass : MaterialOITPass;
            }
 /// <summary>
 ///
 /// </summary>
 /// <param name="manager"></param>
 /// <param name="material"></param>
 private DiffuseMaterialVariables(IEffectsManager manager, PhongMaterialCore material)
 {
     this.material             = material;
     needUpdate                = true;
     material.PropertyChanged += Material_OnMaterialPropertyChanged;
     texDiffuseSlot            = -1;
     samplerDiffuseSlot        = samplerShadowSlot = -1;
     textureManager            = manager.MaterialTextureManager;
     statePoolManager          = manager.StateManager;
     CreateTextureViews();
     CreateSamplers();
     this.PropertyChanged += (s, e) => { OnInvalidateRenderer?.Invoke(this, EventArgs.Empty); };
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="manager"></param>
 /// <param name="technique"></param>
 /// <param name="material"></param>
 private DiffuseMaterialVariables(IEffectsManager manager, IRenderTechnique technique, PhongMaterialCore material)
     : base(manager, technique, DefaultMeshConstantBufferDesc)
 {
     this.material             = material;
     material.PropertyChanged += Material_OnMaterialPropertyChanged;
     texDiffuseSlot            = -1;
     samplerDiffuseSlot        = samplerShadowSlot = -1;
     textureManager            = manager.MaterialTextureManager;
     statePoolManager          = manager.StateManager;
     MaterialPass              = technique[DefaultShaderPassName];
     TransparentPass           = technique[TransparentPassName];
     UpdateMappings(MaterialPass);
     CreateTextureViews();
     CreateSamplers();
 }
Beispiel #4
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="manager"></param>
 /// <param name="technique"></param>
 /// <param name="material"></param>
 public ColorStripeMaterialVariables(IEffectsManager manager, IRenderTechnique technique, ColorStripeMaterialCore material)
     : base(manager, technique, DefaultMeshConstantBufferDesc)
 {
     this.material             = material;
     deviceResources           = manager;
     material.PropertyChanged += Material_OnMaterialPropertyChanged;
     texStripeXSlot            = texStripeYSlot = -1;
     samplerDiffuseSlot        = -1;
     textureManager            = manager.MaterialTextureManager;
     statePoolManager          = manager.StateManager;
     MaterialPass              = technique[defaultShaderPassName];
     UpdateMappings(MaterialPass);
     CreateTextureViews();
     CreateSamplers();
 }
 public PBRMaterialVariable(IEffectsManager manager, IRenderTechnique technique, PBRMaterialCore core)
     : base(manager, technique, DefaultMeshConstantBufferDesc, core)
 {
     textureManager   = manager.MaterialTextureManager;
     statePoolManager = manager.StateManager;
     material         = core;
     MaterialPass     = technique[material.EnableTessellation ? DefaultPassNames.MeshPBRTriTessellation : DefaultPassNames.PBR];
     MaterialOITPass  = technique[material.EnableTessellation ? DefaultPassNames.MeshPBRTriTessellationOIT : DefaultPassNames.PBROITPass];
     WireframePass    = technique[DefaultPassNames.Wireframe];
     WireframeOITPass = technique[DefaultPassNames.WireframeOITPass];
     ShadowPass       = technique[DefaultPassNames.ShadowPass];
     UpdateMappings(MaterialPass);
     CreateTextureViews();
     CreateSamplers();
     //EnableTessellation = material.EnableTessellation;
 }
Beispiel #6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DiffuseMaterialVariables"/> class.
 /// </summary>
 /// <param name="manager">The manager.</param>
 /// <param name="technique">The technique.</param>
 /// <param name="materialCore">The material core.</param>
 /// <param name="materialPassName">Name of the material pass.</param>
 /// <param name="wireframePassName">Name of the wireframe pass.</param>
 /// <param name="materialOITPassName">Name of the material oit pass.</param>
 /// <param name="wireframeOITPassName">Name of the wireframe oit pass.</param>
 /// <param name="shadowPassName">Name of the shadow pass.</param>
 private DiffuseMaterialVariables(IEffectsManager manager, IRenderTechnique technique, DiffuseMaterialCore materialCore,
                                  string materialPassName    = DefaultPassNames.Default, string wireframePassName    = DefaultPassNames.Wireframe,
                                  string materialOITPassName = DefaultPassNames.OITPass, string wireframeOITPassName = DefaultPassNames.OITPass,
                                  string shadowPassName      = DefaultPassNames.ShadowPass)
     : base(manager, technique, DefaultMeshConstantBufferDesc, materialCore)
 {
     this.material      = materialCore;
     texDiffuseSlot     = -1;
     samplerDiffuseSlot = samplerShadowSlot = -1;
     textureManager     = manager.MaterialTextureManager;
     statePoolManager   = manager.StateManager;
     MaterialPass       = technique[materialPassName];
     TransparentPass    = technique[materialOITPassName];
     ShadowPass         = technique[shadowPassName];
     WireframePass      = technique[wireframePassName];
     WireframeOITPass   = technique[wireframeOITPassName];
     UpdateMappings(MaterialPass);
     CreateTextureViews();
     CreateSamplers();
 }
Beispiel #7
0
 public PBRMaterialVariable(IEffectsManager manager, IRenderTechnique technique, PBRMaterialCore core,
                            string defaultPassName = DefaultPassNames.PBR)
     : base(manager, technique, DefaultMeshConstantBufferDesc, core)
 {
     textureManager        = manager.MaterialTextureManager;
     statePoolManager      = manager.StateManager;
     material              = core;
     MaterialPass          = technique[defaultPassName];
     OITPass               = technique[DefaultPassNames.PBROITPass];
     OITDepthPeelingInit   = technique[DefaultPassNames.OITDepthPeelingInit];
     OITDepthPeeling       = technique[DefaultPassNames.PBROITDPPass];
     TessellationPass      = technique[DefaultPassNames.MeshPBRTriTessellation];
     TessellationOITPass   = technique[DefaultPassNames.MeshPBRTriTessellationOIT];
     TessellationOITDPPass = technique[DefaultPassNames.MeshPBRTriTessellationOITDP];
     WireframePass         = technique[DefaultPassNames.Wireframe];
     WireframeOITPass      = technique[DefaultPassNames.WireframeOITPass];
     WireframeOITDPPass    = technique[DefaultPassNames.WireframeOITDPPass];
     ShadowPass            = technique[DefaultPassNames.ShadowPass];
     DepthPass             = technique[DefaultPassNames.DepthPrepass];
     UpdateMappings(MaterialPass);
     CreateTextureViews();
     CreateSamplers();
 }