in src/Algorithm/fractals.c [335:375]
vec3 Mandelbox(vec3 w)
{
w *= objectRotation;
float md = 1000.0;
vec3 c = w;
// distance estimate
vec4 p = vec4(w.xyz, 1.0),
p0 = vec4(w.xyz, 1.0); // p.w is knighty's DEfactor
for (int i = 0; i < int(maxIterations); i++) {
// box fold:
// if (p > 1.0) {
// p = 2.0 - p;
// } else if (p < -1.0) {
// p = -2.0 - p;
// }
p.xyz = clamp(p.xyz, -boxFold, boxFold) * 2.0 * boxFold - p.xyz; // box fold
p.xyz *= fractalRotation1;
// sphere fold:
// if (d < minRad2) {
// p /= minRad2;
// } else if (d < 1.0) {
// p /= d;
// }
float d = dot(p.xyz, p.xyz);
p.xyzw *= clamp(max(fR2 / d, mR2), 0.0, 1.0); // sphere fold
p.xyzw = p * scaleFactor.xxxy + p0 + vec4(offset, 0.0);
p.xyz *= fractalRotation2;
if (i < colorIterations) {
md = min(md, d);
c = p.xyz;
}
}
// Return distance estimate, min distance, fractional iteration count
return vec3((length(p.xyz) - fudgeFactor) / p.w, md, 0.33 * log(dot(c, c)) + 1.0);
}