public SSAOEffect(Game game, float radius, float intensity, float scale, float bias) : base(game) { ssao = new SSAO(game, radius, intensity, scale, bias); posMap = new WorldPositionMap(game); blur = new PoissonDiscBlur(game); blur.Sampler = SamplerState.PointClamp; blend = new SceneBlend(game); blend.Blend = true; blend.Sampler = SamplerState.PointClamp; AddPostProcess(posMap); AddPostProcess(ssao); AddPostProcess(blur); AddPostProcess(blend); }
public override void Load() { base.Load(); if (GraphicsDevice != null) { // Effects m_ClearGBufferEffect = RenderManager.Instance.LoadEffect("Shaders/Deferred Rendering/ClearGBuffer"); // Post Processing m_GaussianEffect = RenderManager.Instance.GetEffect("GaussianBlurPostProcessor"); m_DepthOfFieldEffect = RenderManager.Instance.GetEffect("DOFPostProcessor"); m_BloomEffect = RenderManager.Instance.GetEffect("BloomPostProcessor"); m_MergeEffect = RenderManager.Instance.GetEffect("MergeBloomPostProcessor"); m_EdgeDetectionEffect = RenderManager.Instance.GetEffect("EdgeDetectionPostProcessor"); m_MLAAEffect = RenderManager.Instance.GetEffect("MLAAPostProcessor"); m_FilmGrainEffect = RenderManager.Instance.GetEffect("FilmMappingPostProcessor"); m_SSAOEffect = RenderManager.Instance.GetEffect("SSAO"); m_SSAOBlurEffect = RenderManager.Instance.GetEffect("SSAOBlur"); m_SSAOMergeEffect = RenderManager.Instance.GetEffect("SSAOMerge"); m_FXAAEffect = RenderManager.Instance.GetEffect("FXAA"); // Post Processor m_MLAAProcessor = new MLAA(GraphicsDevice, m_MLAAEffect, m_EdgeDetectionEffect); m_SSAOProcessor = new SSAO(GraphicsDevice, m_SSAOEffect, m_SSAOBlurEffect, m_SSAOMergeEffect); m_FXAAProcessor = new FXAA(GraphicsDevice, m_FXAAEffect); // These post processors were created up front so just assign the effect so them m_DepthOfFieldPostProcessor.Effect = m_DepthOfFieldEffect; m_DepthOfFieldPostProcessor.BlurEffect = m_GaussianEffect; m_BloomPostProcessor.Effect = m_BloomEffect; m_BloomPostProcessor.BlurEffect = m_GaussianEffect; m_BloomPostProcessor.MergeEffect = m_MergeEffect; m_FilmGrainProcessor.Effect = m_FilmGrainEffect; } }