Простые metaball-ы :)
В этом эффекте цвет точки вычисляется относительно расстояния от точки до центра шарика:
dx = x - pos[0];
dy = y - pos[1];
dist = sqrt (dx * dx + dy * dy);
сolor = size / pow(dist, 2);
Реализация на GLSL
void main()
{
float sw = iResolution.x/2.0, sh = iResolution.y/2.0;
float mbsize[5];
mbsize[0]=100.;
mbsize[1]=200.;
mbsize[2]=300.;
mbsize[3]=400.;
mbsize[4]=500.;
float c=cos(iGlobalTime), s=sin(iGlobalTime);
vec2 mbpos[5];
vec2 pos = gl_FragCoord.xy;
mbpos[0] = vec2(c * 100. + sw, -s * 100. + sh);
mbpos[1] = vec2(-c * 40. + sw, s * 100. + sh);
mbpos[2] = vec2(c * 100. + sw, s * 40. + sh);
mbpos[3] = vec2(-c * 110. + sw, -sin(iGlobalTime * 0.25) * 110. + sh);
mbpos[4] = vec2(-cos(iGlobalTime * 0.33) * 300. + 350., sin(iGlobalTime * 1.5) * 150. + sh);
float dist = 0.0;
for(int i=0; i<5; i++)
dist += mbsize[i]/pow(distance(pos.xy, mbpos[i]),2.0);
gl_FragColor = vec4(1.0-dist,dist,1.0-dist,1.0);
}