示例#1
0
        public PostProcessFXAA(RenderTarget dest, RenderTarget source)
        {
            destination = dest;
            vs          = Renderer.ShaderLoader.LoadVertexShader("assets/shader/fxaa.hlsl", "FxaaVS");
            ps          = Renderer.ShaderLoader.LoadPixelShader("assets/shader/fxaa.hlsl", "FxaaPS");
            paramCollection.SetParameter("RCPFrame", new Vector4(1.0f / destination.Width, 1.0f / destination.Height, 0, 0));
            paramCollection.SetParameter("InputSampler", Renderer.Instance.CreateSamplerState(SharpDX.Direct3D11.TextureAddressMode.Clamp, SharpDX.Direct3D11.Filter.MinMagLinearMipPoint,
                                                                                              SharpDX.Direct3D11.Comparison.Always, 4));
            paramCollection.SetParameter("InputTexture", source);

            rasterizer = new RasterizerState(Renderer.Dev, new RasterizerStateDescription {
                CullMode             = CullMode.Back,
                FillMode             = FillMode.Solid,
                IsDepthClipEnabled   = true,
                IsMultisampleEnabled = true,
            });

            var bsd = BlendStateDescription.Default();

            bsd.IndependentBlendEnable                = false;
            bsd.RenderTarget[0].IsBlendEnabled        = false;
            bsd.RenderTarget[0].RenderTargetWriteMask = ColorWriteMaskFlags.All;
            blendstate = new BlendState(Renderer.Dev, bsd);

            destination.OnResize += (o, e) => {
                paramCollection.SetParameter("RCPFrame", new Vector4(1.0f / e.Size.Width, 1.0f / e.Size.Height, 0, 0));
            };
        }
示例#2
0
        private void Init()
        {
            vsRender = Renderer.ShaderLoader.LoadVertexShader("assets/shader/deferredRender.hlsl", "VSMain");
            psRender = Renderer.ShaderLoader.LoadPixelShader("assets/shader/deferredRender.hlsl", "PSMain");

            var rasterizerStateDescription = RasterizerStateDescription.Default();

            rasterizerStateDescription.CullMode = CullMode.Back;
            rasterizerStateDescription.FillMode = FillMode.Solid;
            rasterizerState = new RasterizerState(Renderer.Dev, rasterizerStateDescription);

            clearRenderTask   = new ClearRenderTask(renderTargets);
            lightRenderTask   = new LightRenderTask(renderTargets.RenderTargets[3], renderTargets.RenderTargets[1], renderTargets.RenderTargets[2]);
            combineRenderTask = new CombineRenderTask(renderTargets.RenderTargets[4], renderTargets.RenderTargets[0], renderTargets.RenderTargets[3]);
            fxaaRenderTask    = new PostProcessFXAA(swapChain.RenderTarget.RenderTargets[0], renderTargets.RenderTargets[4]);
        }