I came up with two pretty good ideas, but haven’t tested them.
“Masking” A grid / matrice covering the projection surface holds information about how far away from the camera the closest “face” occupying a cell in the grid is (range 0-9 or 00 - 99). Every framme, all faces check if the cell they are in contain a face clowner to the camera than themselves. In that case, the face is not drawn. This would be simplified (and perhaps look better) if combined with a maximum render distance.
Pros: No upper face limit, works with HS objects too
Cons: Would lag behind one frame (at least how I imagine implementing it), faces cannot be partly covered
A limited amount of “face drawing units” (groups of clones) are created sequentially, with regard to clone order. The information about each face is stored in separate objects/clones (which do not render them), and depending on the Z order of these faces they will assign the rendering to the corresponding “face drawing unit”.
Pros: Looks good
Cons: Only works with trails (since objects are always drawn on top), limited amount of faces being shown at the same time