第 3 课:SDF Union
实现
uniform vec2 iResolution;
const vec3 shapeColor = vec3(1.0, 0.3, 0.3);
const vec3 backgroundColor = vec3(0.12);
float sdfCircle(vec2 center, float r, vec2 pos) {
return distance(center, pos) - r;
}
void main() {
vec2 uv = gl_FragCoord.xy;
vec2 center1 = iResolution * vec2(0.4, 0.5);
vec2 center2 = iResolution * vec2(0.6, 0.5);
float r1 = iResolution.y * 0.4;
float r2 = iResolution.y * 0.4;
float c1 = sdfCircle(center1, r1, uv);
float c2 = sdfCircle(center2, r2, uv);
vec3 color1 = vec3(0.38, 0.12, 0.93);
vec3 color2 = vec3(0.12);
float t = min(c1,c2);
t = clamp(t, 0.0, 1.0);
gl_FragColor = vec4(mix(shapeColor, backgroundColor, t), 1.0);
}