If you shift by pi/2 s and t before the sin(), you obtain a set where the empty slots are filled in by new "cactuses"
Can it be done in automatic please?
Mandelbulb3Dv17{
P.....S....O/...w....2...............1.......s1E................................
........................................kz1........A./..................y.2.....
................/ME//....6Eo....U.....E2.....omEQgisq6rD/..........c./...w1....U
z.....kD32../..........wz..................................2.....y1...sD...../..
.w1...sDYsAIxzzzjz1..........WAbUdisqcljRRxgCKosEwnYRydIKa5uzwPN9SaPRGyDFHQlSHA1
Iw1iNMIOip7tzqF/G0ZZtVyD......YP..............kD.2....sD..kz....................
.............................UTRU4.Yq/O.cQ5c/.wRU4.Ks/O.kX5c/UMSU4..............
.....................wzzz1.U..6.P....M4...EB....W....61....F....8/...I1....UJl32
...U.iVFwxDE./ozPM2Tzz7lz16.mc..zXCc.El18XGQeGyDjvIRhrVAkz1............28.kFrA0.
FWb96aAIVzvh1se7Umvxz0........../6U0.wzzz1................................E.0c..
zzzz.................................2U.8.kzzzD.................................
/6U0.wzzz1...................................2CcN/UvNP6.eeWCNq0.yRii.EJJUk1f..XR
S1.mx3CcN/UvNP6.QsLsUa3.ibhV..bTV1OK.sSq40.ly3CcN/UvNP6.MwLsUa3.ibhV.kqTV1OK.sSq
40.kz3CcN/UvNP6...EsUa3.eeWCNq0.IJ36wk8.wyLsUa3.................................
E6...6....E.....I....c....UIdJKPVtaPm.kPrJaQ.........................MU/4.......
...................................................wz..........kTIsuFVf5tzn53iSI
suFyz.........zD................................................................
.....................2.....3....8....6JOZpKMitaA................................
4MU/..........................................................zD..........A.....
........................kz1.....................................................
................................}
my "optimized" version of your formula with the "goodies"...
(rotate xyz)
r=scale/sqrt(z*z+y*y+x*x);
x=x*r;z=z*r;y=y*r;r=fabs(r);
s = z/(1-x);
t = y/(1-x);
w=1+s*s+t*t;
s=fabs(sin(pi*s+ssh));
t=fabs(sin(pi*t+tsh));
r=-0.25+pow(r,rp*w);w=2/(1+s*s+t*t);
// It pretends rp=-2 and not +2, why? I've found the answer, since I use 1/r instead of r // originally; w=1+s*s+t*t;z=r*2*s/w;y=r*2*t/w;
// x=r*(-1+s*s+t*t)/w=r*(1-2/w); optimized & subst...
x=r*(1-w);
y=r*t*w;z=r*s*w;
x+=xsh;y+=ysh;z+=zsh;
norm = z*z+y*y+x*x;