1varying float pointSize;
2
3void main() {
4    float dist = ATTRIB_position.y / 4.0;
5    float angle = ATTRIB_position.x;
6
7    float x = dist * sin(angle) * 0.8;
8    float y = dist * cos(angle) * 0.8;
9    float p = dist * 7.5;
10    float s = cos(p);
11    float t = sin(p);
12    vec4 pos;
13    pos.x = t*x + s*y;
14    pos.y = s*x - t*y;
15    pos.z = ATTRIB_position.z;
16    pos.w = 1.0;
17    pos.y = pos.y * 0.5;
18    gl_Position = UNI_MVP * pos;
19    pointSize = 170.0-(pos.y*pos.y*1.2*1.2 + pos.x*pos.x)*400.0;
20    if (pointSize<=30.0) {
21        pointSize = 30.0;
22    }
23    gl_PointSize = pointSize;
24}