OK, I've wrote a small example program about my idea for a water-effect.
Here a small screenshot.. it doesn't look very good because the water-textures I created aren't seamless, but I didn't know how to fix it wihtout too much work.

The technique is quite simple, I use two plains, with scaled water-textures. One plain is a big higher than the other one to avoid graphical errors.. Then the plains are moved (I think you could also scroll the texture) always in the mainloop in different directions. The top plain is transparent, so that you can see both. So you can create a more or less realistic water-effect this way...
Here the code I used:
+ Code Snippetrem MrKohlenstoff's no-shader-water-effect
set display mode 1024,768,32
sync on : sync rate 120
randomize timer()
rem Creating the matrix
make matrix 1, 1000,1000, 50,50
randomize matrix 1, 15
update matrix 1
rem Create simple matrix-sand-texture
lock pixels
for x = 1 to 256
for y = 1 to 256
r = 200+rnd(55)
g = 150+rnd(r-150)
b = rnd(g*0.15)
dot x,y,rgb(r,g,b)
next y
next x
unlock pixels
get image 3, 1,1,256,256, 1
prepare matrix texture 1,3, 1,1
rem Create Water-Texture 1
for i = 1 to 2
lock pixels
rem top row
r = rnd(40)
g = 40+rnd(50)
b = 150+rnd(105)
dot 1,1, rgb(r,g,b)
for x = 2 to 256
r2 = r : g2 = g : b2 = b
r = r2+ 5-rnd(10) : if r > 50 : r = 50 : endif : if r < 0 : r = 0 : endif
g = g2+ 8-rnd(16) : if g > 100 : g = 100 : endif : if g < 30 : g = 30 : endif
b = b2+10-rnd(20) : if b > 255 : b = 255 : endif : if b < 140 : b = 140 : endif
dot x,1, rgb(r,g,b)
next x
rem Left row
col = point(1,1) : r = rgbr(col) : g = rgbg(col) : b = rgbb(col)
for y = 2 to 256
r2 = r : g2 = g : b2 = b
r = r2+ 5-rnd(10) : if r > 50 : r = 50 : endif : if r < 0 : r = 0 : endif
g = g2+ 8-rnd(16) : if g > 100 : g = 100 : endif : if g < 30 : g = 30 : endif
b = b2+10-rnd(20) : if b > 255 : b = 255 : endif : if b < 140 : b = 140 : endif
dot 1,y,rgb(r,g,b)
next x
rem Rest of image
for x = 2 to 257
for y = 2 to 257
c1 = point(x-1,y-1) : c2 = point(x-1,y) : c3 = point(x,y-1)
r = (rgbr(c1)+rgbr(c2)+rgbr(c3))/3+ 5-rnd(10) : if r > 50 : r = 50 : endif : if r < 0 : r = 0 : endif
g = (rgbg(c1)+rgbg(c2)+rgbg(c3))/3+ 8-rnd(16) : if g > 100 : g = 100 : endif : if g < 30 : g = 30 : endif
b = (rgbb(c1)+rgbb(c2)+rgbb(c3))/3+10-rnd(20) : if b > 255 : b = 255 : endif : if b < 140 : b = 140 : endif
col = rgb(r,g,b)
dot x,y,col
dot 513-x, y, col
dot x, 513-y, col
dot 513-x,513-y,col
next y
next x
unlock pixels
get image i, 2,2,256,256
next i
rem Create plains for water-texture
for i = 1 to 2
make object plain i, 1200,1200
texture object i, i
scale object texture i, (20*i), (20*i)
position object i, 0, 8+i, 0
xrotate object i, -90
fix object pivot i
next i
ghost object on 2, 2
rem Variables
PosWater1 as float
PosWater2 as float
rem Camera
position camera 0,0,0
rem Main-Loop
do
rem camera control
control camera using arrowkeys 0,1,1
cx# = camera position x()
cz# = camera position z()
cy# = get ground height(1,cx#,cz#)+25
position camera cx#,cy#,cz#
rem move Water
position matrix 1, -500, 0, -500
PosWater1 = ((PosWater1 + 0.1 ) mod 60)
PosWater2 = ((PosWater2 + 0.15) mod 30)
position object 1, PosWater1, 9, 0
position object 2, 0, 10, PosWater2
sync
loop
****
Edit:
I've found Valles Grass effect.
He used this example-code:
+ Code Snippetset display mode 1024,768,32
sync on : sync rate 60 : sync
size = 100
cls : lock pixels
For t=1 to size*20 : dot rnd(size-1),rnd(size-1),rgb(0,100+rnd(155),rnd(10)) : next t
unlock pixels:get image 1,0,0,size-1,size-1,1
For t = 0 to 19
make object plain t+1,size,size
position object t+1,0,t,t*.5
xrotate object t+1,90
texture object t+1,1
set object transparency t+1,3
next t
do
position camera cos(a)*size*1.5,size*2,sin(a)*size*1.5 : inc a
point camera 0,0,0
sync:loop
The result looks like this:
And the thread can be found here:
http://forum.thegamecreators.com/?m=forum_view&t=97923&b=11