效果图

代码及算法解释
// 动画相关参数
float dotSize = 0.01;
float iteration = 100.;
float xAmp = 0.3;
float yAmp = 0.1;
float speed = 0.05;
float rotateCanvas = 0.;
float rotateParticles = 1.;
float rotateMultiplier = 10.;
vec2 pos = vec2(.5, .5);
float xFactor = 0.2;
float yFactor = 0.2;
#define RENDERSIZE vec2(512., 512.)
// uniform float iGlobalTime;
// 关于 (0, 0) 点的旋转
vec2 rot(vec2 uv, float a)
{
// [uv.x uv.y] * [cos(a), sin(a),
// -sin(a), cos(a)]
return vec2(uv.x * cos(a) - uv.y * sin(a), uv.y * cos(a) + uv.x * sin(a));
}
float circle(vec2 uv, float size)
{
// 向量长度