Shallow penetration should be very accurate when using Bullet's GJK, and the deep penetration is an approximation, which should be good enough in rigid body simulation for games/animation. I would not call this unreliable, this is just an approximation for deep penetrations.
Look, I think you know what I mean. It is a very easy and very -clearly- defined problem:
- I have two overlapping convexes
- I want to compute the *exact* (= accurate) penetration depth between them (i.e. the same as what the reference code gives me, in my repro)
I am not asking for a shallow GJK solution (it is *not* accurate because the returned *distance* vector is *not* the same as the real penetration depth). I am not asking for an approximation either.
I am asking for the real answer. I thought Bullet would help thanks to its 2 different penetration depth solvers (Solid & EPA). Both appear to fail. Both *are* unreliable. That's all I'm saying. Could you agree with this, instead of trying to convert me to the hybrid approach ?

I am not saying the hybrid approach doesn't work. It does.
I don't see the issue here, please explain why you cannot use this? The concept of hybrid penetration depth is reliable and widely used and many shipped games rely on this concept.
I know the concept works, we've been discussing this enough in the past.
The issue is that is it easy to replace a penetration depth module in an already existing engine. It is a lot more difficult to replace the whole contact generation machinery, introducing persistent manifolds, etc, etc.
As you know, since you saw the code, the current contact generation works in two passes:
1) compute the penetration distance
2) find two best contact polygons "closest" to this, and do some clipping
This works, but it's very fragile. In particular, 1) absolutely needs the exact penetration depth, else Bad Things happen. If I replace the current first part with Bullet's version (either Solid or the EPA contribution), things just explode. Hence, "unreliable".
I think we will be moving in the "hybrid" direction in the future, so I *know* it works, you don't need to convince me. All I'm trying to do, meanwhile, is to improve/optimize the current system. And for this, I need a real penetration depth - unless you also have a replacement for 2), something that would work with an approximate PD!
It would be nice to improve the deep penetrations depth (improving the Extras/EPA implementation). If you spot some bug in the implementation (shallow and/or deep) I am happy to look into it and fix it.
I'm afraid I will not have time to really look at the details...
Thanks for your answers anyway.
- Pierre