Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Box 40, 140, 320, 20, OFF
- DrawScreen
- Randomize 3
- Const noisew = 400
- Const noiseh = 300
- Dim noisepattern(noisew*3, noiseh) As Float
- Dim prenoise(noisew*3-1, noiseh-1) As Float
- Dim noise(noisew*3-1, noiseh-1, 1) As Float
- Function getinterpnoise#(i, j)
- ii# = Float(i/16.0)
- jj# = Float(j/16.0)
- aa# = noisepattern(RoundDown(ii#)+1, RoundDown(jj#))*(ii#-RoundDown(ii#))+noisepattern(RoundDown(ii#), RoundDown(jj#))*(1.0-(ii#-RoundDown(ii#)))
- bb# = noisepattern(RoundDown(ii#)+1, RoundDown(jj#)+1)*(ii#-RoundDown(ii#))+noisepattern(RoundDown(ii#), RoundDown(jj#)+1)*(1.0-(ii#-RoundDown(ii#)))
- Return bb#*(jj#-RoundDown(jj))+aa#*(1.0-(jj#-RoundDown(jj#)))
- EndFunction
- For i = 0 To noisew*3
- For j = 0 To noiseh
- noisepattern(i, j) = Rnd(-1.0, 1.0)
- Next j
- If i Mod 20 = 0 Then
- Box 40, 140, 320, 20, OFF
- Box 42, 142, 316*.333*i/Float(noisew)/3, 16
- DrawScreen
- EndIf
- Next i
- For i = 0 To noisew*3-1
- For j = 0 To noiseh-1
- prenoise(i, j) = getinterpnoise#(i, j)
- Next j
- If i Mod 20 = 0 Then
- Box 40, 140, 320, 20, OFF
- Box 42, 142, 316*.333*(1.0+i/Float(noisew)/3), 16
- DrawScreen
- EndIf
- Next i
- For i = 1 To noisew*3-2
- For j = 1 To noiseh-2
- noise(i, j, 0) = (prenoise(i,j+1)-prenoise(i,j-1))*2.0
- noise(i, j, 1) = (prenoise(i+1,j)-prenoise(i-1,j))*2.0
- Next j
- If i Mod 20 = 0 Then
- Box 40, 140, 320, 20, OFF
- Box 42, 142, 316*.333*(2.0+i/3/float(noisew)), 16
- DrawScreen
- EndIf
- Next i
- Dim parts(2999, 2) As Float
- For i = 0 To 2999
- parts(i,2)=-1.0
- Next i
- ptimer = Timer()
- spawn = 15'4
- Repeat
- fc+1
- spawn = spawn + UpKey() - DownKey()
- spawned = 0
- ra = 0
- ia#=Sin(fc*7.0/11*2)/2.0+0.5
- 'If wrapangle(fc*7.0/11)<180 Then
- ib#=1-ia
- oc=noisew'255
- ocy=Cos(fc)*16
- 'Else
- ' ib#=1-ia
- ' oc=512
- 'EndIf
- Lock
- For i = 0 To 2999
- If parts(i,2)>0 Then
- ra = ra + 1
- 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
- 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
- parts(i,2) = parts(i,2)-1.25
- col = Max(0, Min(255, parts(i,2)))
- 'PutPixel2 parts(i,0),parts(i,1),col
- 'PutPixel2 parts(i,0)+1,parts(i,1),col
- Color col, (col*.055)^2.0, 0
- Line parts(i,0),parts(i,1),parts(i,0)+2,parts(i,1)
- Line parts(i,0),parts(i,1)+1,parts(i,0)+2,parts(i,1)+1
- 'For x = parts(i,0)-2 to parts(i,0)+2
- ' Line x, parts(i,1)-2, x, parts(i,1)+2
- 'Next x
- Else
- If spawned<spawn Then
- parts(i,0) = Rnd(80.0+100+Sin(fc)*40, 320.0-100+Sin(fc)*40)
- parts(i,1) = Rnd(180.0, 200.0)
- parts(i,2) = 255.0
- spawned = spawned + 1
- EndIf
- EndIf
- Next i
- Unlock
- Color 255, 255, 255
- Text 10, 220, "fp"+"s is "+Str(FPS())
- Text 10, 240, "rendering "+Str(ra)+" particles"
- Text 10, 260, "spawning "+Str(spawn+1)+" per frame"
- DrawScreen
- Forever
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement