It depends much on what you are actually trying to do.
If you want the accumulated depth of the overlapping objects you could render only those objects in another rendertarget clock wise with inverse depth.
Another option might be distance function based raymarching in the pixelshader of the objects, but you would have to figure out the distance functions of your objects then.
http://www.iquilezles.org/www/articles/distfunctions/distfunctions.htmWhat I like to do when i have very simple shapes is just calculate the depth via ray - plane intersections: