I'm trying to learn about creating and using analytical derivatives of perlin noise to quickly generate normals. I've been experimenting with code from one of Catlike Coding's tutorials, and while I get the idea of assuming the 'up' axis is 1 and normalizing when sampling on a 2D plane I can't find any information about what to do when sampling on a 3D surface.
This is what I'm after (this uses central difference normals):
And this is what those normals look like in world space:
But the derivatives I'm getting look like this:
It seems like they might be relative to the surface of the undisplaced sphere, so would that mean I need to reorient them with the undisplaced sphere's normals? And how would I turn the derivatives into normals after doing that?