コード例 #1
0
        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();
        }
コード例 #2
0
        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);
        }