Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- precalc = Timer()
- Smooth2D ON
- path$="media/map.bmp"
- img=LoadImage(path)
- imgw = ImageWidth(img)
- imgh = ImageHeight(img)
- DeleteImage img
- SCREEN imgw, imgh
- img=LoadImage(path)
- Dim bump(imgw-1,imgh-1,2) As Float
- Dim gs(imgw-1,imgh-1)
- Dim ldir(imgw*2, imgh*2, 2) As Float
- Dim cols(255)
- For i = 0 To imgw-1//lasketaan harmaasävy(=korkeus)taulu
- For j = 0 To imgh-1
- PickImageColor img, i, j
- rr = getRGB(1)
- gg = getRGB(2)
- bb = getRGB(3)
- gs(i,j)=(rr+gg+bb)/3.0
- Next j
- Next i
- For i=0 To imgw-1//lasketaan normaalitaulu
- For j=0 To imgh-1
- bump(i,j,0)=gs(i,j)-gs(i+1,j)//ristitulo
- bump(i,j,1)=gs(i,j)-gs(i,j+1)
- bump(i,j,2)=1.0
- l#=Sqrt(bump(i,j,0)^2+bump(i,j,1)^2+bump(i,j,2)^2)//normalisointi
- bump(i,j,0)=bump(i,j,0)/l
- bump(i,j,1)=bump(i,j,1)/l
- bump(i,j,2)=bump(i,j,2)/l
- Next j
- Next i
- For i = 0 To 255
- k# = i/255.0
- cols(i) = int((k*220) shl 16 + (k*230) shl 8 + k*255)
- Next i
- For i = 0 To imgw*2//lasketaan valotaulu
- For j = 0 To imgh*2
- mx# = imgw-i
- my# = imgh-j
- mz# = 8.0
- ml# = Sqrt(mx*mx+my*my+mz*mz)*(4+sqrt(mx^2+my^2+mz^2))
- ldir(i, j, 0)=mx/ml
- ldir(i, j, 1)=my/ml
- ldir(i, j, 2)=mz/ml
- Next j
- Next i
- precalc = Timer() - precalc
- Repeat
- mmx = MouseX()//imgw/2.0+(imgw/4.0)*Sin(Timer()*.03)
- mmy = MouseY()//imgh/2.0+(imgh/4.0)*Cos(Timer()*.02)
- mox = Max(0, Min(imgw, imgw-mmx))
- moy = Max(0, Min(imgh, imgh-mmy))
- frame = (frame + 1) Mod 4
- xframe = frame Mod 2
- yframe = (frame/2) Mod 2
- Lock
- For i = xframe To imgw-2 Step 2
- For j = yframe Mod 2 To imgh-2 Step 2
- imox = i+mox
- jmoy = j+moy
- 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))))
- PutPixel2 i, j, cols(c)
- Next j
- Next i
- Unlock
- SetWindow ""+FPS() + " FPS, "+precalc+"ms precalc"
- DrawScreen OFF
- Forever
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement