MILKDROP_PRESET_VERSION=201 PSVERSION=3 PSVERSION_WARP=2 PSVERSION_COMP=3 [preset00] fRating=1.000 fGammaAdj=1.980 fDecay=0.500 fVideoEchoZoom=1.000 fVideoEchoAlpha=0.500 nVideoEchoOrientation=3 nWaveMode=0 bAdditiveWaves=0 bWaveDots=0 bWaveThick=1 bModWaveAlphaByVolume=0 bMaximizeWaveColor=1 bTexWrap=1 bDarkenCenter=0 bRedBlueStereo=0 bBrighten=0 bDarken=1 bSolarize=0 bInvert=0 fWaveAlpha=0.004 fWaveScale=9.731 fWaveSmoothing=0.000 fWaveParam=1.000 fModWaveAlphaStart=1.000 fModWaveAlphaEnd=1.000 fWarpAnimSpeed=1.459 fWarpScale=2.007 fZoomExponent=1.00000 fShader=0.000 zoom=0.99990 rot=0.00000 cx=0.500 cy=0.500 dx=0.00000 dy=0.00000 warp=0.01000 sx=0.99990 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.000 ob_r=0.000 ob_g=0.100 ob_b=1.000 ob_a=1.000 ib_size=0.000 ib_r=0.000 ib_g=0.000 ib_b=0.000 ib_a=0.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=1 wavecode_0_samples=512 wavecode_0_sep=0 wavecode_0_bSpectrum=1 wavecode_0_bUseDots=0 wavecode_0_bDrawThick=1 wavecode_0_bAdditive=0 wavecode_0_scaling=0.03012 wavecode_0_smoothing=0.50000 wavecode_0_r=1.000 wavecode_0_g=1.000 wavecode_0_b=1.000 wavecode_0_a=1.000 wave_0_per_point1=x = abs(sample-1); wave_0_per_point2=y = .77 - ((0|(value1*100))*.01); wave_0_per_point3=a = pow(value1,1.3)*5; wavecode_1_enabled=1 wavecode_1_samples=65 wavecode_1_sep=0 wavecode_1_bSpectrum=1 wavecode_1_bUseDots=0 wavecode_1_bDrawThick=1 wavecode_1_bAdditive=1 wavecode_1_scaling=0.33408 wavecode_1_smoothing=0.00000 wavecode_1_r=1.000 wavecode_1_g=1.000 wavecode_1_b=1.000 wavecode_1_a=0.250 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 = 0;//d*0.85 + (value1)*1; wave_1_per_point2= wave_1_per_point3=y = 0.2 + (value1+value2)*0.02; wave_1_per_point4=x = 0.9 - sample*0.8; wave_1_per_point5= wave_1_per_point6=gmegabuf((sample*128-1)*q32 + 14) = value1 + value2; wavecode_2_enabled=1 wavecode_2_samples=512 wavecode_2_sep=0 wavecode_2_bSpectrum=1 wavecode_2_bUseDots=0 wavecode_2_bDrawThick=1 wavecode_2_bAdditive=0 wavecode_2_scaling=0.03042 wavecode_2_smoothing=0.50000 wavecode_2_r=1.000 wavecode_2_g=1.000 wavecode_2_b=1.000 wavecode_2_a=1.000 wave_2_per_point1=y = .24+(abs(sample-1)*.52); wave_2_per_point2=x = (0|(value1*100))*.01; wave_2_per_point3=a = pow(value1,1.3)*5; wavecode_3_enabled=1 wavecode_3_samples=512 wavecode_3_sep=0 wavecode_3_bSpectrum=1 wavecode_3_bUseDots=0 wavecode_3_bDrawThick=1 wavecode_3_bAdditive=0 wavecode_3_scaling=0.02953 wavecode_3_smoothing=0.50000 wavecode_3_r=1.000 wavecode_3_g=1.000 wavecode_3_b=1.000 wavecode_3_a=1.000 wave_3_per_point1=y = .24+(sample*.52); wave_3_per_point2=x = 1-(0|(value1*100))*.01; wave_3_per_point3=a = pow(value1,1.3)*5; shapecode_0_enabled=0 shapecode_0_sides=3 shapecode_0_additive=1 shapecode_0_thickOutline=0 shapecode_0_textured=0 shapecode_0_num_inst=392 shapecode_0_x=0.500 shapecode_0_y=0.500 shapecode_0_rad=0.16283 shapecode_0_ang=0.00000 shapecode_0_tex_ang=0.00000 shapecode_0_tex_zoom=0.73458 shapecode_0_r=1.000 shapecode_0_g=0.000 shapecode_0_b=0.000 shapecode_0_a=0.500 shapecode_0_r2=0.000 shapecode_0_g2=0.000 shapecode_0_b2=0.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.000 shape_0_init1=i3 = 0; shape_0_init2=i4 = 0; shape_0_per_frame1=i3 = if(equal(instance,0),0,i3); shape_0_per_frame2=i4 = if(equal(instance,0),0,i4); shape_0_per_frame3=ppo = 8; shape_0_per_frame4=index = i4*q32; shape_0_per_frame5=sample = i3 % ppo; shape_0_per_frame6= shape_0_per_frame7=size = gmegabuf(index+4)*40; shape_0_per_frame8= shape_0_per_frame9=x = gmegabuf(index); shape_0_per_frame10=y = gmegabuf(index+1); shape_0_per_frame11= shape_0_per_frame12=ang = gmegabuf(index+9); shape_0_per_frame13=rad = size*0.05; shape_0_per_frame14= shape_0_per_frame15=//r = gmegabuf(index+5); shape_0_per_frame16=//g = gmegabuf(index+6); shape_0_per_frame17=//b = gmegabuf(index+7); shape_0_per_frame18= shape_0_per_frame19= shape_0_per_frame20=sample = sample/ppo; shape_0_per_frame21=bending = gmegabuf(index + 12)*5 + gmegabuf(index + 10)*5; shape_0_per_frame22=dir = -ang + (sample-0.4)*bending; shape_0_per_frame23= shape_0_per_frame24= ang = asin(1)*1.5 - dir + bending*0.05; shape_0_per_frame25= shape_0_per_frame26=x = x + ((sample-0.3)*0.06*cos(dir)*size + sin(dir)*size*bending*0.01); shape_0_per_frame27=y = y + ((sample-0.3)*0.06*sin(dir)*size - cos(dir)*size*bending*0.01); shape_0_per_frame28= shape_0_per_frame29=x = 0.5 + (x-0.5)*q1; shape_0_per_frame30= shape_0_per_frame31=rad = rad*1.5 - sample*0.05*size; shape_0_per_frame32= shape_0_per_frame33=i3 = i3 + 1; shape_0_per_frame34=i4 = if( equal(i3%ppo,0), i4 +1, i4); shapecode_1_enabled=0 shapecode_1_sides=32 shapecode_1_additive=1 shapecode_1_thickOutline=0 shapecode_1_textured=0 shapecode_1_num_inst=1 shapecode_1_x=0.500 shapecode_1_y=0.500 shapecode_1_rad=0.05236 shapecode_1_ang=0.00000 shapecode_1_tex_ang=0.00000 shapecode_1_tex_zoom=1.00000 shapecode_1_r=1.000 shapecode_1_g=0.000 shapecode_1_b=0.000 shapecode_1_a=1.000 shapecode_1_r2=1.000 shapecode_1_g2=0.000 shapecode_1_b2=0.000 shapecode_1_a2=0.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_per_frame1=x = q3; shape_1_per_frame2=y = q4; shape_1_per_frame3= shape_1_per_frame4=x = 0.5 + (x-0.5)/q2; shape_1_per_frame5=y = 0.5 + (y-0.5)/q1; shapecode_2_enabled=1 shapecode_2_sides=3 shapecode_2_additive=1 shapecode_2_thickOutline=0 shapecode_2_textured=0 shapecode_2_num_inst=200 shapecode_2_x=0.500 shapecode_2_y=0.500 shapecode_2_rad=0.16283 shapecode_2_ang=0.00000 shapecode_2_tex_ang=0.00000 shapecode_2_tex_zoom=0.73458 shapecode_2_r=1.000 shapecode_2_g=0.000 shapecode_2_b=0.000 shapecode_2_a=0.250 shapecode_2_r2=0.000 shapecode_2_g2=0.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=i3 = 0; shape_2_init2=i4 = 0; shape_2_per_frame1=i3 = if(equal(instance,0),0,i3); shape_2_per_frame2=i4 = if(equal(instance,0),0,i4); shape_2_per_frame3=ppo = 4; shape_2_per_frame4=index = i4*q32; shape_2_per_frame5=sample = i3 % ppo; shape_2_per_frame6= shape_2_per_frame7=size = gmegabuf(index+4)*2; shape_2_per_frame8= shape_2_per_frame9=x = gmegabuf(index); shape_2_per_frame10=y = gmegabuf(index+1); shape_2_per_frame11= shape_2_per_frame12=ang = gmegabuf(index+9); shape_2_per_frame13=rad = size*0.05; shape_2_per_frame14= shape_2_per_frame15=r = gmegabuf(index+5); shape_2_per_frame16=g = gmegabuf(index+6); shape_2_per_frame17=b = gmegabuf(index+7); shape_2_per_frame18= shape_2_per_frame19= shape_2_per_frame20=sample = sample/ppo; shape_2_per_frame21=bending = gmegabuf(index + 12)*5 + gmegabuf(index + 10)*5; shape_2_per_frame22=dir = -ang + bending*0; shape_2_per_frame23= shape_2_per_frame24= ang = asin(1)*1.5 - dir + bending*0.05; shape_2_per_frame25= shape_2_per_frame26= shape_2_per_frame27= shape_2_per_frame28=x = x + ((-sample-0.0)*0.5*cos(dir)*size + sin(dir)*size*bending*0.0); shape_2_per_frame29=y = y + ((-sample-0.0)*0.5*sin(dir)*size - cos(dir)*size*bending*0.0); shape_2_per_frame30= shape_2_per_frame31=x = 0.5 + (x-0.5)*q1; shape_2_per_frame32= shape_2_per_frame33=rad = size*(1-sample); shape_2_per_frame34= shape_2_per_frame35=i3 = i3 + 1; shape_2_per_frame36=i4 = if( equal(i3%ppo,0), i4 +1, i4); shapecode_3_enabled=0 shapecode_3_sides=3 shapecode_3_additive=1 shapecode_3_thickOutline=0 shapecode_3_textured=0 shapecode_3_num_inst=392 shapecode_3_x=0.500 shapecode_3_y=0.500 shapecode_3_rad=0.16283 shapecode_3_ang=0.00000 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=1.000 shapecode_3_a=0.500 shapecode_3_r2=0.000 shapecode_3_g2=0.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=i3 = 0; shape_3_init2=i4 = 0; shape_3_per_frame1=i3 = if(equal(instance,0),0,i3); shape_3_per_frame2=i4 = if(equal(instance,0),0,i4); shape_3_per_frame3=ppo = 8; shape_3_per_frame4=index = i4*q32; shape_3_per_frame5=sample = i3 % ppo; shape_3_per_frame6= shape_3_per_frame7=size = gmegabuf(index+4)*40; shape_3_per_frame8= shape_3_per_frame9=x = gmegabuf(index); shape_3_per_frame10=y = gmegabuf(index+1); shape_3_per_frame11= shape_3_per_frame12=ang = gmegabuf(index+9); shape_3_per_frame13=rad = size*0.05; shape_3_per_frame14= shape_3_per_frame15=r = gmegabuf(index+5); shape_3_per_frame16=g = gmegabuf(index+6); shape_3_per_frame17=b = gmegabuf(index+7); shape_3_per_frame18= shape_3_per_frame19= shape_3_per_frame20=sample = sample/ppo; shape_3_per_frame21=bending = gmegabuf(index + 12)*5 + gmegabuf(index + 10)*5; shape_3_per_frame22=dir = -ang + (sample-0.4)*bending; shape_3_per_frame23= shape_3_per_frame24= ang = asin(1)*1.5 - dir + bending*0.05; shape_3_per_frame25= shape_3_per_frame26=x = x + ((sample-0.3)*0.06*cos(dir)*size + sin(dir)*size*bending*0.01); shape_3_per_frame27=y = y + ((sample-0.3)*0.06*sin(dir)*size - cos(dir)*size*bending*0.01); shape_3_per_frame28= shape_3_per_frame29=x = 0.5 + (x-0.5)/q2; shape_3_per_frame30= shape_3_per_frame31=rad = rad*1.5 - sample*0.05*size; shape_3_per_frame32= shape_3_per_frame33=i3 = i3 + 1; shape_3_per_frame34=i4 = if( equal(i3%ppo,0), i4 +1, i4); per_frame_init_1= per_frame_init_2=// below init code of Flexi's particle simulation per_frame_init_3= per_frame_init_4= per_frame_init_5=// clear buffer per_frame_init_6=i = 0; loop(1024*1024, gmegabuf(i) = 0; i = i+1); per_frame_init_7= per_frame_init_8=count = 50; // 50 objects are quite fine per_frame_init_9=attributes = 32; // see, there are plenty of attributes per object unused. do not think of energy/lifetime/aggro/ammunition/ gossip data! ;) per_frame_init_10=nListStart = 24; // starting index of neighbor list. in the per-frame section runs a script that fills this list with the indexes of the first n nearest neighbors per_frame_init_11= per_frame_init_12=minradius = 0.05; // "smallest" objects are influenced by the hi tones per_frame_init_13=maxradius = 0.02; // "bigger" objects by the basses per_frame_init_14=v = 0.1; // initial velocity per_frame_init_15= per_frame_init_16=// randomize initial coordinates and color per_frame_init_17=index = 0; per_frame_init_18=loop(100, per_frame_init_19= gmegabuf(index*attributes) = rand(1000)/1000; per_frame_init_20= gmegabuf(index*attributes+1) = rand(1000)/1000; per_frame_init_21= gmegabuf(index*attributes+2) = v*(rand(1000)/1000-0.5); per_frame_init_22= gmegabuf(index*attributes+3) = v*(rand(1000)/1000-0.5); per_frame_init_23= gmegabuf(index*attributes+4) = minradius + (maxradius-minradius)*(index+1)/count; per_frame_init_24= gmegabuf(index*attributes+5) = rand(1000)/1000 + 0.2; per_frame_init_25= gmegabuf(index*attributes+6) = rand(1000)/1000 + 0.2; per_frame_init_26= gmegabuf(index*attributes+7) = rand(1000)/1000 + 0.2; per_frame_init_27= gmegabuf(index*attributes+8) = pow(gmegabuf(index*attributes+4),3) ; per_frame_init_28= gmegabuf(index*attributes+9) = 4*asin(1)*rand(1000)/1000; per_frame_init_29= gmegabuf(index*attributes+10) = 0; per_frame_init_30= gmegabuf(index*attributes+13) = index/(count-1); per_frame_init_31= gmegabuf(index*attributes+14) = 0; per_frame_init_32= index = index+1; per_frame_init_33= ); per_frame_init_34= per_frame_init_35=q30 = nListStart; per_frame_init_36=q31 = count; per_frame_init_37=q32 = attributes; per_frame_init_38= per_frame_init_39=q29 = (count-1)*attributes; // last index per_frame_init_40=q28 = asin(1); // pi/2 per_frame_init_41= per_frame_init_42= per_frame_init_43= per_frame_init_44=// 0, x (position of the particle) per_frame_init_45=// 1, y per_frame_init_46=// 2, vx (velocity of the particle) per_frame_init_47=// 3, vy per_frame_init_48=// 4, radius per_frame_init_49=// 5, red per_frame_init_50=// 6, green per_frame_init_51=// 7, blue per_frame_init_52=// 8, mass per_frame_init_53=// 9, angle per_frame_init_54=// 10, rotation per_frame_init_55=// 11, bend force per_frame_init_56=// 12, bending per_frame_init_57=// 13, sample per_frame_init_58=// 14, spectrum (this value gets filled from the actual sound spectrum values in a custom wave function! see custom wave2, ) per_frame_1=chng=sin(time*.5); per_frame_2=cthr=.9999; per_frame_3=mq21=if(above(chng,cthr),rand(3),mq21); per_frame_4=mq22=if(above(chng,cthr),rand(3),mq22); per_frame_5=mq23=if(above(chng,cthr),rand(3),mq23); per_frame_6=mq24=if(above(chng,cthr),rand(2),mq24); per_frame_7=mq25=if(above(chng,cthr),rand(2),mq25); per_frame_8=mq26=if(above(chng,cthr),rand(2),mq26); per_frame_9=mq27=if(above(chng,cthr),rand(1),mq27); per_frame_10=mq28=if(above(chng,cthr),rand(1),mq28); per_frame_11=mq29=if(above(chng,cthr),rand(1)*.3,mq29); per_frame_12=mq31=if(above(chng,cthr),rand(1)*.3,mq31); per_frame_13=monitor=chng; per_frame_14=q21=mq21;q22=mq22;q23=mq23;q24=mq24;q25=mq25;q26=mq26; per_frame_15=q27=mq27;q28=mq28;q29=mq29;q31=mq31; per_frame_16= per_frame_17=monitor=mq1; per_frame_18=vol=bass+treb+mid; per_frame_19=atime=atime+vol; per_frame_20=q11=.4+sin(atime*.006 )*.4; per_frame_21=q12=.4+cos(atime*.00613828348)*.4; per_frame_22=q13=.4+sin(atime*.00598593455)*.4; per_frame_23=monitor=q13; per_frame_24=q4=sin(atime*.03); per_frame_25=q5=cos(atime*.030383824); per_frame_26=q6=tan(atime*.029384834); per_frame_27= per_frame_28=dy = if(equal(frame%20,-10),1,0); per_frame_29=dx = if(equal(frame%20,10),1,0);; per_frame_30= per_frame_31=wave_a = 0; per_frame_32=warp = 0; per_frame_33=zoom = 1; per_frame_34= per_frame_35=// code below belongs to Flexi's 2D particle simulation / not yet flocking simulation prototype per_frame_36=// see init code section for more information per_frame_37= per_frame_38=q1 = 1/aspecty; per_frame_39=dt = 1/fps; per_frame_40= per_frame_41= per_frame_42=gravity = 0.0015*dt*0; per_frame_43=dampening = 1; per_frame_44=friction = 1024*dt; per_frame_45=shock = 0.0015; per_frame_46=pi2 = asin(1); per_frame_47= per_frame_48=nn = 3; // number of nearest neighbors to search, reduce if not needed per_frame_49= // per frame, each object will update its list of the indexes of its first 'nn' nearest neighbors. per_frame_50= // provide enough attributes, otherwise the next object's coordinate will be overwritten per_frame_51= // collision detection is based on nearest neighbors, so keep it at least at 1. per_frame_52= per_frame_53=check = 3; // how many neighbors will be checked for a possible collision. may not be above nn! per_frame_54= // raise to avoid odd behavior in clusters of touching objects. per_frame_55= per_frame_56=bouncefactor = 0.1; // kind of a shock impulse on contact with the screen borders per_frame_57=rotatefactor = 0; // relation between angular and translative momentum, when object hits a border. this is an empirical value for a convincing impression per_frame_58= per_frame_59=// physical distraction factors per_frame_60=social1 = 0.0; // force factor to the nearest neighbor per_frame_61=social2 = 0.0; // force factor to the second nearest neighbor per_frame_62=social3 = 0.0; // force factor to the third nearest neighbor per_frame_63= per_frame_64=h = (aspecty-1)*0.5; w = (aspectx-1)*0.5; // needed for aspect-aware fullscreen. don't change per_frame_65=index = 0; index2 = 0; // init per_frame_66=loop(50, // number of objects - keep in mind to change in init code section too per_frame_67= per_frame_68= random = rand(1000)/1000; // per object values per_frame_69= sample = gmegabuf(index+13); // has been initialized in the init code section: float value from 0 (first object) to 1 (last object) per_frame_70= per_frame_71= // bend force per_frame_72= gmegabuf(index + 11) = gmegabuf(index + 11)*0.92 - (4*gmegabuf(index+12) + 2*(random-0.5)*gmegabuf(index+14))*dt*8; per_frame_73= per_frame_74= // bend per_frame_75= gmegabuf(index + 12) += 60*gmegabuf(index + 11)*dt; per_frame_76= per_frame_77= v = sqrt( sqr( gmegabuf(index + 2) ) + sqr( gmegabuf(index + 3) ) ); per_frame_78= per_frame_79= // apply friction per_frame_80= fric = max(0,1 - sqr(v*friction) - v*2); per_frame_81= gmegabuf(index + 2) *= fric; per_frame_82= gmegabuf(index + 3) *= fric; per_frame_83= per_frame_84= // apply direction change per_frame_85= gmegabuf(index + 10) = gmegabuf(index + 10)*fric + v*gmegabuf(index +12); per_frame_86= per_frame_87= // apply acceleration force per_frame_88= acceleration = random*0.000 + abs(gmegabuf(index+11))*0.003; per_frame_89= direction = gmegabuf(index + 9) - pi2; per_frame_90= gmegabuf(index + 2) += sin(direction)*acceleration; per_frame_91= gmegabuf(index + 3) += cos(direction)*acceleration; per_frame_92= per_frame_93= // adding velocity vectors per_frame_94= gmegabuf(index) = gmegabuf(index) + gmegabuf(index+2)*60*dt; per_frame_95= gmegabuf(index+1) = gmegabuf(index+1) + gmegabuf(index+3)*60*dt; per_frame_96= gmegabuf(index+9) = gmegabuf(index+9) + gmegabuf(index+10)*0.5; per_frame_97= per_frame_98= // applying gravity per_frame_99= gmegabuf(index+3) = gmegabuf(index+3) - gravity; per_frame_100= per_frame_101= vr = sin(gmegabuf(index+10))*gmegabuf(index+4); // rotation speed at the surface per_frame_102= per_frame_103= // bounce off ceiling per_frame_104= bounce = above( gmegabuf(index+1), 1 - gmegabuf(index+4) + w); per_frame_105= gmegabuf(index+2) = if( bounce, gmegabuf(index+2) + (vr+gmegabuf(index+2))*rotatefactor, gmegabuf(index+2)); per_frame_106= gmegabuf(index+3) = if( bounce, -abs(gmegabuf(index+3))*dampening - shock, gmegabuf(index+3)); per_frame_107= vr = if( bounce, vr - (gmegabuf(index+2) + vr)*(1-rotatefactor), vr); per_frame_108= per_frame_109= // bounce off floor per_frame_110= bounce = below( gmegabuf(index+1), gmegabuf(index+4) - w); per_frame_111= gmegabuf(index+2) = if( bounce, gmegabuf(index+2) + (vr-gmegabuf(index+2))*rotatefactor, gmegabuf(index+2)); per_frame_112= gmegabuf(index+3) = if( bounce, abs(gmegabuf(index+3))*dampening + shock, gmegabuf(index+3)); per_frame_113= vr = if( bounce, vr + (gmegabuf(index+2) - vr)*(1-rotatefactor), vr); per_frame_114= per_frame_115= // bounce off right border per_frame_116= bounce = above( gmegabuf(index), 1 - gmegabuf(index+4) + h); per_frame_117= gmegabuf(index+2) = if( bounce, -abs(gmegabuf(index+2))*dampening - shock, gmegabuf(index+2)); per_frame_118= gmegabuf(index+3) = if( bounce, gmegabuf(index+3) + (vr-gmegabuf(index+3))*rotatefactor, gmegabuf(index+3)); per_frame_119= vr = if( bounce, vr + (gmegabuf(index+3) - vr)*(1-rotatefactor), vr); per_frame_120= per_frame_121= // bounce off left border per_frame_122= bounce = below( gmegabuf(index), gmegabuf(index+4) - h); per_frame_123= gmegabuf(index+2) = if( bounce, abs(gmegabuf(index+2))*dampening + shock, gmegabuf(index+2)); per_frame_124= gmegabuf(index+3) = if( bounce, gmegabuf(index+3) - (vr+gmegabuf(index+3))*rotatefactor, gmegabuf(index+3)); per_frame_125= vr = if( bounce, vr - (gmegabuf(index+3) + vr)*(1-rotatefactor), vr); per_frame_126= per_frame_127= gmegabuf(index+10) = asin(vr/gmegabuf(index+4)); per_frame_128= per_frame_129= i = 0; j = 0; // collecting pairs of index and distance to the current object in a local buffer per_frame_130= loop( 50, per_frame_131= d = sqrt( sqr(gmegabuf(index)-gmegabuf(i)) + sqr(gmegabuf(index+1)-gmegabuf(i+1))); per_frame_132= d = if( equal(d,0), 10, d); // leave out comparison with itself (where d == 0, set d to a high value) per_frame_133= d = d - (gmegabuf(index+4)+gmegabuf(i+4))*0.5; // subtract radius (surface to surface distance) per_frame_134= megabuf(j) = i; // store index/distance pairs per_frame_135= megabuf(j+1) = d; per_frame_136= j = j+2; per_frame_137= i = i+attributes; ); per_frame_138= i = 0; // sort that buffer, but only as many cycles as needed for the _nn_ nearest neighbors per_frame_139= loop( nn, per_frame_140= j = i; smallestfind = 100; findindex = -1; per_frame_141= loop( count-j, per_frame_142= distance =megabuf(j*2+1); per_frame_143= smaller = above( smallestfind, distance); per_frame_144= smallestfind = if(smaller, distance, smallestfind); per_frame_145= findindex = if( smaller, j*2, findindex); per_frame_146= j = j + 1; ); per_frame_147= j = megabuf(i*2); d = megabuf(i*2+1); per_frame_148= megabuf(i*2) = megabuf(findindex); per_frame_149= megabuf(i*2+1) = megabuf(findindex+1); per_frame_150= megabuf(findindex) = j; per_frame_151= megabuf(findindex+1) = d; per_frame_152= i = i+1; per_frame_153= ); per_frame_154= i = 0; // storing the indexes of the nearest neighbors in the list per_frame_155= loop( nn, per_frame_156= gmegabuf(index + nListStart + i) = megabuf(i*2); per_frame_157= i = i +1; per_frame_158= ); per_frame_159= per_frame_160= nearest1 = gmegabuf(index + nListStart+0); // index of the nearest neighbor per_frame_161= nearest2 = gmegabuf(index + nListStart+1); // index of the second nearest neighbor per_frame_162= nearest3 = gmegabuf(index + nListStart+2); // index of the third nearest neighbor per_frame_163= per_frame_164= awayX1 = gmegabuf(index) - gmegabuf(nearest+1); // vector to nearest neighbor per_frame_165= awayY1 = gmegabuf(index+1) - gmegabuf(nearest+1); per_frame_166= per_frame_167= awayX2 = gmegabuf(index) - gmegabuf(nearest2); // vector to nearest neighbor per_frame_168= awayY2 = gmegabuf(index+1) - gmegabuf(nearest2+1); per_frame_169= per_frame_170= awayX3 = gmegabuf(index) - gmegabuf(nearest3); // vector to third nearest neighbor per_frame_171= awayY3 = gmegabuf(index+1) - gmegabuf(nearest3+1); per_frame_172= per_frame_173= gmegabuf(index+2) = gmegabuf(index+2) - dt*(awayX1*social1 + awayX2*social2 + awayX3*social3); per_frame_174= gmegabuf(index+3) = gmegabuf(index+3) - dt*(awayY1*social1 + awayY2*social2 + awayY3*social3); per_frame_175= per_frame_176= per_frame_177= per_frame_178= per_frame_179= i = 0; // collision detection and impulse transmission below per_frame_180= loop( check, per_frame_181= index2 = megabuf(i); per_frame_182= hit = below( sqrt( sqr( gmegabuf(index) - gmegabuf(index2)) + per_frame_183= sqr( gmegabuf(index+1) - gmegabuf(index2+1))), per_frame_184= gmegabuf(index + 4) + gmegabuf(index2 + 4) per_frame_185= ) per_frame_186= * per_frame_187= above( sqrt( sqr( gmegabuf(index) - gmegabuf(index2))+ per_frame_188= sqr( gmegabuf(index+1) - gmegabuf(index2+1))), per_frame_189= sqrt( sqr( gmegabuf(index+0) - gmegabuf(index2+0)+ per_frame_190= gmegabuf(index+2) - gmegabuf(index2+2))+ per_frame_191= sqr( gmegabuf(index+1) - gmegabuf(index2+1)+ per_frame_192= gmegabuf(index+3) - gmegabuf(index2+3)) ) ); per_frame_193= ref_ang = atan2( gmegabuf(index2)-gmegabuf(index), // calculating the angle of the common tangent per_frame_194= gmegabuf(index2 + 1)-gmegabuf(index + 1)) + pi2; per_frame_195= v1 = sqrt(sqr( gmegabuf(index + 2)) + sqr( gmegabuf(index + 3))); // velocity of object1 per_frame_196= v2 = sqrt(sqr( gmegabuf(index2 + 2)) + sqr( gmegabuf(index2 + 3))); // velocity of object2 per_frame_197= w1 = atan2( gmegabuf(index + 2), gmegabuf(index + 3)); // object1 motion angle per_frame_198= w2 = atan2( gmegabuf(index2 + 2), gmegabuf(index2 + 3)); // object2 motion angle per_frame_199= vr2 = sin(gmegabuf(index2 + 10))*gmegabuf(index2+4); // the other object's surface velocity per_frame_200= m1 = gmegabuf(index + 8); m2 = gmegabuf(index2 + 8); per_frame_201= vv1 = ((m1-m2)*v1 + 2*m2*v2)/(m1+m2); vv2 = ((m2-m1)*v2 + 2*m1*v1)/(m1+m2); per_frame_202= vrr = ((m1-m2)*vr + 2*m2*vr2)/(m1+m2); vrr2 = ((m2-m1)*vr2 + 2*m1*vr)/(m1+m2); per_frame_203= per_frame_204= gmegabuf( index + 2) = if( hit, sin(ref_ang)*v1*cos(w1-ref_ang) + ((vr-vr2)-sin(ref_ang)*v1*cos(w1-ref_ang))*0.1 per_frame_205= + cos(ref_ang)*vv1*sin(w2-ref_ang), per_frame_206= gmegabuf( index + 2) ); per_frame_207= per_frame_208= gmegabuf( index + 3) = if( hit, cos(ref_ang)*v1*cos(w1-ref_ang) + ((vr-vr2)-cos(ref_ang)*v1*cos(w1-ref_ang))*0.1 per_frame_209= - sin(ref_ang)*vv1*sin(w2-ref_ang), per_frame_210= gmegabuf( index + 3) ); per_frame_211= per_frame_212= gmegabuf( index2 + 2) = if( hit, sin(ref_ang)*v2*cos(w2-ref_ang) + ((vr2-vr)-sin(ref_ang)*v2*cos(w2-ref_ang))*0.1 per_frame_213= + cos(ref_ang)*vv2*sin(w1-ref_ang), per_frame_214= gmegabuf( index2 + 2) ); per_frame_215= per_frame_216= gmegabuf( index2 + 3) = if( hit, cos(ref_ang)*v2*cos(w2-ref_ang) + ((vr2-vr)-cos(ref_ang)*v2*cos(w2-ref_ang))*0.1 per_frame_217= - sin(ref_ang)*vv2*sin(w1-ref_ang), per_frame_218= gmegabuf( index2 + 3) ); per_frame_219= per_frame_220= vr = if( hit, vr + (cos(w1-ref_ang)*(v1-v2)-vr) , vr); per_frame_221= gmegabuf( index + 10) = asin( vr / gmegabuf(index+4) ); per_frame_222= per_frame_223= vr2 = if( hit, vr2 + (cos(w2-ref_ang)*(v2-v1)-vr2) , vr2); per_frame_224= gmegabuf( index2 + 10) = asin( vr2 / gmegabuf(index2+4) ); per_frame_225= per_frame_226= i=i+2; per_frame_227= ); per_frame_228= per_frame_229= // target nearest neighbor per_frame_230= per_frame_231= target = nearest1; per_frame_232= absolute = atan2(gmegabuf(target) - gmegabuf(index), gmegabuf(target+1) - gmegabuf(index+1)) + pi2; // direction towards target (+pi2), (-pi2 would be the opposite direction) per_frame_233= absolute = if(above(abs(absolute-gmegabuf(index+9)),abs(absolute-gmegabuf(index+9)-4*pi2)), absolute-4*pi2, absolute); // taking the shorter solution per_frame_234= per_frame_235= relative = gmegabuf(index+9) - absolute; // the turn increment per_frame_236=// relative = above(gmegabuf(index+9) - absolute,0)-0.5; // with constant angular velocity per_frame_237= per_frame_238= gmegabuf(index+9) = gmegabuf(index+9) - relative*dt*4; per_frame_239=// gmegabuf(index+9) = absolute; per_frame_240= per_frame_241= per_frame_242= per_frame_243= index = index+attributes; per_frame_244= ); warp_1=`shader_body warp_2=`{ warp_3=` float2 uv2 = uv; warp_4=` warp_5=` // PAINTERLY EFFECT - base high-frequency motion on image colors warp_6=` float mipbias = 0;//3 + 2*cos(_frame * 2); warp_7=` float2 delta2 = 0;//texsize.zw*float2(1,1); warp_8=` float3 blurry_color = tex2D( sampler_main, uv + delta2 ).xyz; warp_9=` uv2.xy += (blurry_color.xy-0.37) * 0.03; warp_10=` warp_11=` ret = tex2D( sampler_main, uv2 ).xyz - 0.005; warp_12=`float4 noise9 = tex3D(sampler_noisevol_hq, warp_13=` ((uv2.xyy*q27 warp_14=` )*texsize.xyy*texsize_noisevol_hq.zww warp_15=` ).xyz* warp_16=` float3(1,1,0)*0.05 + warp_17=` time*float3(0,0,1)*q29 warp_18=` ); warp_19=`if(ret.x> q21*q13 && ret.x<= q24*q11 )ret.y += (noise9).x*.5; warp_20=`if(ret.y> q22*q11 && ret.y<= q25*q12 )ret.z += (noise9).y*.5; warp_21=`if(ret.z> q23*q12 && ret.z<= q26*q13 )ret.x += (noise9).z*.5; warp_22=`} warp_23=` comp_1=`shader_body comp_2=`{ comp_3=` ret = tex2D(sampler_main,uv).xyz; comp_4=` float2 nuv = float2(uv.x-.01,uv.y-.01); comp_5=` float3 ret2 = GetBlur1(nuv); comp_6=` ret2 = lum(ret2); comp_7=`float4 noise9 = tex3D(sampler_noisevol_hq, comp_8=` ((nuv.xyy*q28 comp_9=` )*texsize.xyy*texsize_noisevol_hq.zww comp_10=` ).xyz* comp_11=` float3(1,1,0)*0.05 + comp_12=` time*float3(0,0,1)*q31 comp_13=` ); comp_14=`if(ret.x> q26*q13 && ret.x<= q23*q11 )ret.z -= (noise9).x*.5; comp_15=`if(ret.y> q25*q11 && ret.y<= q22*q12 )ret.x -= (noise9).y*.5; comp_16=`if(ret.z> q24*q12 && ret.z<= q21*q13 )ret.y -= (noise9).z*.5; comp_17=` if(ret.x < .1 && ret.y < .1 && ret.z < .1){ comp_18=` ret = .1; comp_19=` float2 uv_noise = uv_orig*texsize.xy*texsize_noise_lq.zw + rand_frame.xy; comp_20=` half4 noiseVal = tex2D(sampler_noise_lq, uv_noise*(.05+bass*.33)); comp_21=` ret += lum(noiseVal.xyz*2-1) *( 0.01+bass*.04)+mid_att*.02; comp_22=` ret += (.05*sin(uv.x*2+time*.444)+.05*cos(uv.y*2+time*.23345)); comp_23=` } comp_24=` comp_25=` ret = lerp(ret,abs(ret2-1),.5); comp_26=` ret = pow(ret,9)*80; comp_27=` comp_28=`//ret = GetPixel(uv); comp_29=`}