public override BitmapBase Apply(RenderTask renderTask, BitmapBase layer) { Tank tank = renderTask.Tank; if (_blur == null || _blur.Radius != Radius) { lock (this) if (_blur == null || _blur.Radius != Radius) { _blur = new GaussianBlur(Radius); } } BitmapBase shadow = layer.ToBitmapRam(); var color = Color.GetColorWpf(tank); shadow.ReplaceColor(color); shadow.Blur(_blur, BlurEdgeMode.Transparent); shadow.ScaleOpacity(Spread, OpacityStyle.Additive); shadow.Transparentize(color.A); layer.DrawImage(shadow, below: true); return(layer); }