static public void DrawGlow(Bitmap Bitmap, DistanceEntry[,] _DistanceMap, float GlowDistance, ARGB_Rev GlowColor, Func<float, float> Function = null)
{
var TransparentColor = (ARGB_Rev)"#00000000";
if (Function == null) Function = (v) => v;
Bitmap.Shader((color, x, y) =>
{
var Dist = (float)_DistanceMap[x, y].Distance;
if (Dist == 0 && color.A == 0xFF) return color;
if (Dist > GlowDistance) return new ARGB_Rev(0, 0, 0, 0);
var GenColor = ARGB_Rev.Interpolate(GlowColor, TransparentColor, 1 - Function(Dist / GlowDistance));
return (Dist == 0) ? ARGB_Rev.Mix(color, GenColor) : GenColor;
});
}