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 distancevar 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));}