in src/elm_src/Algorithm/fractals.c [215:244]
vec3 OctahedralIFS(vec3 w)
{
w *= objectRotation;
float d, t;
float md = 1000.0, cd = 0.0;
for (int i = 0; i < int(maxIterations); i++) {
w *= fractalRotation1;
w = abs(w + shift) - shift;
// Octahedral
if (w.x < w.y) w.xy = w.yx;
if (w.x < w.z) w.xz = w.zx;
if (w.y < w.z) w.yz = w.zy;
w *= fractalRotation2;
w *= scale;
w -= scale_offset;
// Record minimum orbit for colouring
d = dot(w, w);
if (i < colorIterations) {
md = min(md, d);
cd = d;
}
}
return vec3((length(w) - 2.0) * pow(scale, -float(maxIterations)), md, cd);
}