erichocean wrote:You might want to check out this paper: http://graphics.pixar.com/library/RayDi ... /paper.pdf
Indeed, that paper was actually the original inspiration for Psychopath.

But that was over three years ago. Psychopath has since diverged significantly from that paper, and I think the only aspect that remains is that it uses ray differentials to calculate how fine geometry needs to be. Over time I found too many shortcomings with the approach in that paper. Specifically:
1. When you rely entirely on a cache for sharing generated geometry among rays, you get a hard performance cliff when the cache starts thrashing due to e.g. too much geometry or highly incoherent scene access. The paper even mentions a case that is problematic for that, e.g. a disco ball.
2. When you access a single shared cache for every ray hit, that becomes an enormous bottleneck for multi-threaded rendering.
3. The results of surface splitting need to be stored in the scene tree itself for later rays to access (otherwise splitting becomes a bottleneck if you do it independently for every ray), which both creates multi-threading bottlenecks while the tree is modified and means that scene data can, at least in theory, grow to be arbitrarily large during rendering.
It's still a great paper, mind you. And as I said, was my primary inspiration originally. But in the end it has too many shortcomings in practice, especially related to multi-threaded rendering.