Great work!
I put the +1 back in the running derivative like this...
vec4 c=p;//p.w==1
and it helped quite a bit with the DE.
You nailed it eiffie!
Actually, you only need that in mandelbrot mode where it is necessary to obtain well behaved DE.
Keep in mind that, just like the mandelbox and it's julias, it's usually necessary to scale down the DE in order to avoid overstepping.
For speed (and sanity) you may want to change the scaling to...
vec4 scale=vec4(scale...,abs(scale));//remove the /MinRad2
then..
p*=scale/clamp(r2,MinRad2,1.0);//I believe this works out to be the same - check it
Nice trick, thanks a lot!
.