I'm trying to implement a post-processing pass to detect silhouette-edges from depth data. (by silhouette-edge of a triangles mesh I mean the triangle edges shared by a front and a back-facing triangle relative to the view direction, see image below).
From the little research I've done, most of the methods used in games and 3d applications are based on finding the gradient of the eye Z coordinate in image space and then processing the values trying to isolate the silhouette-edges.
Since I'm working for a CAD project, silhouettes need to be as precise as possible, while it looks to me that, with the methods mentioned above, the more accurate/sensitive your filter, the more artifacts are introduced (i.e. entire surfaces detected as edges when you look edge-on on something that extends far along the Z).
Besides, one should carefully choose weights and tolerances for those algorithms.
What are some good examples of silhouette detection in post-processing in commercial products/game?
Specifically, I'd like to find something to compare my experiments against, and also to see the limitations of post-processing edge detection in a state-of-the-art application.
Are there other algorithms for post-processing edge detection as alternatives to Sobel/Roberts cross/...?