Is there a canonical way to compute the limit surface normal using your API? I've seen in one of your examples N = normalize( cross( dPu, dPv) );, but this is numerically unstable at rounded corners, since dPu and dPv become parallel. I would imagine there are other places it struggles as well, e.g. examples from #947. I was a little surprised your evaluate API doesn't return a surface normal, so I'm hoping you have some guidance for a reliable solution?