I implemented the tiger, sphone, and duospindle here (specifically at 7:03):
The Duo-spindle was really cool. I didn't have to round the manifold to get a good result which was surprising, and it had some interesting features.
It got cut off in the video, but here's the projection function I used for the duospindle in the video:
Proj::proj(vector: vec4) -> vec4 {
let xy: vec4 = vec4(vector.x, vector.y, 0, 0);
let xy_len: f32 = length(xy);
let zw: vec4 = vec4(0, 0, vector.z, vector.w);
let zw_len: f32 = length(zw);
let d: f32 = clamp(xy_len - zw_len, -r, r);
let xy_component: vec4 = select(
normalize(xy),
vec4(0, 0, 0, 0),
xy_len == 0
) * (r + d);
let zw_component: vec4 = select(
normalize(zw),
vec4(0, 0, 0, 0),
zw_len == 0
) * (r - d);
(xy_component + zw_component) / 2
}The rest of the basic shape code is at 14:31
I'll try some of the other manifolds soon, the pinched duo-cylinder looks interesting.