Parameters
| Name | Type | Description |
|---|---|---|
| position | vec3<f32> | 3D position to evaluate. |
| size | f32 | Size of the octahedron. |
Returns
WGSL Code
fn sdfOctahedron(position: vec3<f32>, size: f32) -> f32 { let p = abs(position); let m = p.x + p.y + p.z - size; // Calculate the distance var q: vec3<f32>; if (3.0 * p.x < m) { q = p; } else if (3.0 * p.y < m) { q = vec3<f32>(p.x, p.z, p.y); } else if (3.0 * p.z < m) { q = vec3<f32>(p.x, p.y, p.z); } else { q = p; } let k = clamp(0.5 * (q.z - q.y + size), 0.0, size); return length(vec3<f32>(q.x, q.y - size + k, q.z - k)); }