Original Post
As I see it there are basically two options when it comes to perturbing the surface of a plane as a representation of water: do it in a vertex shader or do it on the cpu. Now if I want interactive water, like a ship that bobs up and down with the waves or even something splashing and making new waves, my best bet is to generate the perturbation on the CPU (do it in the code of the program). If I had shader model 3.0+ available to me, I could use vertex-texture-fetch and do my interaction calculations upon a texture that I upload to the card. Does that sound right?