17 lines
467 B
GLSL
17 lines
467 B
GLSL
uniform sampler2D tex0; // signed distance
|
|
uniform sampler2D tex1; // signed distance
|
|
uniform float radius;
|
|
|
|
in vec2 v_texCoord0;
|
|
out vec4 o_color;
|
|
|
|
float opSmoothUnion(float d1, float d2, float k) {
|
|
float h = clamp(0.5 + 0.5*(d2-d1)/k, 0.0, 1.0);
|
|
return mix(d2, d1, h) - k*h*(1.0-h);
|
|
}
|
|
|
|
void main() {
|
|
float d0 = texture(tex0, v_texCoord0).r;
|
|
float d1 = texture(tex1, v_texCoord0).r;
|
|
o_color = vec4(opSmoothUnion(d0, d1, radius), 0.0, 0.0, 1.0);
|
|
} |