Last time I tried this kind of thing I found that interpolating the underlying isosurface to generate the normals using Interpolations.gradient
worked better than relying on the normals generated by GLNormalMesh
(which are based on the intermediate mesh).
For code, see the example I posted here:
(code available at Makie.jl based visualization of 3D 1/f noise · GitHub)