metaball.frag
622 Bytes
// Fragment shader code for metaball
precision mediump float;
varying vec2 vTexCoord;
uniform vec2 uPositionMetaball;
uniform vec2 uPositionVar;
uniform vec2 uGravityVector;
uniform float uRadius;
uniform float uRadiusVar;
void main()
{
vec2 adjustedCoords = vTexCoord * 2.0 - 1.0;
vec2 finalMetaballPosition = uPositionMetaball + uGravityVector + uPositionVar;
float finalRadius = uRadius + uRadiusVar;
vec2 distanceVec = adjustedCoords - finalMetaballPosition;
float result = dot(distanceVec, distanceVec);
float color = inversesqrt(result) * finalRadius;
gl_FragColor = vec4(color,color,color,1.0);
}