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)); }; }
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]); }