Your method of trying to calculate the distance between the objects is extremely inefficient for this type of rendering especially in 2D.
Create a grayscale image containing intensity values which are based on precalculated distances from the center of the object. If I remember correctly you want to use something like distance squared to get a nice gradual falloff. Then all you have to do is draw the image with an `addition` mode ie additive blend. The images overlapping will automatically create a shared field of intensity values and then it is simply a matter of only drawing the pixels which are above a given threshold. There's no point recalculating the blob field and distance values if the size of the blob object itself does not change, and even if it does change you can use scaling or precalculated images at each size.
Create a grayscale image containing intensity values which are based on precalculated distances from the center of the object. If I remember correctly you want to use something like distance squared to get a nice gradual falloff. Then all you have to do is draw the image with an `addition` mode ie additive blend. The images overlapping will automatically create a shared field of intensity values and then it is simply a matter of only drawing the pixels which are above a given threshold. There's no point recalculating the blob field and distance values if the size of the blob object itself does not change, and even if it does change you can use scaling or precalculated images at each size.