Пример #1
0
        internal override void Cleanup()
        {
            base.Cleanup();

            Dsv = null;
            DefaultRasterizer = null;
        }
Пример #2
0
        public void SetRasterizer(IRasterizerState rasterizerState)
        {
            graphicsDevice.Cast <RasterizerState>(rasterizerState, "rasterizerState"); // State überprüfen

            currentState.Rasterizer = rasterizerState;
            stateDirty = true;
        }
Пример #3
0
        internal override void Cleanup()
        {
            base.Cleanup();

            Dsv = null;
            DefaultRasterizer = null;
            IsCascade         = false;
        }
Пример #4
0
        public void SetRasterizerState(IRasterizerState rasterizerState)
        {
            var command = new D3D11Command
            {
                Type            = CommandType.SetRasterizerState,
                RasterizerState = (D3D11RasterizerState)rasterizerState
            };

            _commandList.Add(command);
        }
Пример #5
0
        internal void SetRasterizerState(IRasterizerState rs)
        {
            RasterizerState dxstate = null;

            if (rs != null)
            {
                IRasterizerStateInternal rsInternal = (IRasterizerStateInternal)rs;
                dxstate = rsInternal.Resource;
            }
            m_state.SetRasterizerState(dxstate);
            CheckErrors();
        }
Пример #6
0
 public void InitStandard(string cmFilepath, string ngFilepath, string extFilepath)
 {
     m_srvs = new ISrvBindable[]
     {
         MyManagers.FileTextures.GetTexture(cmFilepath, MyFileTextureEnum.COLOR_METAL),
         MyManagers.FileTextures.GetTexture(ngFilepath, MyFileTextureEnum.NORMALMAP_GLOSS),
         MyManagers.FileTextures.GetTexture(extFilepath, MyFileTextureEnum.EXTENSIONS)
     };
     m_depthStencilState    = MyDepthStencilStateManager.DefaultDepthState;
     m_blendState           = null;
     m_rasterizerState      = null;
     m_isFaceCullingEnabled = true;
 }
Пример #7
0
 public D3D11Pipeline(Shader vertexShader, Shader pixelShader, IInputLayout inputLayout,
                      IBlendState blendState, IDepthStencilState depthStencilState, IRasterizerState rasterizerState,
                      Viewport viewport, PrimitiveTopology primitiveTopology)
 {
     VertexShader      = vertexShader;
     PixelShader       = pixelShader;
     InputLayout       = inputLayout;
     BlendState        = blendState;
     DepthStencilState = depthStencilState;
     RasterizerState   = rasterizerState;
     Viewport          = viewport;
     PrimitiveTopology = primitiveTopology;
 }
Пример #8
0
        public static IRasterizerState New(VideoTypes videoType, IDisposableResource parent, IRasterizerStateDesc desc)
        {
            IRasterizerState api = null;

                        #if WIN32
            if (videoType == VideoTypes.D3D9)
            {
                api = new D3D9.RasterizerState(parent, desc);
            }
                        #endif

                        #if WIN32 || WINRT || WP8
            if (videoType == VideoTypes.D3D11)
            {
                api = new D3D11.RasterizerState(parent, desc);
            }
                        #endif

                        #if WIN32 || OSX || LINUX || iOS || ANDROID || NaCl
            if (videoType == VideoTypes.OpenGL)
            {
                api = new OpenGL.RasterizerState(parent, desc);
            }
                        #endif

                        #if XNA
            if (videoType == VideoTypes.XNA)
            {
                api = new XNA.RasterizerState(parent, desc);
            }
                        #endif

                        #if VITA
            if (videoType == VideoTypes.Vita)
            {
                api = new Vita.RasterizerState(parent, desc);
            }
                        #endif

            if (api == null)
            {
                Debug.ThrowError("RasterizerStateAPI", "Unsuported InputType: " + videoType);
            }
            return(api);
        }
Пример #9
0
        public GBufferShader(Engine engine) : base(engine, @"Rendering\Passes\Shaders\gbuffer")
        {
            sampler        = engine.GraphicsDevice.Factory.CreateSampler(new SamplerInfo(TextureFilter.Linear));
            constantBuffer = shader.CreateConstantBuffer(ResourceUsage.Dynamic);

            rasterizerState = engine.GraphicsDevice.Factory.CreateRasterizerState(new RasterizerStateInfo()
            {
                CullMode = CullMode.None,
                FillMode = FillMode.Solid,
                IsFrontCounterClockwise = false,
            });

            depthStencil = engine.GraphicsDevice.Factory.CreateDepthStencilState(new DepthStencilStateInfo()
            {
                IsDepthEnabled  = true,
                DepthComparsion = Comparison.LessEqual,
                DepthWriteMask  = DepthWriteMask.All
            });
        }
Пример #10
0
 public void InitDecal(string cmFilepath, string ngFilepath, string extFilepath, string alphamaskFilepath, bool isPremultipliedAlpha, bool isCutout)
 {
     m_srvs = new ISrvBindable[]
     {
         MyManagers.FileTextures.GetTexture(cmFilepath, MyFileTextureEnum.COLOR_METAL),
         MyManagers.FileTextures.GetTexture(ngFilepath, MyFileTextureEnum.NORMALMAP_GLOSS),
         MyManagers.FileTextures.GetTexture(extFilepath, MyFileTextureEnum.EXTENSIONS),
         MyManagers.FileTextures.GetTexture(alphamaskFilepath, MyFileTextureEnum.ALPHAMASK)
     };
     m_depthStencilState = MyDepthStencilStateManager.DepthTestReadOnly;
     if (isCutout)
     {
         m_blendState = null;
     }
     else
     {
         m_blendState = GetAlphamaskBlendState(cmFilepath, ngFilepath, extFilepath, isPremultipliedAlpha);
     }
     m_rasterizerState      = MyRasterizerStateManager.DecalRasterizerState;
     m_isFaceCullingEnabled = true;
 }
Пример #11
0
        protected override void Initialize()
        {
            base.Initialize();

            Window.Title = "Xacor.Demo";

            _viewMatrix       = Matrix.LookAtRH(new Vector3(0, 0, 10f), Vector3.Zero, Vector3.UnitY);
            _projectionMatrix = Matrix.PerspectiveFovRH(MathF.PI / 3.0f, _renderResolution.Width / (float)_renderResolution.Height, 0.1f, 4096f);
            _leftMvp          = new InputBuffer
            {
                ModelViewProjectionMatrix = Matrix.Translation(-1.5f, 1, -0.5f) * _viewMatrix * _projectionMatrix
            };

            _rightMvp = new InputBuffer
            {
                ModelViewProjectionMatrix = Matrix.Translation(1.5f, -1, 0.5f) * _viewMatrix * _projectionMatrix
            };

            _viewport                 = new Viewport(0, 0, _renderResolution.Width, _renderResolution.Height, 0.1f, 4096f);
            _defaultBlendState        = GraphicsFactory.CreateBlendState(true, Blend.SourceAlpha, Blend.InverseSourceAlpha, BlendOperation.Add, Blend.One, Blend.Zero, BlendOperation.Add);
            _defaultDepthStencilState = GraphicsFactory.CreateDepthStencilState();
            _defaultRasterizerState   = GraphicsFactory.CreateRasterizerState(CullMode.None, FillMode.Solid, true, false, false, false);

            var macros = new[] { ("TEST", "0") };
Пример #12
0
 public IPipeline CreatePipeline(Shader vertexShader, Shader pixelShader, IInputLayout inputLayout, IBlendState blendState,
                                 IDepthStencilState depthStencilState, IRasterizerState rasterizerState, Viewport viewport,
                                 PrimitiveTopology primitiveTopology)
 {
     throw new System.NotImplementedException();
 }
Пример #13
0
 public IPipeline CreatePipeline(Shader vertexShader, Shader pixelShader, IInputLayout inputLayout,
                                 IBlendState blendState, IDepthStencilState depthStencilState, IRasterizerState rasterizerState,
                                 Viewport viewport, PrimitiveTopology primitiveTopology)
 {
     return(new D3D11Pipeline(vertexShader, pixelShader, inputLayout, blendState, depthStencilState, rasterizerState, viewport, primitiveTopology));
 }
Пример #14
0
        internal void Apply(IRasterizerState compareTo)
        {
            if (compareTo != null)
            {
                if (compareTo.Info.FillMode != Info.FillMode)
                {
                    GL.PolygonMode(MaterialFace.FrontAndBack, EnumConverter.Convert(Info.FillMode));
                }

                if (compareTo.Info.CullMode != Info.CullMode)
                {
                    if (Info.CullMode != CullMode.None)
                    {
                        GL.Enable(EnableCap.CullFace);
                        GL.CullFace(EnumConverter.Convert(Info.CullMode));
                    }
                    else
                    {
                        GL.Disable(EnableCap.CullFace);
                    }
                }

                if (compareTo.Info.IsFrontCounterClockwise != Info.IsFrontCounterClockwise)
                {
                    GL.FrontFace(Info.IsFrontCounterClockwise ? FrontFaceDirection.Ccw : FrontFaceDirection.Cw);
                }

                if (compareTo.Info.IsMultisampleEnabled != Info.IsMultisampleEnabled)
                {
                    if (Info.IsMultisampleEnabled)
                    {
                        GL.Enable(EnableCap.Multisample);
                        GL.Enable(EnableCap.PolygonSmooth);
                    }
                    else
                    {
                        GL.Disable(EnableCap.Multisample);
                        GL.Disable(EnableCap.PolygonSmooth);
                    }
                }

                if (compareTo.Info.IsScissorEnabled != Info.IsScissorEnabled)
                {
                    if (Info.IsScissorEnabled)
                    {
                        GL.Enable(EnableCap.ScissorTest);
                    }
                    else
                    {
                        GL.Disable(EnableCap.ScissorTest);
                    }
                }

                if (compareTo.Info.IsAntialiasedLineEnabled != Info.IsAntialiasedLineEnabled)
                {
                    if (Info.IsAntialiasedLineEnabled)
                    {
                        GL.Enable(EnableCap.LineSmooth);
                    }
                    else
                    {
                        GL.Disable(EnableCap.LineSmooth);
                    }
                }

                if (compareTo.Info.DepthBias != Info.DepthBias || compareTo.Info.SlopeScaledDepthBias != Info.SlopeScaledDepthBias)
                {
                    GL.PolygonMode(MaterialFace.FrontAndBack, EnumConverter.Convert(Info.FillMode));
                    GL.PolygonOffset(Info.DepthBias, Info.SlopeScaledDepthBias);
                }
            }
            else
            {
                //Nothing to compare to
                //Set all states
                GL.PolygonMode(MaterialFace.FrontAndBack, EnumConverter.Convert(Info.FillMode));

                if (Info.CullMode != CullMode.None)
                {
                    GL.Enable(EnableCap.CullFace);
                    GL.CullFace(EnumConverter.Convert(Info.CullMode));
                }
                else
                {
                    GL.Disable(EnableCap.CullFace);
                }

                GL.FrontFace(Info.IsFrontCounterClockwise ? FrontFaceDirection.Ccw : FrontFaceDirection.Cw);

                if (Info.IsMultisampleEnabled)
                {
                    GL.Enable(EnableCap.Multisample);
                    GL.Enable(EnableCap.PolygonSmooth);
                }
                else
                {
                    GL.Disable(EnableCap.Multisample);
                    GL.Disable(EnableCap.PolygonSmooth);
                }

                if (Info.IsScissorEnabled)
                {
                    GL.Enable(EnableCap.ScissorTest);
                }
                else
                {
                    GL.Disable(EnableCap.ScissorTest);
                }

                if (Info.IsAntialiasedLineEnabled)
                {
                    GL.Enable(EnableCap.LineSmooth);
                }
                else
                {
                    GL.Disable(EnableCap.LineSmooth);
                }

                GL.PolygonMode(MaterialFace.FrontAndBack, EnumConverter.Convert(Info.FillMode));

                GL.PolygonOffset(Info.DepthBias, Info.SlopeScaledDepthBias);
            }
        }
Пример #15
0
        public MyRasterizerStateManager()
        {
            RasterizerStateDescription desc = new RasterizerStateDescription();

            desc.FillMode = FillMode.Wireframe;
            desc.CullMode = CullMode.Back;
            MyRasterizerStateManager.WireframeRasterizerState = CreateResource("WireframeRasterizerState", ref desc);

            desc.FillMode = FillMode.Solid;
            desc.CullMode = CullMode.Front;
            MyRasterizerStateManager.InvTriRasterizerState = CreateResource("InvTriRasterizerState", ref desc);

            desc.FillMode = FillMode.Solid;
            desc.CullMode = CullMode.None;
            MyRasterizerStateManager.NocullRasterizerState = CreateResource("NocullRasterizerState", ref desc);

            desc.FillMode = FillMode.Wireframe;
            desc.CullMode = CullMode.None;
            MyRasterizerStateManager.NocullWireframeRasterizerState = CreateResource("NocullWireframeRasterizerState", ref desc);

            desc          = new RasterizerStateDescription();
            desc.FillMode = FillMode.Solid;
            desc.CullMode = CullMode.Back;
            MyRasterizerStateManager.LinesRasterizerState = CreateResource("LinesRasterizerState", ref desc);

            desc                      = new RasterizerStateDescription();
            desc.FillMode             = FillMode.Solid;
            desc.CullMode             = CullMode.Back;
            desc.DepthBias            = 25000;
            desc.DepthBiasClamp       = 2;
            desc.SlopeScaledDepthBias = 0;
            MyRasterizerStateManager.DecalRasterizerState = CreateResource("DecalRasterizerState", ref desc);

            desc                      = new RasterizerStateDescription();
            desc.FillMode             = FillMode.Solid;
            desc.CullMode             = CullMode.None;
            desc.DepthBias            = 25000;
            desc.DepthBiasClamp       = 2;
            desc.SlopeScaledDepthBias = 0;
            MyRasterizerStateManager.NocullDecalRasterizerState = CreateResource("NocullDecalRasterizerState", ref desc);

            desc          = new RasterizerStateDescription();
            desc.FillMode = FillMode.Solid;
            desc.CullMode = CullMode.None;
            desc.IsFrontCounterClockwise = true;
            desc.DepthBias            = 0;
            desc.DepthBiasClamp       = 0;
            desc.SlopeScaledDepthBias = 0;
            MyRasterizerStateManager.CascadesRasterizerState = CreateResource("CascadesRasterizerState", ref desc);

            desc          = new RasterizerStateDescription();
            desc.FillMode = FillMode.Solid;
            desc.CullMode = CullMode.None;
            desc.IsFrontCounterClockwise = true;
            desc.DepthBias            = 20;
            desc.DepthBiasClamp       = 2;
            desc.SlopeScaledDepthBias = 4;
            MyRasterizerStateManager.CascadesRasterizerStateOld = CreateResource("CascadesRasterizerStateOld", ref desc);

            desc          = new RasterizerStateDescription();
            desc.FillMode = FillMode.Solid;
            desc.CullMode = CullMode.None;
            desc.IsFrontCounterClockwise = true;
            desc.DepthBias            = 2500;
            desc.DepthBiasClamp       = 10000;
            desc.SlopeScaledDepthBias = 4;
            MyRasterizerStateManager.ShadowRasterizerState = CreateResource("ShadowRasterizerState", ref desc);

            desc.FillMode = FillMode.Solid;
            desc.CullMode = CullMode.Back;
            desc.IsFrontCounterClockwise = false;
            desc.IsScissorEnabled        = true;
            MyRasterizerStateManager.ScissorTestRasterizerState = CreateResource("ScissorTestRasterizerState", ref desc);
        }
Пример #16
0
 public Stars(IDevice device, int starCount)
 {
     this.starCount = starCount;
     shaders = CreateShaders(device);
     timeUbuffer = CreateTimeUbuffer(device);
     vertexLayout = CreateVertexLayout(device, shaders.VertexShader);
     vertexBuffer = CreateVertexBuffer(device, starCount);
     indexBuffer = CreateIndexBuffer(device, starCount);
     rasterizerState = CreateRasterizerState(device);
     depthStencilState = CreateDepthStencilState(device);
     blendState = CreateBlendState(device);
 }
Пример #17
0
 public void SetRasterizerState(IRasterizerState rasterizerState)
 {
     throw new NotImplementedException();
 }
Пример #18
0
        internal override void Cleanup()
        {
            base.Cleanup();

            Dsv = null;
            DefaultRasterizer = null;
        }
Пример #19
0
        /// <summary>
        /// OpenGL States auf DirectX11 default Werte setzen
        /// </summary>
        private void CreateDefaultState()
        {
            IBlendState defaultBlend = graphicsDevice.Factory.CreateBlendState(new BlendStateInfo()
            {
                AlphaToCoverageEnable  = false,
                IndependentBlendEnable = false,
                RenderTargets          = new RTBlendInfo[] {
                    new RTBlendInfo()
                    {
                        IsBlendEnabled        = false,
                        SrcBlend              = Blend.One,
                        DestBlend             = Blend.Zero,
                        BlendOp               = Graphics.BlendOp.Add,
                        SrcBlendAlpha         = Blend.One,
                        DestBlendAlpha        = Blend.Zero,
                        BlendOpAlpha          = BlendOp.Add,
                        RenderTargetWriteMask = ColorWriteMaskFlags.All,
                    }
                },
            });

            IRasterizerState defaultRasterizer = graphicsDevice.Factory.CreateRasterizerState(new RasterizerStateInfo()
            {
                FillMode = FillMode.Solid,
                CullMode = CullMode.None,
                IsFrontCounterClockwise = false,
                DepthBias                = 0,
                SlopeScaledDepthBias     = 0.0f,
                DepthBiasClamp           = 0.0f,
                IsDepthClipEnabled       = true,
                IsScissorEnabled         = true,
                IsMultisampleEnabled     = false,
                IsAntialiasedLineEnabled = false,
            });

            IDepthStencilState defaultDepthStencil = graphicsDevice.Factory.CreateDepthStencilState(new DepthStencilStateInfo()
            {
                IsDepthEnabled   = true,
                DepthWriteMask   = DepthWriteMask.All,
                DepthComparsion  = Comparison.Less,
                IsStencilEnabled = false,
                StencilReadMask  = 0x0,
                StencilWriteMask = 0x0,
                FrontFace        = new DepthStencilOperator()
                {
                    Comparsion         = Comparison.Always,
                    DepthFailOperation = StencilOperation.Keep,
                    PassOperation      = StencilOperation.Keep,
                    FailOperation      = StencilOperation.Keep,
                },
                BackFace = new DepthStencilOperator()
                {
                    Comparsion         = Comparison.Always,
                    DepthFailOperation = StencilOperation.Keep,
                    PassOperation      = StencilOperation.Keep,
                    FailOperation      = StencilOperation.Keep,
                },
            });

            graphicsDevice.Cast <BlendState>(defaultBlend, "defaultBlend").Apply();
            graphicsDevice.Cast <RasterizerState>(defaultRasterizer, "defaultRasterizer").Apply();
            graphicsDevice.Cast <DepthStencilState>(defaultDepthStencil, "depthStencil").Apply(currentStencilReference);
        }
Пример #20
0
        internal override void Cleanup()
        {
            base.Cleanup();

            Dsv = null;
            DefaultRasterizer = null;
            IsCascade = false;
        }