internal static void Init() { InitGraphics(); InitTexture(); lineMesh = new Mesh(); lineMesh.Vertices = new Vector3[] { Vector3.Zero, Vector3.UnitZ, }; lineMesh.SetIndices(0, new int[] { 0, 1 }, BeginMode.Lines); lineMesh.Load(); lineShader = new LineShader(); lineShader.Load(); InitWireframe(); }
public ShaderManager(Device device, DXManager dxman) { Device = device; DXMan = dxman; Lines = new LineShader(device); RasterizerStateDescription rsd = new RasterizerStateDescription() { CullMode = CullMode.Back, DepthBias = 0, DepthBiasClamp = 0.0f, FillMode = FillMode.Solid, IsAntialiasedLineEnabled = true, IsDepthClipEnabled = true, IsFrontCounterClockwise = true, IsMultisampleEnabled = true, IsScissorEnabled = false, SlopeScaledDepthBias = 0.0f }; rsSolid = new RasterizerState(device, rsd); rsd.FillMode = FillMode.Wireframe; rsWireframe = new RasterizerState(device, rsd); rsd.CullMode = CullMode.None; rsWireframeDblSided = new RasterizerState(device, rsd); rsd.FillMode = FillMode.Solid; rsSolidDblSided = new RasterizerState(device, rsd); BlendStateDescription bsd = new BlendStateDescription() { AlphaToCoverageEnable = false,//true, IndependentBlendEnable = false, }; bsd.RenderTarget[0].AlphaBlendOperation = BlendOperation.Add; bsd.RenderTarget[0].BlendOperation = BlendOperation.Add; bsd.RenderTarget[0].DestinationAlphaBlend = BlendOption.One; bsd.RenderTarget[0].DestinationBlend = BlendOption.InverseSourceAlpha; bsd.RenderTarget[0].IsBlendEnabled = true; bsd.RenderTarget[0].RenderTargetWriteMask = ColorWriteMaskFlags.All; bsd.RenderTarget[0].SourceAlphaBlend = BlendOption.Zero; bsd.RenderTarget[0].SourceBlend = BlendOption.SourceAlpha; bsd.RenderTarget[1] = bsd.RenderTarget[0]; bsd.RenderTarget[2] = bsd.RenderTarget[0]; bsd.RenderTarget[3] = bsd.RenderTarget[0]; bsDefault = new BlendState(device, bsd); bsd.AlphaToCoverageEnable = true; bsAlpha = new BlendState(device, bsd); bsd.AlphaToCoverageEnable = false; bsd.RenderTarget[0].DestinationBlend = BlendOption.One; bsAdd = new BlendState(device, bsd); DepthStencilStateDescription dsd = new DepthStencilStateDescription() { BackFace = new DepthStencilOperationDescription() { Comparison = Comparison.GreaterEqual, DepthFailOperation = StencilOperation.Zero, FailOperation = StencilOperation.Zero, PassOperation = StencilOperation.Zero, }, DepthComparison = Comparison.GreaterEqual, DepthWriteMask = DepthWriteMask.All, FrontFace = new DepthStencilOperationDescription() { Comparison = Comparison.GreaterEqual, DepthFailOperation = StencilOperation.Zero, FailOperation = StencilOperation.Zero, PassOperation = StencilOperation.Zero }, IsDepthEnabled = true, IsStencilEnabled = false, StencilReadMask = 0, StencilWriteMask = 0 }; dsEnabled = new DepthStencilState(device, dsd); dsd.DepthWriteMask = DepthWriteMask.Zero; dsDisableWrite = new DepthStencilState(device, dsd); dsd.DepthComparison = Comparison.LessEqual; dsDisableWriteRev = new DepthStencilState(device, dsd); dsd.DepthComparison = Comparison.Always; dsDisableComp = new DepthStencilState(device, dsd); dsd.IsDepthEnabled = false; dsDisableAll = new DepthStencilState(device, dsd); }