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.htm

What I like to do when i have very simple shapes is just calculate the depth via ray - plane intersections:


Formally known as Omega
Avatar randomness by Quadraxas & Blade
http://omegapuppeteer.mybrute.com