// vertex building verts->st[0][0] = DotProduct (vec, surf->texinfo->vecs[0]) * 0.015625f; verts->st[0][1] = DotProduct (vec, surf->texinfo->vecs[1]) * 0.015625f; verts->st[1][0] = DotProduct (vec, surf->texinfo->vecs[1]) * D3DX_PI / 64.0f; verts->st[1][1] = DotProduct (vec, surf->texinfo->vecs[0]) * D3DX_PI / 64.0f; // shader vertex struct struct WATERVERT { float4 Position: POSITION0; float2 TexCoord0: TEXCOORD0; float2 TexCoord1: TEXCOORD1; }; // vertex shader WATERVERT WarpVS (WATERVERT vs_in) { WATERVERT vs_out; vs_out.Position = mul (LocalMatrix, vs_in.Position); vs_out.TexCoord0 = vs_in.TexCoord0; vs_out.TexCoord1 = vs_in.TexCoord1 + warptime; // this is just the value of cl.time return vs_out; } // Pixel shader float4 WarpPS (WATERVERT ps_in) : COLOR0 { return tex2D (warpSampler, ps_in.TexCoord0 + sin (ps_in.TexCoord1) * 0.125f) * float4 (1, 1, 1, wateralpha); }