Combine two signed distance fields with a chamfer-like join.
This technique was derived from a great talk at NVScene by Johann Korndörfer.
Given two distances d1
and d2
, merge them together
within the supplied radius
.
uniform float iGlobalTime;
#pragma glslify: combine = require('glsl-combine-chamfer')
#pragma glslify: box = require('glsl-sdf-box')
vec2 doModel(vec3 p) {
vec3 off = sin(0, iGlobalTime, 0);
float dist1 = box(p, vec3(2.0));
float dist2 = box(p + off, vec3(1.0));
float radius = 0.5;
float dist = combine(dist1, dist2, radius);
return vec2(dist, 1.0);
}
See stackgl/contributing for details.
MIT. See LICENSE.md for details.