1 varying float pointSize; 2 3 void 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 }