Advertisement
Guest User

Untitled

a guest
Jun 12th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     Box 40, 140, 320, 20, OFF
  2.     DrawScreen
  3.  
  4.     Randomize 3
  5.  
  6.     Const noisew = 400
  7.     Const noiseh = 300
  8.  
  9.     Dim noisepattern(noisew*3, noiseh) As Float
  10.     Dim prenoise(noisew*3-1, noiseh-1) As Float
  11.     Dim noise(noisew*3-1, noiseh-1, 1) As Float
  12.  
  13.     Function getinterpnoise#(i, j)
  14.         ii# = Float(i/16.0)
  15.         jj# = Float(j/16.0)
  16.         aa# = noisepattern(RoundDown(ii#)+1, RoundDown(jj#))*(ii#-RoundDown(ii#))+noisepattern(RoundDown(ii#), RoundDown(jj#))*(1.0-(ii#-RoundDown(ii#)))
  17.         bb# = noisepattern(RoundDown(ii#)+1, RoundDown(jj#)+1)*(ii#-RoundDown(ii#))+noisepattern(RoundDown(ii#), RoundDown(jj#)+1)*(1.0-(ii#-RoundDown(ii#)))
  18.         Return bb#*(jj#-RoundDown(jj))+aa#*(1.0-(jj#-RoundDown(jj#)))
  19.     EndFunction
  20.  
  21.     For i = 0 To noisew*3
  22.         For j = 0 To noiseh
  23.             noisepattern(i, j) = Rnd(-1.0, 1.0)
  24.         Next j
  25.         If i Mod 20 = 0 Then
  26.             Box 40, 140, 320, 20, OFF
  27.             Box 42, 142, 316*.333*i/Float(noisew)/3, 16
  28.             DrawScreen
  29.         EndIf
  30.     Next i
  31.  
  32.     For i = 0 To noisew*3-1
  33.         For j = 0 To noiseh-1
  34.             prenoise(i, j) = getinterpnoise#(i, j)
  35.         Next j
  36.         If i Mod 20 = 0 Then
  37.             Box 40, 140, 320, 20, OFF
  38.             Box 42, 142, 316*.333*(1.0+i/Float(noisew)/3), 16
  39.             DrawScreen
  40.         EndIf
  41.     Next i
  42.  
  43.     For i = 1 To noisew*3-2
  44.         For j = 1 To noiseh-2
  45.             noise(i, j, 0) = (prenoise(i,j+1)-prenoise(i,j-1))*2.0
  46.             noise(i, j, 1) = (prenoise(i+1,j)-prenoise(i-1,j))*2.0
  47.         Next j
  48.         If i Mod 20 = 0 Then
  49.             Box 40, 140, 320, 20, OFF
  50.             Box 42, 142, 316*.333*(2.0+i/3/float(noisew)), 16
  51.             DrawScreen
  52.         EndIf
  53.     Next i
  54.  
  55.     Dim parts(2999, 2) As Float
  56.     For i = 0 To 2999
  57.         parts(i,2)=-1.0
  58.     Next i
  59.     ptimer = Timer()
  60.  
  61.     spawn = 15'4
  62.  
  63.     Repeat
  64.         fc+1
  65.         spawn = spawn + UpKey() - DownKey()
  66.         spawned = 0
  67.         ra = 0
  68.         ia#=Sin(fc*7.0/11*2)/2.0+0.5
  69.         'If wrapangle(fc*7.0/11)<180 Then
  70.             ib#=1-ia
  71.             oc=noisew'255
  72.             ocy=Cos(fc)*16
  73.         'Else
  74.         '    ib#=1-ia
  75.         '    oc=512
  76.         'EndIf  
  77.         Lock
  78.             For i = 0 To 2999
  79.                 If parts(i,2)>0 Then
  80.                     ra = ra + 1
  81.                     parts(i,0) = parts(i,0)+noise(Int(parts(i, 0)), Int(parts(i, 1))-ocy, 0)*ia+noise(Int(parts(i, 0))+oc, Int(parts(i, 1))+ocy, 0)*ib
  82.                     parts(i,1) = parts(i,1)-noise(Int(parts(i, 0)), Int(parts(i, 1))-ocy, 1)*ia-noise(Int(parts(i, 0))+oc, Int(parts(i, 1))+ocy, 1)*ib-.3-parts(i,2)/512.0
  83.                     parts(i,2) = parts(i,2)-1.25
  84.                     col = Max(0, Min(255, parts(i,2)))
  85.                     'PutPixel2 parts(i,0),parts(i,1),col
  86.                     'PutPixel2 parts(i,0)+1,parts(i,1),col
  87.                     Color col, (col*.055)^2.0, 0
  88.                     Line parts(i,0),parts(i,1),parts(i,0)+2,parts(i,1)
  89.                     Line parts(i,0),parts(i,1)+1,parts(i,0)+2,parts(i,1)+1
  90.                     'For x = parts(i,0)-2 to parts(i,0)+2
  91.                     '    Line x, parts(i,1)-2, x, parts(i,1)+2
  92.                     'Next x
  93.                 Else
  94.                     If spawned<spawn Then
  95.                         parts(i,0) = Rnd(80.0+100+Sin(fc)*40, 320.0-100+Sin(fc)*40)
  96.                         parts(i,1) = Rnd(180.0, 200.0)
  97.                         parts(i,2) = 255.0
  98.                         spawned = spawned + 1
  99.                     EndIf
  100.                 EndIf
  101.             Next i
  102.         Unlock
  103.         Color 255, 255, 255
  104.         Text 10, 220, "fp"+"s is "+Str(FPS())
  105.         Text 10, 240, "rendering "+Str(ra)+" particles"
  106.         Text 10, 260, "spawning "+Str(spawn+1)+" per frame"
  107.         DrawScreen
  108.     Forever
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement