public void ApplyPen(Pen pen, Vector2 position) { EffectParameterCollection parameters = IntensityPenEffect.Parameters; // Transform position coordinates into texture space position.X /= width; position.Y /= height; parameters["pos"].SetValue(position); parameters["radius"].SetValue(pen.Radius / Math.Max(width, height)); parameters["minPressure"].SetValue(pen.Min); parameters["maxPressure"].SetValue(pen.Max); // Pass 1: apply PenEffect to intensityTexture and render out to intensityTextureTemp GraphicsDevice.Textures[0] = intensityTexture; ShaderUtil.DrawFullscreenQuad(intensityTexture, intensityTextureTemp, BlendState.Opaque, IntensityPenEffect); // Pass 2: copy intensityTextureTemp to intensityTexture ShaderUtil.DrawFullscreenQuad(intensityTextureTemp, intensityTexture, BlendState.Opaque, null); // Reset the render target GraphicsDevice.SetRenderTarget(null); _dirty = true; }
private void RenderTextures() { // Pass 1: copy intensityTexture to intensityTextureCache ShaderUtil.DrawFullscreenQuad(intensityTexture, intensityTextureCache, BlendState.Opaque, null); // Pass 2: apply ColorMap to intensityTexture and render out to coloredTextureCache GraphicsDevice.Textures[0] = intensityTexture; GraphicsDevice.Textures[1] = colorMaps[colorMapIndex]; ShaderUtil.DrawFullscreenQuad(intensityTexture, coloredTextureCache, BlendState.AlphaBlend, ColorMapEffect); // Reset the render target GraphicsDevice.SetRenderTarget(null); _dirty = false; }