Advertisement
Guest User

Untitled

a guest
Jun 11th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. precalc = Timer()
  2. Smooth2D ON
  3. path$="media/map.bmp"
  4. img=LoadImage(path)
  5. imgw = ImageWidth(img)
  6. imgh = ImageHeight(img)
  7. DeleteImage img
  8. SCREEN imgw, imgh
  9. img=LoadImage(path)
  10. Dim bump(imgw-1,imgh-1,2) As Float
  11. Dim gs(imgw-1,imgh-1)
  12. Dim ldir(imgw*2, imgh*2, 2) As Float
  13. Dim cols(255)
  14.  
  15. For i = 0 To imgw-1//lasketaan harmaasävy(=korkeus)taulu
  16.     For j = 0 To imgh-1
  17.         PickImageColor img, i, j
  18.         rr = getRGB(1)
  19.         gg = getRGB(2)
  20.         bb = getRGB(3)
  21.         gs(i,j)=(rr+gg+bb)/3.0
  22.     Next j
  23. Next i
  24.  
  25. For i=0 To imgw-1//lasketaan normaalitaulu
  26.     For j=0 To imgh-1
  27.         bump(i,j,0)=gs(i,j)-gs(i+1,j)//ristitulo
  28.         bump(i,j,1)=gs(i,j)-gs(i,j+1)
  29.         bump(i,j,2)=1.0
  30.         l#=Sqrt(bump(i,j,0)^2+bump(i,j,1)^2+bump(i,j,2)^2)//normalisointi
  31.         bump(i,j,0)=bump(i,j,0)/l
  32.         bump(i,j,1)=bump(i,j,1)/l
  33.         bump(i,j,2)=bump(i,j,2)/l
  34.     Next j
  35. Next i
  36.  
  37. For i = 0 To 255
  38.     k# = i/255.0
  39.     cols(i) = int((k*220) shl 16 + (k*230) shl 8 + k*255)
  40. Next i
  41.  
  42. For i = 0 To imgw*2//lasketaan valotaulu
  43.     For j = 0 To imgh*2
  44.         mx# = imgw-i
  45.         my# = imgh-j
  46.         mz# = 8.0
  47.         ml# = Sqrt(mx*mx+my*my+mz*mz)*(4+sqrt(mx^2+my^2+mz^2))
  48.         ldir(i, j, 0)=mx/ml
  49.         ldir(i, j, 1)=my/ml
  50.         ldir(i, j, 2)=mz/ml
  51.     Next j
  52. Next i
  53.  
  54. precalc = Timer() - precalc
  55.  
  56. Repeat
  57.     mmx = MouseX()//imgw/2.0+(imgw/4.0)*Sin(Timer()*.03)
  58.     mmy = MouseY()//imgh/2.0+(imgh/4.0)*Cos(Timer()*.02)
  59.     mox = Max(0, Min(imgw, imgw-mmx))
  60.     moy = Max(0, Min(imgh, imgh-mmy))
  61.     frame = (frame + 1) Mod 4
  62.     xframe = frame Mod 2
  63.     yframe = (frame/2) Mod 2
  64.     Lock
  65.         For i = xframe To imgw-2 Step 2
  66.             For j = yframe Mod 2 To imgh-2 Step 2
  67.                 imox = i+mox
  68.                 jmoy = j+moy
  69.                 c = min(255, Max(0, 20.0+4000*(ldir(imox, jmoy,0)*bump(i,j,0)+ldir(imox, jmoy,1)*bump(i,j,1)+ldir(imox, jmoy,2)*bump(i,j,2))))
  70.                 PutPixel2 i, j, cols(c)
  71.             Next j
  72.         Next i
  73.     Unlock
  74.     SetWindow ""+FPS() + " FPS, "+precalc+"ms precalc"
  75.     DrawScreen OFF
  76. Forever
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement