private void DrawTexture(RenderTarget2D tex, RenderTarget2D rt) { _graphicsDevice.SetRenderTarget(rt); ScreenTexture = tex; _texPass.Apply(); _quadRenderer.RenderQuad(_graphicsDevice, -Vector2.One, Vector2.One); }
public RenderTarget2D DrawGaussianBlur(RenderTarget2D renderTargetOutput) { //select rendertarget RenderTarget2D renderTargetBlur = null; if (renderTargetOutput.Format != SurfaceFormat.Vector2) { throw new NotImplementedException("Unsupported Format for blurring"); } //Only square expected int size = renderTargetOutput.Width; switch (size) { case 256: renderTargetBlur = _rt2562; break; case 512: renderTargetBlur = _rt5122; break; case 1024: renderTargetBlur = _rt10242; break; case 2048: renderTargetBlur = _rt20482; break; } if (renderTargetBlur == null) { throw new NotImplementedException("Unsupported Size for blurring"); } _graphicsDevice.SetRenderTarget(renderTargetBlur); Vector2 invRes = new Vector2(1.0f / size, 1.0f / size); Shaders.GaussianBlurEffectParameter_InverseResolution.SetValue(invRes); Shaders.GaussianBlurEffectParameter_TargetMap.SetValue(renderTargetOutput); _horizontalPass.Apply(); _quadRenderer.RenderQuad(_graphicsDevice, Vector2.One * -1, Vector2.One); _graphicsDevice.SetRenderTarget(renderTargetOutput); Shaders.GaussianBlurEffectParameter_TargetMap.SetValue(renderTargetBlur); _verticalPass.Apply(); _quadRenderer.RenderQuad(_graphicsDevice, Vector2.One * -1, Vector2.One); return(renderTargetOutput); }
public void DrawPass(Texture2D tex, RenderTarget2D target, EffectPass pass) { _graphicsDevice.SetRenderTarget(target); ScreenTexture = tex; pass.Apply(); _quadRenderer.RenderQuad(_graphicsDevice, -Vector2.One, Vector2.One); }
private void FixSeams() { if (!GameSettings.g_FixSeams) { return; } _graphicsDevice.SetRenderTarget(_textureBufferSeamFix); Shaders.SeamFixEffect.CurrentTechnique.Passes[0].Apply(); _quadRenderer.RenderQuad(_graphicsDevice, -Vector2.One, Vector2.One); }
public void Draw(GameTime gameTime) { if (startFlag) { //Capture the last screen! _screenManager.Draw(gameTime, _capturedRenderTarget2D, _capturedScreen); startFlag = false; } //Draw the transition if (Timer <= MaxTimer && Timer >= 0) { _graphics.SetRenderTarget(null); _graphics.BlendState = BlendState.NonPremultiplied; TransitionShader(); _quadRenderer.RenderQuad(_graphics, -Vector2.One, Vector2.One); } }
public void DrawAmbientOcclusion() { _ssaoPass.Apply(); _quadRenderer.RenderQuad(_graphicsDevice, -Vector2.One, Vector2.One); }
public void Draw(Texture2D tex, Texture2D shape, RenderTarget2D rt, float brightness, float bokehSize, int downsize, bool fullPrecision, bool dynamicDownsize) { InitializeParameters(); if (!_effectLoaded) { return; } if (dynamicDownsize) { int amount = Math.Min((int)(bokehSize / 5), 2); int sizeamount = 1 << amount; bokehSize /= sizeamount; downsize = downsize << amount; } //Create Quads if (Math.Abs(bokehSize - _bokehSize) > 0.01f || downsize != _downsize) { _bokehSize = bokehSize; if (_downsize != downsize) { _downsize = downsize; _downsizeChanged = true; _fullPrecision = fullPrecision; CreateRT(downsize, fullPrecision); } CreateQuads(_bokehSize, downsize); } if (_fullPrecision != fullPrecision) { _fullPrecision = fullPrecision; CreateRT(downsize, fullPrecision); } ScreenTexture = tex; ShapeTexture = shape; Brightness = brightness; _graphicsDevice.SetRenderTarget(_renderTarget0); //1280 800 _defaultPass.Apply(); _graphicsDevice.RasterizerState = RasterizerState.CullNone; _graphicsDevice.BlendState = BlendState.Additive; _graphicsDevice.SetVertexBuffer(_vertexBuffer); _graphicsDevice.Indices = _indexBuffer; _graphicsDevice.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, PrimitiveCount); //Draw to RT _graphicsDevice.SetRenderTarget(rt); _graphicsDevice.Clear(Color.Black); ScreenTexture = _renderTarget0; _texPass.Apply(); _quadRenderer.RenderQuad(_graphicsDevice, -Vector2.One, Vector2.One); }