protected unsafe override void RenderLine(ISurface src, ISurface dest, Rectangle roi)
        {
            bac_adjustment.Render(src, dest, roi);
            blur_effect.Render(src, dest, roi);
            invert_effect.Render(dest, dest, roi);
            desaturate_op.Apply(dest, dest, roi);

            for (int y = roi.Top; y <= roi.Bottom; ++y)
            {
                var srcPtr = src.GetPointAddress(roi.X, y);
                var dstPtr = dest.GetPointAddress(roi.X, y);

                for (int x = roi.Left; x <= roi.Right; ++x)
                {
                    var srcGrey  = desaturate_op.Apply(*srcPtr);
                    var sketched = color_dodge_op.Apply(srcGrey, *dstPtr);
                    *   dstPtr   = sketched;

                    ++srcPtr;
                    ++dstPtr;
                }
            }
        }
 protected override void RenderLine(ISurface src, ISurface dest, Rectangle roi)
 {
     desat_op.Apply(src, dest, roi);
     level_op.Apply(dest, dest, roi);
 }