Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
WireframeShaderPlugin.cs
Go to the documentation of this file.
1 using System.Linq;
2 
3 using SiliconStudio.Paradox.Graphics;
4 using SiliconStudio.Paradox.Shaders;
5 
6 namespace SiliconStudio.Paradox.Effects
7 {
8  public class WireframeShaderPlugin : ShaderPlugin<RenderPassPlugin>
9  {
10  /// <summary>
11  /// Gets or sets the main target plugin this instance is attached to.
12  /// </summary>
13  /// <value>
14  /// The main target plugin.
15  /// </value>
16  public RenderTargetsPlugin MainTargetPlugin { get; set; }
17 
18  public override void SetupPasses(EffectMesh effectMesh)
19  {
20  base.SetupPasses(effectMesh);
21  }
22 
23  public override void SetupShaders(EffectMesh effectMesh)
24  {
25  // Duplicate the main shader
26  throw new System.NotImplementedException();
27  EffectShaderPass mainShaderPass;
28  //var mainShaderPass = FindShaderPassFromPlugin(MainTargetPlugin);
29  DefaultShaderPass.Shader = (ShaderMixinSource)mainShaderPass.Shader.Clone();
30  DefaultShaderPass.Macros.AddRange(mainShaderPass.Macros);
31  DefaultShaderPass.SubMeshDataKey = mainShaderPass.SubMeshDataKey;
32 
33  // Wireframe are white!
34  var wireframeShader = new ShaderClassSource("Wireframe");
35  DefaultShaderPass.Shader.Mixins.Add(wireframeShader);
36  }
37 
38  public override void SetupResources(EffectMesh effectMesh)
39  {
40  base.SetupResources(effectMesh);
41 
42  throw new System.NotImplementedException();
43  EffectShaderPass effectShaderPass;
44  //var effectShaderPass = FindShaderPassFromPlugin(RenderPassPlugin);
45 
46  var rasterizer = RasterizerState.New(GraphicsDevice, new RasterizerStateDescription(CullMode.None) { FillMode = FillMode.Wireframe, DepthBias = -1000 });
47  rasterizer.Name = "WireFrame";
48  effectShaderPass.Parameters.Set(RasterizerStateKey, rasterizer);
49 
50  var depthStencilState = DepthStencilState.New(GraphicsDevice, new DepthStencilStateDescription(true, false) { DepthBufferFunction = CompareFunction.LessEqual });
51  effectShaderPass.Parameters.Set(DepthStencilStateKey, depthStencilState);
52  }
53  }
54 }
override void SetupPasses(EffectMesh effectMesh)
override void SetupShaders(EffectMesh effectMesh)
A mixin performing a combination of ShaderClassSource and other mixins.
Performs primitive-based rendering, creates resources, handles system-level variables, adjusts gamma ramp levels, and creates shaders. See The+GraphicsDevice+class to learn more about the class.
CullMode
Indicates triangles facing a particular direction are not drawn.
Definition: CullMode.cs:14
override void SetupResources(EffectMesh effectMesh)
Level10 render pass using a depth buffer and a render target.