Hey, I'm having some problems with one of the Evolved water shaders, it works fine most of the time, but there are times where it just distorts horribly, or when objects in front of it bleed into the texture.
Image attached of one of the problems
I'm kinda new here, so there may be something I've just overlooked
Here's all the code minus some random object placements
global maxx as integer
global maxy as integer
load dll "user32.dll",1
maxx= call dll(1,"GetSystemMetrics",0)
maxy= call dll(1,"GetSystemMetrics",1)
delete dll 1
set display mode maxx,maxy,32,1
set camera fov 85
backdrop off
maximize window
autocam off
MakeWater(30,500,500,1024,15)
do
`Update Water
UpDateWater()
sync
loop
//--------------
` Create Water
//--------------
function MakeWater(Obj,Shader,Img,ImgSize,Height#)
`Globals
global WaterObj=Obj
global WaterHeight#=Height#
global Fx=Shader
`Setup Cameras
Sw#=screen width():Sh#=screen height()
for c=1 to 2
make camera c
set camera range c,1,15000
set camera aspect c,Sw#/Sh#
backdrop off c
set camera to image c,Img+(c-1),ImgSize,ImgSize
set camera fov c,85
next c
`Make Water plain
load image "Media/Waves.dds",Img+2
load image "Media/Fresnel.bmp",Img+3
load image "Media/WaterMask.bmp",Img+4
make object plain WaterObj,1000,1000
texture object WaterObj,0,Img
texture object WaterObj,1,Img+1
texture object WaterObj,2,Img+2
texture object WaterObj,3,Img+3
texture object WaterObj,4,Img+4
xrotate object WaterObj,270
load effect "FX/Water.fx",Fx,0
set object effect WaterObj,Fx
set object transparency WaterObj,1
endfunction
//--------------
` Update Water
//--------------
function UpDateWater()
`UpDate Water plain
position object WaterObj,object position x(WaterObj),WaterHeight#,object position z(WaterObj)
Hide object WaterObj
`Upade Refract/Reflect cameras
set effect technique Fx,"Refract"
UpDateRefraction()
if camera position y()>WaterHeight#
set effect technique Fx,"ReflectRefract"
UpDateReflection()
else
fog on:fog color rgb(55,65,75)
fog distance 300
endif
`Show Water
show object WaterObj
sync mask 2^0
endfunction
//--------------
` Refraction Update
//--------------
function UpDateRefraction()
position camera 1,camera position x(),camera position y(),camera position z()
rotate camera 1,camera angle x(),camera angle y(),camera angle z()
if camera position y()>WaterHeight#
set camera clip 1,1,0,WaterHeight#+30,0,0,-1,0
fog on:fog color rgb(55,65,75)
fog distance 250+(camera position y()-WaterHeight#)*10
else
set camera clip 1,1,0,WaterHeight#-30,0,0,1,0
fog off
endif
set camera clip 2,0,0,0,0,0,0,0
sync mask 2^1
fastsync
fog off
endfunction
//--------------
` Reflection Update
//--------------
function UpDateReflection()
position camera 2,camera position x(),WaterHeight#-(camera position y()-WaterHeight#),camera position z()
rotate camera 2,-camera angle x(),camera angle y(),camera angle z()
set camera clip 1,0,0,0,0,0,0,0
set camera clip 2,1,0,WaterHeight#-15,0,0,1,0
sync mask 2^2
fastsync
endfunction
What am I doing wrong?[img]null[/img]