i = ZERO; i < _IFS_Iteration; i++) { p = abs(p + _IFS_Offset.xyz) - _IFS_Offset.xyz; rot(p.xz, TAU * _IFS_Rot.x); rot(p.zy, TAU * _IFS_Rot.y); rot(p.xy, TAU * _IFS_Rot.z + 0.05 * sin(beatTau / 4. * gBossWingSpeed)); p *= _IFS_Scale; s *= _IFS_Scale; d1 = opSmoothUnion(d1, sdBox(p, vec3(0.5, 2, 0.5)) / s - 0.3, 1.); d2 = opSmoothUnion(d2, sdBox(p, vec3(0.55, 2.1, 0.1)) / s - 0.3, 1.); if (i <= 0) d3 = min(d3, (length(p - _EyeOffset.xyz) - _EyeOffset.w) / s); } smooth min https://iquilezles.org/articles/smin/