Silhouette edge detection alternatives to Sobel

I’m trying to implement a silhouette detection algorithm in post-processing. I’ve come across solutions based on Sobel/Roberts cross/… filters and I were wondering if there were more accurate techniques to perform the task.

With silhouette edge I mean those edges that are at the boundary between a front-facing and a back-facing triangle of a polygonal mesh with respect to the view direction.

I am assuming Sobel-based solutions (or similar) are not enough to consistently detect silhouettes since they detect depth discontinuities (that are often coincident with what we consider silhouettes) instead of explicitly looking for silhouette edges.
Is it true or a simple filter tweaked for this purpose could perform just fine?
(I tried, but maybe the problem was not the algorithm itself but the various thresholds/factors I set).

Is there any other documented post-processing technique for silhouette detection?