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