Exemplo n.º 1
0
        public override void Draw(Texture2D ImageToProcess, RenderHelper rHelper, GameTime gt, Engine.GraphicInfo GraphicInfo, IWorld world, bool useFloatingBuffer)
        {
            rHelper.PushRenderTarget(target);
            gbp.Draw(rHelper[PrincipalConstants.extra1RT], rHelper, gt, GraphicInfo, world, false);
            x = rHelper.PopRenderTargetAsSingleRenderTarget2D();

            if (doubleBlur)
            {
                rHelper.PushRenderTarget(target2);
                gbp.Draw(x, rHelper, gt, GraphicInfo, world, false);
                x = rHelper.PopRenderTargetAsSingleRenderTarget2D();
            }

            effect.Parameters["intensity"].SetValue(intensity);
            effect.Parameters["glowMapBlurried"].SetValue(x);
            effect.Parameters["colorMap"].SetValue(ImageToProcess);
            effect.Parameters["halfPixel"].SetValue(GraphicInfo.HalfPixel);

            if (useFloatingBuffer)
            {
                rHelper.RenderFullScreenQuadVertexPixel(effect, SamplerState.PointClamp);
            }
            else
            {
                rHelper.RenderFullScreenQuadVertexPixel(effect, GraphicInfo.SamplerState);
            }
        }
        public override void Draw(Texture2D ImageToProcess, RenderHelper rHelper, GameTime gt, Engine.GraphicInfo GraphicInfo, IWorld world, bool useFloatingBuffer)
        {
            effect.Parameters["Params"].SetValue(new Vector4(GraphicInfo.BackBufferWidth, GraphicInfo.BackBufferHeight, world.CameraManager.ActiveCamera.FarPlane, intensity));
            effect.Parameters["DepthBuffer"].SetValue(rHelper[PrincipalConstants.DephRT]);
            effect.Parameters["NormalBuffer"].SetValue(rHelper[PrincipalConstants.normalRt]);
            effect.Parameters["RandomTexture"].SetValue(RandomTexture);
            effect.Parameters["InvProj"].SetValue(Matrix.Transpose(Matrix.Invert(world.CameraManager.ActiveCamera.Projection)));
            effect.Parameters["View"].SetValue(world.CameraManager.ActiveCamera.View);
            effect.Parameters["jitter"].SetValue(jitter);
            effect.Parameters["halfPixel"].SetValue(GraphicInfo.HalfPixel);
            effect.Parameters["diffScale"].SetValue(diffscale);
            effect.Parameters["whiteCorrection"].SetValue(whiteCorrection);

            if (outputONLYSSAOMAP)
            {
                rHelper.RenderFullScreenQuadVertexPixel(effect);
                return;
            }

            rHelper.PushRenderTarget(target);
            rHelper.Clear(Color.Black, ClearOptions.Target);
            rHelper.RenderFullScreenQuadVertexPixel(effect);
            Texture2D r = rHelper.PopRenderTargetAsSingleRenderTarget2D();

            if (blurMode == BlurMode.SINGLE || blurMode == BlurMode.DOUBLE)
            {
                rHelper.PushRenderTarget(target2);
                rHelper.Clear(Color.Black, ClearOptions.Target);
                gbp.Draw(r, rHelper, gt, GraphicInfo, world, useFloatingBuffer);
                Texture2D x = rHelper.PopRenderTargetAsSingleRenderTarget2D();

                if (blurMode == BlurMode.DOUBLE)
                {
                    rHelper.PushRenderTarget(target3);
                    rHelper.Clear(Color.Black, ClearOptions.Target);
                    gbp.Draw(x, rHelper, gt, GraphicInfo, world, useFloatingBuffer);
                    x = rHelper.PopRenderTargetAsSingleRenderTarget2D();
                }
                ssaofinal.Parameters["SSAOTex"].SetValue(x);
            }
            else if (blurMode == BlurMode.NONE)
            {
                ssaofinal.Parameters["SSAOTex"].SetValue(r);
            }

            rHelper.Clear(Color.Black, ClearOptions.Target);
            ssaofinal.Parameters["SceneTexture"].SetValue(ImageToProcess);
            ssaofinal.Parameters["halfPixel"].SetValue(GraphicInfo.HalfPixel);
            ssaofinal.Parameters["weight"].SetValue(Weight);

            if (useFloatingBuffer)
            {
                rHelper.RenderFullScreenQuadVertexPixel(ssaofinal, SamplerState.PointClamp);
            }
            else
            {
                rHelper.RenderFullScreenQuadVertexPixel(ssaofinal, GraphicInfo.SamplerState);
            }
        }
        public override void Draw(Texture2D ImageToProcess, RenderHelper rHelper, GameTime gt, Engine.GraphicInfo GraphicInfo, IWorld world, bool useFloatingBuffer)
        {
            rHelper.PushRenderTarget(renderTarget1);
            Saturate.Parameters["current"].SetValue(ImageToProcess);
            Saturate.Parameters["halfPixel"].SetValue(GraphicInfo.HalfPixel);
            if (useFloatingBuffer)
            {
                rHelper.RenderFullScreenQuadVertexPixel(Saturate, SamplerState.PointClamp);
            }
            else
            {
                rHelper.RenderFullScreenQuadVertexPixel(Saturate, SamplerState.LinearClamp);
            }

            Texture2D t = rHelper.PopRenderTargetAsSingleRenderTarget2D();

            rHelper.PushRenderTarget(renderTarget0);
            gaussian.Draw(t, rHelper, gt, GraphicInfo, world, useFloatingBuffer);
            Texture2D x = rHelper.PopRenderTargetAsSingleRenderTarget2D();

            rHelper.Clear(Color.Black);

            Combine.Parameters["halfPixel"].SetValue(GraphicInfo.HalfPixel);
            Combine.Parameters["base"].SetValue(ImageToProcess);
            Combine.Parameters["last"].SetValue(x);
            if (useFloatingBuffer)
            {
                rHelper.RenderFullScreenQuadVertexPixel(Combine, SamplerState.PointClamp);
            }
            else
            {
                rHelper.RenderFullScreenQuadVertexPixel(Combine, GraphicInfo.SamplerState);
            }
        }
Exemplo n.º 4
0
        public override void Draw(Texture2D ImageToProcess, RenderHelper rHelper, GameTime gt, Engine.GraphicInfo GraphicInfo, IWorld world, bool useFloatingBuffer)
        {
            rHelper.PushRenderTarget(target);
            be.Draw(ImageToProcess, rHelper, gt, GraphicInfo, world, useFloatingBuffer);
            depht.Parameters["BlurScene"].SetValue(rHelper.PopRenderTargetAsSingleRenderTarget2D());
            depht.Parameters["FarPlane"].SetValue(world.CameraManager.ActiveCamera.FarPlane);
            depht.Parameters["D1M"].SetValue(rHelper[PrincipalConstants.DephRT]);

            rHelper.Clear(Color.Black, ClearOptions.Target);
            SetShaderParameters(distance, range, world.CameraManager.ActiveCamera.NearPlane, world.CameraManager.ActiveCamera.FarPlane);
            if (useFloatingBuffer)
            {
                rHelper.RenderTextureToFullScreenSpriteBatch(ImageToProcess, depht, GraphicInfo.FullScreenRectangle, SamplerState.PointClamp);
            }
            else
            {
                rHelper.RenderTextureToFullScreenSpriteBatch(ImageToProcess, depht, GraphicInfo.FullScreenRectangle, GraphicInfo.SamplerState);
            }
        }