public override void Draw(DoubleBufferCanvas buffer)
 {
     m_shader.Send("opacity", Mathf.Max(Opacity, 0));
     m_shader.Send("size", Mathf.Max(Size, 0));
     m_shader.Send("noise", Mathf.Random(), Mathf.Random());
     buffer.Swap(m_shader);
 }
 public override void Draw(DoubleBufferCanvas buffer)
 {
     m_shader.Send("distortionFactor", DistortionFactor.X, DistortionFactor.Y);
     m_shader.Send("feather", Feather);
     m_shader.Send("scaleFactor", ScaleFactor);
     buffer.Swap(m_shader);
 }
            public override void Draw(DoubleBufferCanvas buffer)
            {
                m_shader.Send("direction", 1f / Graphics.GetWidth(), 0f);
                buffer.Swap(m_shader);

                m_shader.Send("direction", 0f, 1f / Graphics.GetHeight());
                buffer.Swap(m_shader);
            }
 public override void Draw(DoubleBufferCanvas buffer)
 {
     m_shader.Send("radius", Math.Max(0, Radius));
     m_shader.Send("softness", Math.Max(0, Softness));
     m_shader.Send("opacity", Math.Max(0, Opacity));
     m_shader.Send("color", Color.X, Color.Y, Color.Z, 1);
     buffer.Swap(m_shader);
 }
            public override void Draw(DoubleBufferCanvas buffer)
            {
                var dx = Mathf.Cos(Angle) * Radius / Graphics.GetWidth();
                var dy = Mathf.Sin(Angle) * Radius / Graphics.GetHeight();

                m_shader.Send("direction", dx, dy);
                buffer.Swap(m_shader);
            }
 public override void Draw(DoubleBufferCanvas buffer)
 {
     m_shader.Send("width", m_width);
     m_shader.Send("phase", Phase);
     m_shader.Send("thickness", Thickness);
     m_shader.Send("opacity", Opacity);
     m_shader.Send("color", Color);
     buffer.Swap(m_shader);
 }
            public override void Draw(DoubleBufferCanvas buffer)
            {
                m_shader.Send("direction", 1f / Graphics.GetWidth(), 0);
                m_shader.Send("radius", Mathf.Floor(Radius.X + .5f));
                buffer.Swap(m_shader);

                m_shader.Send("direction", 0, 1f / Graphics.GetHeight());
                m_shader.Send("radius", Mathf.Floor(Radius.Y + .5f));
                buffer.Swap(m_shader);
            }
            public override void Draw(DoubleBufferCanvas buffer)
            {
                m_shader.Send("exposure", Mathf.Clamp01(Exposure));
                m_shader.Send("decay", Mathf.Clamp01(Decay));
                m_shader.Send("density", Mathf.Clamp01(Density));
                m_shader.Send("weight", Mathf.Clamp01(Weight));
                m_shader.Send("light_position", LightPosition);
                m_shader.Send("samples", Mathf.Max(Samples, 1f));

                buffer.Swap(m_shader);
            }
            public override void Draw(DoubleBufferCanvas buffer)
            {
                UpdateSceneCanvas();

                buffer.Swap();
                var front = buffer.Front;
                var scene = buffer.Back;
                var back  = m_scene;

                // 1st pass: draw scene with brightness threshold
                Graphics.SetCanvas(front);
                Graphics.Clear();
                Graphics.SetShader(m_shaderThreshold);
                Graphics.Draw(scene);

                //  2nd pass: apply blur shader in x
                m_shaderBlur.Send("direction", 1f / Graphics.GetWidth(), 0f);
                Graphics.SetCanvas(back);
                Graphics.Clear();
                Graphics.SetShader(m_shaderBlur);
                Graphics.Draw(front);

                // 3nd pass: apply blur shader in y and draw original and blurred scene
                Graphics.SetCanvas(front);
                Graphics.Clear();

                // original scene without blur shader
                Graphics.SetShader();
                Graphics.SetBlendMode(BlendMode.Add, BlendAlphaMode.PreMultiplied);
                Graphics.Draw(scene); // original scene

                // second pass of light blurring
                m_shaderBlur.Send("direction", 0f, 1f / Graphics.GetHeight());
                Graphics.SetShader(m_shaderBlur);
                Graphics.Draw(back);

                // restore things as they were before entering draw()
                Graphics.SetBlendMode(BlendMode.Alpha, BlendAlphaMode.PreMultiplied);
                m_scene = back;
            }
 public override void Draw(DoubleBufferCanvas buffer)
 {
     m_shader.Send("feedback", Mathf.Clamp01(Feedback));
     m_shader.Send("size", Size);
     buffer.Swap(m_shader);
 }
 public override void Draw(DoubleBufferCanvas buffer)
 {
     m_shader.Send("palette", Palette.ColorA, Palette.ColorB, Palette.ColorC, Palette.ColorD);
     buffer.Swap(m_shader);
 }
 public override void Draw(DoubleBufferCanvas buffer)
 {
     m_shader.Send("tint", Tint.X, Tint.Y, Tint.Z, 1);
     m_shader.Send("strength", Strength);
     buffer.Swap(m_shader);
 }
 public override void Draw(DoubleBufferCanvas buffer)
 {
     m_shader.Send("factors", Factors);
     buffer.Swap(m_shader);
 }
 public abstract void Draw(DoubleBufferCanvas buffer);
 public override void Draw(DoubleBufferCanvas buffer)
 {
     m_shader.Send("amp", Math.Max(Amp, 0f));
     m_shader.Send("center", Center);
     buffer.Swap(m_shader);
 }
 public override void Draw(DoubleBufferCanvas buffer)
 {
     m_shader.Send("num_bands", Math.Max(NumBands, 1f));
     buffer.Swap(m_shader);
 }