Beispiel #1
0
        /// <summary>
        /// Render a screen aligned quad used to process the horizontal and vertical blur operations
        /// </summary>
        public void RenderScreenQuad(BlurTechnique technique, Texture2D texture, Vector4 color, float scale)
        {
            if (gd == null)
            {
                throw new ArgumentNullException("gd");
            }

            gd.SetVertexBuffer(vertexBuffer);

            blurEffect.CurrentTechnique = blurEffect.Techniques[(int)technique];

            Matrix m = Matrix.CreateTranslation(-sizeX / 2, -sizeY / 2, 0) *
                       Matrix.CreateScale(scale, scale, 1) *
                       Matrix.CreateTranslation(sizeX / 2, sizeY / 2, 0);

            paramWorldViewProjection.SetValue(m * viewProjection);
            paramPixelSize.SetValue(pixelSize);
            paramColorMap.SetValue(texture);
            paramColor.SetValue(color);

            blurEffect.CurrentTechnique.Passes[0].Apply();
            gd.DrawPrimitives(PrimitiveType.TriangleList, 0, 2);

            gd.SetVertexBuffer(null);
        }
Beispiel #2
0
        public void BlurTextureToTarget(Texture2D texture, LightMapSize mapSize, BlurTechnique blurTechnique, float bluriness)
        {
            // Get the pass to use
            string passName = "";

            switch (blurTechnique) {
                case (BlurTechnique.Horizontal):
                    effect.Parameters["BlurFactorU"].SetValue(1f / GraphicsDevice.PresentationParameters.BackBufferWidth);
                    passName = "HorizontalBlur";
                    break;

                case (BlurTechnique.Vertical):
                    effect.Parameters["BlurFactorV"].SetValue(1f / graphicsDevice.PresentationParameters.BackBufferHeight);
                    passName = "VerticalBlur";
                    break;
            }

            float biasFactor = BiasFactorFromLightMapSize(mapSize);

            // Calculate the texel bias
            var texelBias = new Vector2 {
                X = biasFactor / graphicsDevice.Viewport.Width,
                Y = biasFactor / graphicsDevice.Viewport.Height,
            };

            effect.Parameters["Texture0"].SetValue(texture);
            effect.Parameters["TexelBias"].SetValue(texelBias);
            effect.Parameters["Bluriness"].SetValue(bluriness);
            effect.CurrentTechnique = effect.Techniques["Blur"];

            effect.CurrentTechnique.Passes[passName].Apply();
            graphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleStrip, Unit.Quad, 0, 2);
        }
        public void BlurTextureToTarget(Texture2D texture, LightMapSize mapSize, BlurTechnique blurTechnique,
                                        float bluriness)
        {
            // Get the pass to use
            var passName = "";

            switch (blurTechnique)
            {
            case BlurTechnique.Horizontal:
                Effect.Parameters["BlurFactorU"]
                .SetValue(1f / GraphicsDevice.PresentationParameters.BackBufferWidth);

                passName = "HorizontalBlur";

                break;

            case BlurTechnique.Vertical:
                Effect.Parameters["BlurFactorV"]
                .SetValue(1f / GraphicsDevice.PresentationParameters.BackBufferHeight);

                passName = "VerticalBlur";

                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(blurTechnique), blurTechnique, null);
            }

            var biasFactor = BiasFactorFromLightMapSize(mapSize);

            var texelBias = new Vector2
            {
                X = biasFactor / GraphicsDevice.Viewport.Width,
                Y = biasFactor / GraphicsDevice.Viewport.Height,
            };


            Effect.Parameters["Texture0"].SetValue(texture);
            Effect.Parameters["TexelBias"].SetValue(texelBias);
            Effect.Parameters["Bluriness"].SetValue(bluriness);
            Effect.CurrentTechnique = Effect.Techniques["Blur"];

            Effect.CurrentTechnique.Passes[passName].Apply();

            GraphicsDevice.DrawUserPrimitives(
                primitiveType: PrimitiveType.TriangleStrip,
                vertexData: UnitQuad,
                vertexOffset: 0,
                primitiveCount: 2);
        }
Beispiel #4
0
        /// <summary>
        /// Render a screen aligned quad used to process the horizontal and vertical blur operations
        /// </summary>
        public void RenderScreenQuad(BlurTechnique technique, Texture2D texture, Vector4 color)
        {
            if (gd == null)
            {
                throw new ArgumentNullException("gd");
            }

            gd.SetVertexBuffer(vertexBuffer);

            blurEffect.CurrentTechnique = blurEffect.Techniques[(int)technique];

            paramWorldViewProjection.SetValue(viewProjection);
            paramPixelSize.SetValue(pixelSize);
            paramColorMap.SetValue(texture);
            paramColor.SetValue(color);

            blurEffect.CurrentTechnique.Passes[0].Apply();
            gd.DrawPrimitives(PrimitiveType.TriangleList, 0, 2);

            gd.SetVertexBuffer(null);
        }
        public void BlurTextureToTarget(Texture2D texture, LightMapSize mapSize, BlurTechnique blurTechnique, float bluriness)
        {
            // Get the pass to use
            string passName = "";

            switch (blurTechnique)
            {
            case (BlurTechnique.Horizontal):
                this.mEffect.Parameters["BlurFactorU"].SetValue(1f / this.GraphicsDevice.PresentationParameters.BackBufferWidth);
                passName = "HorizontalBlur";
                break;

            case (BlurTechnique.Vertical):
                this.mEffect.Parameters["BlurFactorV"].SetValue(1f / this.mGraphicsDevice.PresentationParameters.BackBufferHeight);
                passName = "VerticalBlur";
                break;
            }

            var biasFactor = KryptonRenderHelper.BiasFactorFromLightMapSize(mapSize);

            // Calculate the texel bias
            Vector2 texelBias = new Vector2()
            {
                X = biasFactor / this.mGraphicsDevice.Viewport.Width,
                Y = biasFactor / this.mGraphicsDevice.Viewport.Height,
            };


            this.mEffect.Parameters["Texture0"].SetValue(texture);
            this.mEffect.Parameters["TexelBias"].SetValue(texelBias);
            this.mEffect.Parameters["Bluriness"].SetValue(bluriness);
            this.mEffect.CurrentTechnique = this.mEffect.Techniques["Blur"];

            mEffect.CurrentTechnique.Passes[passName].Apply();
            this.mGraphicsDevice.DrawUserPrimitives <VertexPositionTexture>(PrimitiveType.TriangleStrip, KryptonRenderHelper.UnitQuad, 0, 2);
        }
        public void BlurTextureToTarget(Texture2D texture, LightMapSize mapSize, BlurTechnique blurTechnique, float bluriness)
        {
            // Get the pass to use
            string passName = "";

            switch (blurTechnique)
            {
                case (BlurTechnique.Horizontal):
                    this.mEffect.Parameters["BlurFactorU"].SetValue(1f / this.GraphicsDevice.PresentationParameters.BackBufferWidth);
                    passName = "HorizontalBlur";
                    break;

                case (BlurTechnique.Vertical):
                    this.mEffect.Parameters["BlurFactorV"].SetValue(1f / this.mGraphicsDevice.PresentationParameters.BackBufferHeight);
                    passName = "VerticalBlur";
                    break;
            }

            var biasFactor = KryptonRenderHelper.BiasFactorFromLightMapSize(mapSize);

            // Calculate the texel bias
            Vector2 texelBias = new Vector2()
            {
                X = biasFactor / this.mGraphicsDevice.Viewport.Width,
                Y = biasFactor / this.mGraphicsDevice.Viewport.Height,
            };


            this.mEffect.Parameters["Texture0"].SetValue(texture);
            this.mEffect.Parameters["TexelBias"].SetValue(texelBias);
            this.mEffect.Parameters["Bluriness"].SetValue(bluriness);
            this.mEffect.CurrentTechnique = this.mEffect.Techniques["Blur"];

            mEffect.CurrentTechnique.Passes[passName].Apply();
            this.mGraphicsDevice.DrawUserPrimitives<VertexPositionTexture>(PrimitiveType.TriangleStrip, KryptonRenderHelper.UnitQuad, 0, 2);
        }
Beispiel #7
0
        /// <summary>
        /// Render a screen aligned quad used to process the horizontal and vertical blur operations
        /// </summary>
        public void RenderScreenQuad(BlurTechnique technique, Texture2D texture, Vector4 color, float scale)
        {
            if (gd == null)
            {
                throw new ArgumentNullException("gd");
            }

            gd.SetVertexBuffer(vertexBuffer);

            blurEffect.CurrentTechnique = blurEffect.Techniques[(int)technique];

            Matrix m = Matrix.CreateTranslation(-sizeX / 2, -sizeY / 2, 0) *
                     Matrix.CreateScale(scale, scale, 1) *
                     Matrix.CreateTranslation(sizeX / 2, sizeY / 2, 0);

            paramWorldViewProjection.SetValue(m * viewProjection);
            paramPixelSize.SetValue(pixelSize);
            paramColorMap.SetValue(texture);
            paramColor.SetValue(color);

            blurEffect.CurrentTechnique.Passes[0].Apply();
            gd.DrawPrimitives(PrimitiveType.TriangleList, 0, 2);

            gd.SetVertexBuffer(null);
        }
Beispiel #8
0
        /// <summary>
        /// Render a screen aligned quad used to process the horizontal and vertical blur operations
        /// </summary>
        public void RenderScreenQuad(BlurTechnique technique, Texture2D texture, Vector4 color)
        {
            if (gd == null)
            {
                throw new ArgumentNullException("gd");
            }

            gd.SetVertexBuffer(vertexBuffer);

            blurEffect.CurrentTechnique = blurEffect.Techniques[(int)technique];

            paramWorldViewProjection.SetValue(viewProjection);
            paramPixelSize.SetValue(pixelSize);
            paramColorMap.SetValue(texture);
            paramColor.SetValue(color);

            blurEffect.CurrentTechnique.Passes[0].Apply();
            gd.DrawPrimitives(PrimitiveType.TriangleList, 0, 2);

            gd.SetVertexBuffer(null);
        }