@Hatsu
Is this the sort of thing you had in mind? Just run the code, wait a few secs for the image to be prepared, then move the mouse around. You won't see the mouse - but you'll be able to guess where it is.
set display mode 800,600,32
sync on: sync rate 0: sync
autocam off
color backdrop 0
position camera 400,500,300
point camera 400,0,300
create bitmap 1,800,600
ink rgb(255,0,0),0
for y=30 to 570 step 9
line 40,y,760,y ` horizontal line for grid
next y
for x=40 to 760 step 9
line x,30,x,570 ` vertical line for grid
next x
ink rgb(0,255,0),0
for y=30 to 570 step 9
for x=40 to 760 step 9
circle x,y,1 ` dot on grid
next x
next y
get image 1,0,0,800,600
make matrix 1,800,600,80,60
prepare matrix texture 1,1,80,60
tc=1
for y=59 to 0 step -1
x=0
while x<=79
set matrix tile 1,x,y,tc
inc tc : inc x
endwhile
next y
ym=100 ` nominal mouse "height"
position matrix 1,0,0,0
set current bitmap 0
hide mouse
while inkey$()=""
text 20,20,str$(screen fps())
xm=mousex()/10: zm=mousey()/10
for x=0 to 80
x2=(x-xm)*(x-xm)
for z=0 to 60
y=ym*(1.0-exp(-((z-60.0+zm)*(z-60.0+zm)+x2)/10))
set matrix height 1,x,z,y
next z
next x
update matrix 1
sync
endwhile
end
This runs with an fps of about 66 on my machine.