in src/elm_src/Algorithm/fractals.c [518:532]
vec3 generateNormal(vec3 z, float d)
{
float e = max(d * 0.5, MIN_NORM);
float dx1 = dE(z + vec3(e, 0, 0)).x;
float dx2 = dE(z - vec3(e, 0, 0)).x;
float dy1 = dE(z + vec3(0, e, 0)).x;
float dy2 = dE(z - vec3(0, e, 0)).x;
float dz1 = dE(z + vec3(0, 0, e)).x;
float dz2 = dE(z - vec3(0, 0, e)).x;
return normalize(vec3(dx1 - dx2, dy1 - dy2, dz1 - dz2));
}