MILKDROP_PRESET_VERSION=201
PSVERSION=2
PSVERSION_WARP=2
PSVERSION_COMP=2
[preset00]
fRating=1.000000
fGammaAdj=1.000
fDecay=0.980
fVideoEchoZoom=2.000
fVideoEchoAlpha=0.000
nVideoEchoOrientation=0
nWaveMode=0
bAdditiveWaves=0
bWaveDots=0
bWaveThick=1
bModWaveAlphaByVolume=0
bMaximizeWaveColor=1
bTexWrap=0
bDarkenCenter=0
bRedBlueStereo=0
bBrighten=0
bDarken=0
bSolarize=0
bInvert=0
fWaveAlpha=0.004
fWaveScale=0.037
fWaveSmoothing=0.000
fWaveParam=-0.440
fModWaveAlphaStart=1.000
fModWaveAlphaEnd=1.000
fWarpAnimSpeed=0.803
fWarpScale=1.220
fZoomExponent=1.50374
fShader=0.000
zoom=1.00000
rot=0.00000
cx=0.500
cy=0.500
dx=0.00000
dy=0.00000
warp=0.31218
sx=1.00000
sy=1.00000
wave_r=1.000
wave_g=1.000
wave_b=1.000
wave_x=0.500
wave_y=0.040
ob_size=0.005
ob_r=0.000
ob_g=0.000
ob_b=0.000
ob_a=1.000
ib_size=0.000
ib_r=1.000
ib_g=0.000
ib_b=0.750
ib_a=1.000
nMotionVectorsX=64.000
nMotionVectorsY=48.000
mv_dx=0.000
mv_dy=0.000
mv_l=0.000
mv_r=1.000
mv_g=1.000
mv_b=0.000
mv_a=0.000
b1n=0.000
b2n=0.000
b3n=0.000
b1x=1.000
b2x=1.000
b3x=1.000
b1ed=0.000
wavecode_0_enabled=0
wavecode_0_samples=512
wavecode_0_sep=0
wavecode_0_bSpectrum=0
wavecode_0_bUseDots=1
wavecode_0_bDrawThick=0
wavecode_0_bAdditive=0
wavecode_0_scaling=2.44415
wavecode_0_smoothing=0.00000
wavecode_0_r=1.000
wavecode_0_g=1.000
wavecode_0_b=1.000
wavecode_0_a=0.000
wave_0_init1=t2 = 0;
wave_0_init2=t3 = 0;
wave_0_init3=t4 = 0;
wave_0_init4=cl = 0;
wave_0_per_frame1=t1 = 0;
wave_0_per_frame2=v = 0.01;
wave_0_per_frame3=j = j + (bass)*0.01;
wave_0_per_frame4=j2 = j2 + (mid_att)*0.01;
wave_0_per_frame5=j3 = j3 + (treb_att)*0.01;
wave_0_per_frame6=t2 = j;
wave_0_per_frame7=t3 = j2;
wave_0_per_frame8=t4 = j3;
wave_0_per_frame9=//t5 = 0;
wave_0_per_frame10=k = k*0.99 + 10*mid/fps;
wave_0_per_frame11=t5 = -k;
wave_0_per_frame12=
wave_0_per_frame13=cl1 = cl1 + 0.002;
wave_0_per_frame14=cl1 = if(above(cl1,1),0,cl1);
wave_0_per_frame15=cl1 = if(below(cl1,0),1,cl1);
wave_0_per_frame16=t8 = cl1;
wave_0_per_frame17=
wave_0_per_frame18=cl2 = cl2 -1*q1;
wave_0_per_frame19=cl2 = if(above(cl2,1),0,cl2);
wave_0_per_frame20=cl2 = if(below(cl2,0),1,cl2);
wave_0_per_frame21=t7 = cl2;
wave_0_per_frame22=
wave_0_per_frame23=cl3 = cl3 +0.001;
wave_0_per_frame24=cl3 = if(above(cl3,1),0,cl3);
wave_0_per_frame25=cl3 = if(below(cl3,0),1,cl3);
wave_0_per_frame26=t6 = cl3;
wave_0_per_point1=xx = ((sample*0983624912364)%10000000+100)/10000000;
wave_0_per_point2=yy = ((xx*1896575575)%10000000+100)/10000000;
wave_0_per_point3=zz = ((yy*58652340875)%10000000+100)/10000000;
wave_0_per_point4=
wave_0_per_point5=
wave_0_per_point6=d = sqrt(sqr(xx)+sqr(yy)+sqr(zz));
wave_0_per_point7=
wave_0_per_point8=zz = zz + t8 - if(above(zz+t8,1),1,0) - 0.5;
wave_0_per_point9=xx = xx + t7 - if(above(xx+t7,1),1,0) - 0.5;
wave_0_per_point10=yy = yy + t6 - if(above(yy+t6,1),1,0) - 0.5;
wave_0_per_point11=
wave_0_per_point12=v = 0.001;
wave_0_per_point13=
wave_0_per_point14=w = 1;// (sample*sin(time*0.3)*0.01-1);
wave_0_per_point15=bb = d*d*0.5;
wave_0_per_point16=n= 0.3;
wave_0_per_point17=s1 = sin(sin(t2*w+bb)*n);
wave_0_per_point18=s2 = sin(sin(t3*w+bb)*n);
wave_0_per_point19=s3 = sin(sin(t4*w+bb)*n);
wave_0_per_point20=c1 = cos(sin(t2*w+bb)*n);
wave_0_per_point21=c2 = cos(sin(t3*w+bb)*n);
wave_0_per_point22=c3 = cos(sin(t4*w+bb)*n);
wave_0_per_point23=
wave_0_per_point24=z = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;
wave_0_per_point25=x1 = (c1*c2*xx + c1*s2*yy - s1*zz);
wave_0_per_point26=y1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);
wave_0_per_point27=
wave_0_per_point28=zoom = .5*(1/(z+0.5));
wave_0_per_point29=x = 0.5 + zoom*x1 + sin(time*0.1)*0.;;
wave_0_per_point30=y = 0.5 + zoom*y1 + cos(time*0.16801)*0.;
wave_0_per_point31=
wave_0_per_point32=pi3 = 3.1415*2*0.3333;
wave_0_per_point33=t = z*2+t2*1;
wave_0_per_point34=c=3;
wave_0_per_point35=//r = sin(t)*c;
wave_0_per_point36=
wave_0_per_point37=//g = sin(t+pi3)*c;
wave_0_per_point38=
wave_0_per_point39=//b = sin(t-pi3)*c;
wave_0_per_point40=
wave_0_per_point41=
wave_0_per_point42=r = if(above(r,1),1,r);
wave_0_per_point43=r = if(below(r,0),0,r);
wave_0_per_point44=g = if(above(g,1),1,g);
wave_0_per_point45=g = if(below(g,0),0,g);
wave_0_per_point46=b = if(above(b,1),1,b);
wave_0_per_point47=b = if(below(b,0),0,b);
wave_0_per_point48=
wave_0_per_point49=a = 0.4;
wavecode_1_enabled=0
wavecode_1_samples=512
wavecode_1_sep=0
wavecode_1_bSpectrum=0
wavecode_1_bUseDots=0
wavecode_1_bDrawThick=0
wavecode_1_bAdditive=0
wavecode_1_scaling=7.75180
wavecode_1_smoothing=0.00000
wavecode_1_r=1.000
wavecode_1_g=1.000
wavecode_1_b=1.000
wavecode_1_a=0.210
wave_1_init1=t2 = 0;
wave_1_init2=t3 = 0;
wave_1_init3=t4 = 0;
wave_1_init4=cl = 0;
wave_1_per_frame1=t8 = 1;
wave_1_per_frame2=
wave_1_per_frame3=t1 = 0.5;
wave_1_per_frame4=t2 = 0.9;
wave_1_per_point1=d = d*0.85 + (value1)*1;
wave_1_per_point2=
wave_1_per_point3=x = 0.5 + d*sample*(1-sample);
wave_1_per_point4=y = 0.9 - sample*0.8;
wavecode_2_enabled=1
wavecode_2_samples=442
wavecode_2_sep=0
wavecode_2_bSpectrum=0
wavecode_2_bUseDots=0
wavecode_2_bDrawThick=0
wavecode_2_bAdditive=1
wavecode_2_scaling=5.92556
wavecode_2_smoothing=0.00000
wavecode_2_r=1.000
wavecode_2_g=1.000
wavecode_2_b=1.000
wavecode_2_a=0.160
wave_2_per_frame1=t1 = 0;
wave_2_per_frame2=t2 = 0;
wave_2_per_frame3=
wave_2_per_frame4=
wave_2_per_point1=// q32 number of attributes
wave_2_per_point2=// q31 number of objects
wave_2_per_point3=
wave_2_per_point4=ppo = 11; // number of points used for each object
wave_2_per_point5=index = t2*q32; // object's index
wave_2_per_point6=
wave_2_per_point7=x = 0.5 +(gmegabuf(index)-0.5)/q2;
wave_2_per_point8=y = 0.5 + (gmegabuf(index+1)-0.5)/q2;
wave_2_per_point9=
wave_2_per_point10=// collecting pairs of index and distance to the current object in a local buffer
wave_2_per_point11=i = 0;
wave_2_per_point12=j = 0; 
wave_2_per_point13=loop(q31,
wave_2_per_point14=     d = sqrt( sqr(gmegabuf(index)-gmegabuf(i)) + sqr(gmegabuf(index+1)-gmegabuf(i+1)));
wave_2_per_point15=     megabuf(j)   = i; // store index/distance pairs
wave_2_per_point16=     megabuf(j+1) = d; 
wave_2_per_point17=     j = j+2;
wave_2_per_point18=     i = i+q32;
wave_2_per_point19=    );
wave_2_per_point20=
wave_2_per_point21=// sort that buffer, but only 5 cycles for the 5 nearest objects
wave_2_per_point22=i = 0;
wave_2_per_point23=loop( 7,
wave_2_per_point24=      j = i;
wave_2_per_point25=      smallestfind = 100;
wave_2_per_point26=      findindex = -1;
wave_2_per_point27=      loop( q31-j,
wave_2_per_point28=            distance =megabuf(j*2+1);
wave_2_per_point29=            smaller = above( smallestfind, distance);
wave_2_per_point30=            smallestfind = if(smaller, distance, smallestfind);
wave_2_per_point31=            findindex = if( smaller, j*2, findindex);
wave_2_per_point32=            j = j + 1;
wave_2_per_point33=          );
wave_2_per_point34=
wave_2_per_point35=      // now that the nearest object was found, swap it to the buffer's top
wave_2_per_point36=
wave_2_per_point37=      j = megabuf(i);
wave_2_per_point38=      d = megabuf(i+1);
wave_2_per_point39=
wave_2_per_point40=      megabuf(i)   = megabuf(findindex);
wave_2_per_point41=      megabuf(i+1) = megabuf(findindex+1);
wave_2_per_point42=      megabuf(findindex)   = j;
wave_2_per_point43=      megabuf(findindex+1) = d;
wave_2_per_point44=
wave_2_per_point45=      i = i+1;
wave_2_per_point46=    );
wave_2_per_point47=
wave_2_per_point48=
wave_2_per_point49=index2 = (t1)%ppo;
wave_2_per_point50=i = if(below(index2,ppo-4),megabuf(index2),index);
wave_2_per_point51=xx = 0.5 + (gmegabuf(i)-0.5)/q2;
wave_2_per_point52=yy = 0.5 + (gmegabuf(i+1)-0.5)/q2;
wave_2_per_point53=w = asin(1)*index2/4;
wave_2_per_point54=//xx = x + sin(w)*0.1;
wave_2_per_point55=//yy = y + cos(w)*0.1;
wave_2_per_point56=x = if( equal(index2%2,0), x, xx);
wave_2_per_point57=y = if( equal(index2%2,0), y, yy);
wave_2_per_point58=
wave_2_per_point59=
wave_2_per_point60=b = below(index2,ppo-1)*above(index2,0);
wave_2_per_point61=r = b;
wave_2_per_point62=g = b;
wave_2_per_point63=
wave_2_per_point64=
wave_2_per_point65=t2 = t2 + equal(t1%ppo,ppo-1);
wave_2_per_point66=t1 = t1 + 1;
wavecode_3_enabled=0
wavecode_3_samples=512
wavecode_3_sep=0
wavecode_3_bSpectrum=0
wavecode_3_bUseDots=0
wavecode_3_bDrawThick=1
wavecode_3_bAdditive=1
wavecode_3_scaling=5.92556
wavecode_3_smoothing=0.00000
wavecode_3_r=1.000
wavecode_3_g=0.000
wavecode_3_b=0.000
wavecode_3_a=0.340
wave_3_init1=t2 = 0
wave_3_per_frame1=t1 = q1;
wave_3_per_frame2=t2 = q2;
wave_3_per_frame3=t3 = q3;
wave_3_per_frame4=t4 = q4;
wave_3_per_frame5=t5 = q5;
wave_3_per_frame6=t6 = q6;
wave_3_per_frame7=t7 = q7;
wave_3_per_frame8=t8 = q8;
wave_3_per_point1=sample = 1-sample;
wave_3_per_point2=xxx = xx;
wave_3_per_point3=yyy = yy;
wave_3_per_point4=xx = pow(sample,5)*t1 + 5*pow(sample,4)*(1-sample)*t1 + 10*pow(sample,3)*sqr(1-sample)*t2
wave_3_per_point5=+ 10*sqr(sample)*pow(1-sample,3)*t3 + 5*pow(1-sample,4)*sample*t4 + pow(1-sample,5)*t4;
wave_3_per_point6=
wave_3_per_point7=yy = pow(sample,5)*t5 + 5*pow(sample,4)*(1-sample)*t5 + 10*pow(sample,3)*sqr(1-sample)*t6
wave_3_per_point8=+ 10*sqr(sample)*pow(1-sample,3)*t7 + 5*pow(1-sample,4)*sample*t8 + pow(1-sample,5)*t8;
wave_3_per_point9=
wave_3_per_point10=d = 1/sqrt(sqr(xx-xxx)+sqr(yy-yyy));
wave_3_per_point11=dd = dd*0.95 + (value1);
wave_3_per_point12=ddd = dd*sample*(1-sample)*d;
wave_3_per_point13=ddd = sample*(1-sample)*sin(sample*120)*d*0.1;
wave_3_per_point14=x = xx + (yy-yyy)*ddd;
wave_3_per_point15=y = yy - (xx-xxx)*ddd;
wave_3_per_point16=
wave_3_per_point17=x = 0.5 + (x-0.5)*q9;
wave_3_per_point18=y = 0.5 + (y-0.5)*q10;
wave_3_per_point19=
shapecode_0_enabled=1
shapecode_0_sides=100
shapecode_0_additive=1
shapecode_0_thickOutline=0
shapecode_0_textured=0
shapecode_0_num_inst=50
shapecode_0_x=0.500
shapecode_0_y=0.500
shapecode_0_rad=0.01000
shapecode_0_ang=3.20442
shapecode_0_tex_ang=0.00000
shapecode_0_tex_zoom=6.23873
shapecode_0_r=1.000
shapecode_0_g=1.000
shapecode_0_b=1.000
shapecode_0_a=0.000
shapecode_0_r2=1.000
shapecode_0_g2=1.000
shapecode_0_b2=1.000
shapecode_0_a2=0.000
shapecode_0_border_r=1.000
shapecode_0_border_g=1.000
shapecode_0_border_b=1.000
shapecode_0_border_a=0.820
shape_0_per_frame1=index = instance*q32;
shape_0_per_frame2=
shape_0_per_frame3=x = gmegabuf(index);
shape_0_per_frame4=y = gmegabuf(index+1);
shape_0_per_frame5=
shape_0_per_frame6=rad = gmegabuf(index+4)*2;
shape_0_per_frame7=
shape_0_per_frame8=r = gmegabuf(index+5);
shape_0_per_frame9=g = gmegabuf(index+6);
shape_0_per_frame10=b = gmegabuf(index+7);
shape_0_per_frame11=
shape_0_per_frame12=r2 = r; g2 = g; b2 = b;
shape_0_per_frame13=
shape_0_per_frame14=
shape_0_per_frame15=x = 0.5 + (x-0.5)/q2;
shapecode_1_enabled=0
shapecode_1_sides=100
shapecode_1_additive=1
shapecode_1_thickOutline=1
shapecode_1_textured=1
shapecode_1_num_inst=1
shapecode_1_x=0.740
shapecode_1_y=0.270
shapecode_1_rad=0.64927
shapecode_1_ang=3.83274
shapecode_1_tex_ang=0.00000
shapecode_1_tex_zoom=0.81948
shapecode_1_r=1.000
shapecode_1_g=1.000
shapecode_1_b=0.000
shapecode_1_a=1.000
shapecode_1_r2=0.000
shapecode_1_g2=0.000
shapecode_1_b2=0.000
shapecode_1_a2=1.000
shapecode_1_border_r=1.000
shapecode_1_border_g=1.000
shapecode_1_border_b=1.000
shapecode_1_border_a=0.000
shape_1_init1=vx = 0
shapecode_2_enabled=0
shapecode_2_sides=100
shapecode_2_additive=1
shapecode_2_thickOutline=1
shapecode_2_textured=1
shapecode_2_num_inst=1
shapecode_2_x=0.500
shapecode_2_y=0.500
shapecode_2_rad=0.33000
shapecode_2_ang=0.00000
shapecode_2_tex_ang=0.00000
shapecode_2_tex_zoom=0.73458
shapecode_2_r=0.000
shapecode_2_g=1.000
shapecode_2_b=0.000
shapecode_2_a=1.000
shapecode_2_r2=0.000
shapecode_2_g2=1.000
shapecode_2_b2=0.000
shapecode_2_a2=0.000
shapecode_2_border_r=1.000
shapecode_2_border_g=1.000
shapecode_2_border_b=1.000
shapecode_2_border_a=0.000
shape_2_init1=vx = 0
shapecode_3_enabled=0
shapecode_3_sides=64
shapecode_3_additive=1
shapecode_3_thickOutline=1
shapecode_3_textured=0
shapecode_3_num_inst=1
shapecode_3_x=0.500
shapecode_3_y=0.500
shapecode_3_rad=0.16283
shapecode_3_ang=0.75398
shapecode_3_tex_ang=0.00000
shapecode_3_tex_zoom=0.73458
shapecode_3_r=0.000
shapecode_3_g=1.000
shapecode_3_b=0.000
shapecode_3_a=1.000
shapecode_3_r2=0.000
shapecode_3_g2=1.000
shapecode_3_b2=0.000
shapecode_3_a2=0.000
shapecode_3_border_r=1.000
shapecode_3_border_g=1.000
shapecode_3_border_b=1.000
shapecode_3_border_a=0.000
shape_3_init1=vx = 0
per_frame_init_1=// clear buffer
per_frame_init_2=i = 0; loop(1024*1024, gmegabuf(i) = 0; i = i+1);
per_frame_init_3=
per_frame_init_4=count = 40;
per_frame_init_5=attributes = 9;
per_frame_init_6=
per_frame_init_7=minradius = 0.005;
per_frame_init_8=maxradius = 0.045;
per_frame_init_9=v = 0.005;
per_frame_init_10=
per_frame_init_11=// randomize initial coordinates
per_frame_init_12=index = 0;
per_frame_init_13=loop(count, 
per_frame_init_14=     gmegabuf(index*attributes) = rand(1000)/1000;
per_frame_init_15=     gmegabuf(index*attributes+1) = rand(1000)/1000;
per_frame_init_16=     gmegabuf(index*attributes+2) = v*(rand(1000)/1000-0.5);
per_frame_init_17=     gmegabuf(index*attributes+3) = v*(rand(1000)/1000-0.5);
per_frame_init_18=     gmegabuf(index*attributes+4) = minradius + (maxradius-minradius)*(index+1)/count;
per_frame_init_19=     gmegabuf(index*attributes+5) = rand(1000)/1000;
per_frame_init_20=     gmegabuf(index*attributes+6) = rand(1000)/1000;
per_frame_init_21=     gmegabuf(index*attributes+7) = rand(1000)/1000;
per_frame_init_22=     gmegabuf(index*attributes+8) = sqr(gmegabuf(index*attributes+4)) ;
per_frame_init_23=     index = index+1;
per_frame_init_24=    );
per_frame_init_25=
per_frame_init_26=q31 = count;
per_frame_init_27=q32 = attributes;
per_frame_init_28=
per_frame_init_29=// 0, x
per_frame_init_30=// 1, y
per_frame_init_31=// 2, vx
per_frame_init_32=// 3, vy
per_frame_init_33=// 4, radius
per_frame_init_34=// 5, red
per_frame_init_35=// 6, green
per_frame_init_36=// 7, blue
per_frame_init_37=// 8, mass
per_frame_1=warp = 0;
per_frame_2=zoom = 1;
per_frame_3=
per_frame_4=gravity = 0.005/fps*0;
per_frame_5=dampening = 0.995;
per_frame_6=pi2 = asin(1);
per_frame_7=
per_frame_8=
per_frame_9=index = 0;
per_frame_10=index2 = 0;
per_frame_11=w = (aspecty-aspectx)/2;
per_frame_12=loop(count, 
per_frame_13=     gmegabuf(index*attributes+1) = gmegabuf(index*attributes+1) + gmegabuf(index*attributes+3);
per_frame_14=     gmegabuf(index*attributes) = gmegabuf(index*attributes) + gmegabuf(index*attributes+2);
per_frame_15=     gmegabuf(index*attributes+2) = if( below( gmegabuf(index*attributes), 0-w+gmegabuf(index*attributes+4)),
per_frame_16=                                        abs(gmegabuf(index*attributes+2))*dampening,
per_frame_17=                                        gmegabuf(index*attributes+2)
per_frame_18=                                      ); 
per_frame_19=     gmegabuf(index*attributes+2) = if( above( gmegabuf(index*attributes), 1+w-gmegabuf(index*attributes+4)),
per_frame_20=                                        -abs(gmegabuf(index*attributes+2))*dampening,
per_frame_21=                                        gmegabuf(index*attributes+2)
per_frame_22=                                      ); 
per_frame_23=     gmegabuf(index*attributes+3) = gmegabuf(index*attributes+3) - gravity;
per_frame_24=     gmegabuf(index*attributes+3) = if( below( gmegabuf(index*attributes+1), gmegabuf(index*attributes+4)),
per_frame_25=                                        abs(gmegabuf(index*attributes+3))*dampening,
per_frame_26=                                        gmegabuf(index*attributes+3);
per_frame_27=                                      );
per_frame_28=
per_frame_29=     gmegabuf(index*attributes+3) = if( above( gmegabuf(index*attributes+1), 1-gmegabuf(index*attributes+4)),
per_frame_30=                                        -abs(gmegabuf(index*attributes+3))*dampening,
per_frame_31=                                        gmegabuf(index*attributes+3);
per_frame_32=                                      );
per_frame_33=
per_frame_34=     hit = -1;
per_frame_35=     index2 = index;
per_frame_36=     loop( count-index, // for each other object2
per_frame_37=           hit = below( sqrt( sqr( gmegabuf(index*attributes) - gmegabuf(index2*attributes)) +
per_frame_38=                              sqr( gmegabuf(index*attributes+1) - gmegabuf(index2*attributes+1))),
per_frame_39=                        gmegabuf(index*attributes + 4) + gmegabuf(index2*attributes + 4)
per_frame_40=                      )
per_frame_41=                 *
per_frame_42=                 above( sqrt( sqr( gmegabuf(index*attributes)   - gmegabuf(index2*attributes))+
per_frame_43=                        sqr( gmegabuf(index*attributes+1) - gmegabuf(index2*attributes+1))),
per_frame_44=                        sqrt( sqr( gmegabuf(index*attributes+0) - gmegabuf(index2*attributes+0)+ 
per_frame_45=                                   gmegabuf(index*attributes+2) - gmegabuf(index2*attributes+2))+
per_frame_46=                              sqr( gmegabuf(index*attributes+1) - gmegabuf(index2*attributes+1)+
per_frame_47=                                   gmegabuf(index*attributes+3) - gmegabuf(index2*attributes+3))
per_frame_48=                            )
per_frame_49=                      );
per_frame_50=           ref_ang = atan2( gmegabuf(index2*attributes)-gmegabuf(index*attributes), // calculating the angle of the common tangent
per_frame_51=                            gmegabuf(index2*attributes + 1)-gmegabuf(index*attributes + 1)) + pi2;
per_frame_52=           v1 = sqrt(sqr( gmegabuf(index*attributes + 2)) + sqr( gmegabuf(index*attributes + 3))); // velocity of object1
per_frame_53=           v2 = sqrt(sqr( gmegabuf(index2*attributes + 2)) + sqr( gmegabuf(index2*attributes + 3)));  // velocity of object2
per_frame_54=           w1 = atan2( gmegabuf(index*attributes + 2), gmegabuf(index*attributes + 3));   // object1 motion angle
per_frame_55=           w2 = atan2( gmegabuf(index2*attributes + 2), gmegabuf(index2*attributes + 3)); // object2 motion angle
per_frame_56=           m1 = gmegabuf(index*attributes + 8);
per_frame_57=           m2 = gmegabuf(index2*attributes + 8);
per_frame_58=           vv1 = ((m1-m2)*v1 + 2*m2*v2)/(m1+m2);
per_frame_59=           vv2 = ((m2-m1)*v2 + 2*m1*v1)/(m1+m2);
per_frame_60=           gmegabuf( index*attributes + 2) = if( hit,
per_frame_61=                                                  sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+pi2)*vv1*cos(w2-ref_ang-pi2),
per_frame_62=                                                  gmegabuf( index*attributes + 2)
per_frame_63=                                               );
per_frame_64=           gmegabuf( index*attributes + 3) = if( hit,
per_frame_65=                                                 cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+pi2)*vv1*cos(w2-ref_ang-pi2),
per_frame_66=                                                 gmegabuf( index*attributes + 3)
per_frame_67=                                               );
per_frame_68=           gmegabuf( index2*attributes + 2) = if( hit,
per_frame_69=                                                  sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+pi2)*vv2*cos(w1-ref_ang-pi2),
per_frame_70=                                                  gmegabuf( index2*attributes + 2)
per_frame_71=                                               );
per_frame_72=           gmegabuf( index2*attributes + 3) = if( hit,
per_frame_73=                                                  cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+pi2)*vv2*cos(w1-ref_ang-pi2),
per_frame_74=                                                  gmegabuf( index2*attributes + 3)
per_frame_75=                                               );
per_frame_76=
per_frame_77=           index2 = index2 + 1;
per_frame_78=         );
per_frame_79=     index = index+1;
per_frame_80=    );
per_frame_81=
per_frame_82=
per_frame_83=q1 = aspectx;
per_frame_84=q2 = aspecty;
per_frame_85=monitor = aspecty;
warp_1=`shader_body
warp_2=`{
warp_3=`ret = GetPixel(uv)*0.75;
warp_4=`}
comp_1=`shader_body
comp_2=`{
comp_3=`ret = GetPixel(uv);
comp_4=`}
